No ecossistema do ServiceNow, os Client Scripts desempenham um papel essencial na melhoria da experiência do usuário em formulários e catálogos. Eles permitem ações em tempo real no navegador, como validações, preenchimento automático de campos, exibição condicional de elementos, entre outros comportamentos dinâmicos.
Contudo, quando mal utilizados, Client Scripts podem se tornar uma das principais causas de lentidão, erros de carregamento ou comportamento inconsistente em formulários, principalmente quando há sobreposição de lógicas ou execuções desnecessárias. Neste artigo, exploramos boas práticas e estratégias para criar Client Scripts eficientes, sustentáveis e alinhados às melhores diretrizes da plataforma.
Entendendo os Tipos de Client Scripts
Antes de otimizar, é importante conhecer os quatro tipos de Client Script:
Tipo | Executa quando? |
---|---|
onLoad | Ao carregar o formulário |
onChange | Quando um campo específico muda |
onSubmit | Antes do envio do formulário |
onCellEdit | Em listas editáveis (List v3 ou Inline Edit) |
Cada um desses tipos deve ser utilizado com critérios bem definidos para evitar execuções desnecessárias.
1. Evite Execuções Desnecessárias
Sempre que possível, envolva sua lógica em verificações condicionais:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue == oldValue) {
return;
}
// lógica principal
}
Essa verificação evita que a lógica seja executada durante o carregamento ou quando não houve mudança real no valor.
2. Use g_form
com Moderação
Evite excesso de chamadas como g_form.setValue()
, g_form.setVisible()
ou g_form.setReadOnly()
em sequências longas. Cada chamada aciona um ciclo de renderização. Prefira agrupar ações ou condicionar a execução apenas quando necessário.
Ruim:
g_form.setValue('field_a', 'abc');
g_form.setValue('field_b', 'xyz');
g_form.setValue('field_c', '123');
Melhor:
if (someCondition) {
g_form.setValue('field_a', 'abc');
g_form.setValue('field_b', 'xyz');
g_form.setValue('field_c', '123');
}
3. Evite Múltiplos Scripts para o Mesmo Campo
Manter diversos scripts (ex: dois onChange
para o mesmo campo) dificulta a manutenção e pode causar conflito entre lógicas. Sempre que possível, centralize o comportamento em um único script por campo e tipo.
4. Evite Chamada Inadequada a GlideAjax
Embora o GlideAjax
seja uma ferramenta poderosa para comunicação com o servidor, seu uso em onLoad
ou onChange
sem critérios pode causar atrasos perceptíveis ao usuário.
Boas práticas com GlideAjax:
- Use callbacks assíncronos sempre.
- Nunca encadeie múltiplas chamadas sem necessidade.
- Cacheie valores que não mudam com frequência.
var ga = new GlideAjax('MyScriptInclude');
ga.addParam('sysparm_name', 'getData');
ga.getXMLAnswer(function(response) {
var result = response;
g_form.setValue('result_field', result);
});
5. Prefira UI Policies quando possível
Muitas lógicas com g_form.setVisible()
, g_form.setMandatory()
, ou g_form.setReadOnly()
podem ser substituídas por UI Policies, que são mais performáticas, mais fáceis de manter e seguem uma abordagem declarativa.
6. Evite console.log em Produção
Embora úteis para depuração, comandos como console.log()
ou alert()
devem ser evitados em ambientes produtivos, pois:
- Podem vazar informações sensíveis no console.
- Poluem os logs de desenvolvedores e suporte.
- Podem afetar a usabilidade em situações críticas.
7. Nomeie e Documente os Scripts
Adote convenções claras para nomear seus scripts, indicando o tipo de execução e o campo afetado. Exemplo:
CS_onChange_campo_departamento_verifica_visibilidade
CS_onLoad_formulario_verifica_permissoes
E sempre utilize a descrição do script para explicar o objetivo, facilitando revisões futuras.
Conclusão
Criar Client Scripts eficientes é mais do que apenas escrever código que “funciona”. Trata-se de aplicar boas práticas para garantir que o comportamento do formulário seja fluido, previsível e sustentável no longo prazo.
Ao seguir essas orientações, você reduz a chance de conflitos, melhora o tempo de carregamento dos formulários e contribui para uma melhor experiência do usuário — além de facilitar a manutenção e evolução das aplicações ServiceNow.
Dica final: sempre teste seus scripts em diferentes navegadores, perfis de usuário e condições de rede. O comportamento pode variar mais do que se imagina.
No responses yet