Módulos JavaScript e bibliotecas de terceiros

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 3 min. de leitura
  • Otimize sua base de código usando módulos JavaScript para agrupar o código relacionado ou adicionar bibliotecas de terceiros e reutilizar o código nas aplicações.

    Visão geral

    Um módulo é um arquivo JavaScript que contém o código relacionado que é compartilhado e reutilizado em aplicações em uma instância. Você pode adicionar módulos JavaScript e bibliotecas de terceiros em aplicações com escopo que são criadas com o ServiceNow IDE e aplicações que são criadas ou convertidas usando o ServiceNow SDK. Você também pode usar o TypeScript para criar módulos e compilá-los em JavaScript antes de criar sua aplicação. Em uma instância, os módulos JavaScript são armazenados na tabela Módulo EcmaScript [sys_module].

    Em um módulo, você identifica o código para reutilização com instruções de exportação. Em seguida, use as instruções importar ou exigir para reutilizar o código em outros lugares em suas aplicações. As aplicações devem declarar dependências em bibliotecas do Node Package Manager (npm) de terceiros para usar o código do módulo. Para obter informações gerais sobre a sintaxe usada para criar módulos JavaScript, consulte a página de módulos JavaScript no site do MDN Web Docs.

    Nota:
    Para usar APIs globais do Glide em módulos, elas devem ser importadas do pacote @servicenow/glide. Por exemplo: import { gs } from '@servicenow/glide'.

    Limitações

    • Aplicações globais e personalizações de aplicação não são compatíveis.
    • Os módulos podem ser usados somente no escopo da aplicação ao qual foram adicionados. Eles não podem ser usados em escopos da aplicação.
    • Um subconjunto de recursos do ECMAScript é compatível com módulos de acordo com o Suporte ao recurso do mecanismo JavaScript.
    • As APIs Node.js não são compatíveis com módulos.
    • Variáveis globais relacionadas a APIs da Web não são compatíveis.
    • Bibliotecas de terceiros adicionadas à sua aplicação não podem acessar ou chamar ServiceNow APIs.
    • Módulos CommonJS de bibliotecas de terceiros não são compatíveis, a menos que definam exportações. As importações de subcaminho não são compatíveis com módulos CommonJS. Os módulos ECMAScript de bibliotecas de terceiros são compatíveis.
    • As instruções deimportação e exportação só são compatíveis com módulos. Para importar o código do módulo em scripts, como regras de negócio ou inclusões de script, use instruções exigem.
    • Os módulos JavaScript [sys_module] podem ser modificados somente no ServiceNow IDE ou no Visual Studio Code com o ServiceNow SDK.
    Importante:
    Você não pode usar bibliotecas de terceiros que dependem de funcionalidades sem suporte, como APIs sem suporte ou recursos do ECMAScript.

    Exportando módulos

    Em um módulo, identifique o código para reutilização com instruções de exportação. Você pode usar exportações nomeadas ou exportações padrão. As exportações nomeadas podem ser para variáveis, constantes, funções ou classes, enquanto as exportações padrão podem ser somente para funções ou classes. O exemplo a seguir é uma maneira de adicionar uma exportação nomeada para vários recursos (uma função e uma variável) em um módulo:
    export { myFunction, myVariable };
    

    Importando módulos

    Para importar o código do módulo que você deseja reutilizar, use instruções de importação em outros módulos ou exija instruções em scripts do lado do servidor.

    O exemplo a seguir é uma maneira de importar um recurso exportado em um módulo:
    import { feature } from "path/to/module";
    
    O exemplo a seguir é uma maneira de importar um recurso exportado em um script:
    const { feature } = require("path/to/module");
    
    Para usar abreviação para importar o código do módulo, você pode usar subcaminhos no campo de importações do arquivo package.json da aplicação. Por exemplo:
    {
    	"name": "math",
    	"version": "1.0.0",
    	"exports": {
    		"./functions/*.js": "./src/functions/*.js",
    		"./functions/private-functions/*": null
    	},
    	"imports": {
    		"#calc": "calculus",
    		"#derivative": "calculus/derivative"
    	},
    	"dependencies": {
    		"calculus": "1.0.0"
    	}
    }
    Com base nesse exemplo, em vez de escrever o caminho relativo para derivativo.js sempre que quiser importá-lo na aplicação matemática, você pode usar a abreviação #derivative. Os subcaminhos também podem ser usados no campo de importações para usar abreviações para dependências, como #cal.
    import { derivative } from '#derivative';
    import * as calculus from '#calc';

    Como adicionar dependências

    As aplicações devem declarar dependências em bibliotecas de terceiros para usar o código do módulo. No arquivo package.json de uma aplicação, inclua o nome do pacote e a versão para todas as dependências. Por exemplo, para usar módulos da biblioteca "math" na aplicação "test", adicione o pacote "math" como uma dependência:
    {
    	"name": "test",
    	"version": "1.0.0",
    	"dependencies": {
    		"math": "1.0.0"
    	}
    }