Como Criar Client Scripts Eficientes sem Comprometer Performance

Person coding on a laptop during a video conference, showcasing remote work.

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:

TipoExecuta quando?
onLoadAo carregar o formulário
onChangeQuando um campo específico muda
onSubmitAntes do envio do formulário
onCellEditEm 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

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *