Class: Module

@nginstack/engine/lib/module/Module~ Module


new Module(id, parent)

Módulo JavaScript seguindo convenção do CommonJS.

Um módulo JavaScript é um arquivo com extensão js, ijs ou json que retorna uma função, classe ou uma estrutura por meio da propriedade module.exports.

O caminho do módulo deverá indicar em qual sistema de arquivos ele se encontra. Para isso, o caminho deverá ser prefixado com "ufs:" ou "vfs:". É recomendado que o caminho do módulo não indique a sua extensão. Módulos da VFS também podem ser carregados informando a chave do arquivo em vez do caminho.

Módulos devem ser carregados por meio da função Module.global_ require. Ela retornará o valor da propriedade module.exports do módulo carregado. Módulos são singletons, portanto eles são executados uma única vez durante o tempo de vida da sessão.

Importante: ver #require para as restrições de uso dessa API.

Parameters:
Name Type Description
id
parent
Author:
  • Código inspirado e adaptado do module.js do Node.JS.
Example
var DataSet = require('@nginstack/engine/lib/dataset/DataSet');

Members


<static, constant> ENGINE_MODULES_PREFIX :string

Prefixo do caminho onde devem ser carregados os módulos declarados em pacotes na UFS.

Type:
  • string

<static> extensionIds_ :Array.<string>

Array com os nomes das extensões suportadas que podem ser utilizadas como chave da propriedade Module.extensions.

Type:
  • Array.<string>

<static> extensions :Object.<function()>

Funções responsáveis por tratar a carga com base no tipo do arquivo.

Type:
  • Object.<function()>

<static> fileSystems :Object.<string, ModuleFileSystem>

Sistemas de arquivos suportados pelo gerenciador de módulos. É um mapa com o identificador do sistema de arquivos e a implementação da interface ModuleFileSystem.

Type:
  • Object.<string, ModuleFileSystem>

<static> searchPackagesInRootDirectory

Indica se deve tentar carregar módulos instalados por meio de pacotes na raiz da UFS além do diretório engine_modules. Este modo é necessário nos clientes que utilizam um Engine com versão inferior a 17.8.0.1 em uma base que utiliza pacotes contidos em arquivos JAZ.

Methods


<static> addToCache(path, module)

Adiciona um módulo para o cache de módulos carregados.

Parameters:
Name Type Description
path string

Caminho do módulo a ser adicionado no cache.

module Object

Módulo a ser adicionado no cache.


<static> clearCache(opt_fileName)

Limpa o cache dos módulos já carregados. Caso o parâmetro opcional seja indicado, será descartado apenas o modulo referente ao caminho indicado.

Parameters:
Name Type Description
opt_fileName

Nome do arquivo que deverá ser descartado do cache de módulos.


<static> removeFromCache(path)

Remove um módulo do cache de módulos carregados.

Parameters:
Name Type Description
path string

Caminho do módulo a ser removido do cache.


<static> runInThisContext_()

Executa o conteúdo do arquivo expondo as variáveis auxiliares "require" e "module".


<static> useCurrentContextAsMainModule()

Emula como se o contexto JavaScript atual tivesse sido carregado como o módulo principal da aplicação, injetando as variáveis globais "require" e "module" para que outros módulos possam ser carregados.


load(path)

Dado um nome de arquivo, carrega ele utilizando o tratador configurado para a extensão do arquivo.

Parameters:
Name Type Description
path string

Caminho do arquivo.


require(path)

Carrega o módulo indicado no contexto deste módulo.

Importante: o uso de módulos seguindo a notação CommonJS é uma funcionalidade utilizada internamente pelo sistema que não deve ser utilizada em produtos ou customizações de terceiros. Em uma versão futura do Engine, serão adotados os módulos seguindo a convenção ES6 e essa API será removida. A revisão dos módulos CommonJS para adotar a sintaxe do ES6 será manual, portanto o uso dessa API exigirá um esforço de revisão significativo em versões futuras do Engine. Via de regra, customizações que utilizem as APIs do sistema devem continuar fazendo uso da função __includeOnce até que a API final de módulos ES6 seja liberada.

Parameters:
Name Type Description
path string | number

Caminho do módulo a ser carregado. Quando utilizado módulos na Virtual File System, poderá ser informada a chave do arquivo, além do caminho.

Returns:

Retorna valor da propriedade module.exports.

Type
*