Módulos JavaScript e bibliotecas de terceiros

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

    Visão geral

    Um módulo é um arquivo JavaScript que contém código relacionado que é exportado e reutilizado em aplicações em uma instância. Em aplicações com escopo que são criadas ou convertidas usando o ServiceNow SDK, você pode adicionar módulos JavaScript e bibliotecas de terceiros de Visual Studio Code. Você também pode usar o TypeScript para criar módulos e compilá-los para JavaScript antes de criar sua aplicação com o SDK.

    Em um módulo, você identifica o código para reutilização com declarações de exportação. Para que módulos externos e scripts acessem o código do módulo, você adiciona pontos de entrada no campo de exportações no arquivo package.json da aplicação. Em seguida, use instruções import ou exigem para reutilizar o código em outro lugar em suas aplicações. As aplicações devem declarar dependências em outras aplicações ou em bibliotecas do Node Package Manager (npm) de terceiros para usar o código do módulo.

    Depois de adicionar módulos e implantar a aplicação local em uma instância, os módulos são armazenados na tabela Módulo EcmaScript [sys_module]. Se um módulo for usado em várias aplicações, ele terá vários registros na tabela Módulo EcmaScript [sys_module].

    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. Para usar o TypeScript em sua aplicação, consulte Usando TypeScript com o SDK ServiceNow.

    Limitações

    • Aplicações globais e personalizações de aplicação não são compatíveis.
    • Um subconjunto de recursos do ECMAScript é compatível com os módulos de acordo com o Suporte ao recurso do mecanismo JavaScript.
    • As APIs do Node.js não são compatíveis com os módulos.
    • Variáveis globais relacionadas a APIs da Web não são compatíveis.
    • as instruções deimportação e exportação não são compatíveis com scripts, como regras de negócios ou inclusões de script. Eles só são compatíveis com módulos.​
    • 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 os módulos CommonJS. Módulos ECMAScript de bibliotecas de terceiros são compatíveis.
    • As APIs globais do Glide não estão disponíveis em módulos por padrão. Eles podem ser importados do pacote @servicenow/glide.
    • Os módulos JavaScript [sys_module] não podem ser modificados na plataforma. Eles devem ser modificados em Visual Studio Code e implantados na instância com o 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 declaraçõ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 };
    

    Para que scripts e módulos em diferentes aplicações acessem o código de um módulo, defina um ponto de entrada para a aplicação com o campo de exportações no arquivo package.json. Os exemplos a seguir são para uma aplicação chamada "math" para funções matemáticas.

    Tabela 1. Exportando o código do módulo de um pacote
    Método Exemplo

    Forneça um valor de cadeia de caracteres que aponte para um módulo.

    {
    	"name": "math",
    	"version": "1.0.0",
    	"exports": "./src/main.js"
    }

    Use um objeto em que "." é o subcaminho do módulo main.js.

    {
    	"name": "math",
    	"version": "1.0.0",
    	"exports": {
    		".": "./src/main.js"
    	}
    }

    Exporte somente os módulos add.js e subtract.js como exportações de subcaminho.

    {
    	"name": "math",
    	"version": "1.0.0",
    	"exports": {
    		"./add": "./src/functions/add.js",
    		"./sub": "./src/functions/subtract.js"
    	}
    }

    Exporte todos os arquivos, incluindo subdiretórios, de um caminho especificado.

    {
    	"name": "math",
    	"version": "1.0.0",
    	"exports": {
    		"./functions/*": "./src/functions/*"
    	}
    }

    Exporte somente arquivos de um determinado tipo de arquivo de um caminho especificado.

    {
    	"name": "math",
    	"version": "1.0.0",
    	"exports": {
    		"./functions/*.js": "./src/functions/*.js"
    	}
    }

    Exporte arquivos de um determinado tipo de arquivo, mas mantenha uma pasta em um diretório privado.

    {
    	"name": "math",
    	"version": "1.0.0",
    	"exports": {
    		"./functions/*.js": "./src/functions/*.js",
    		"./functions/private-functions/*": null
    	}
    }

    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 declaraçõ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 a 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 gravar 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 #calcul.
    import { derivative } from '#derivative';
    import * as calculus from '#calc';

    Adicionando dependências

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