A especificação JavaScript (ECMAScript) não define um conjunto completo de bibliotecas padrão que podem ser aplicadas à maioria dos programas. O CommonJS fornece um conjunto de especificações da biblioteca padrão JavaScript. Nó implementa a especificação Commonjs.
Módulo básico
No nó, módulos e arquivos correspondem um por um. Definimos um módulo:
A cópia do código é a seguinte:
// circ.js
var pi = math.pi;
// Área de função de exportação
exports.area = function (r) {
retornar pi * r * r;
}
// Circuito de função de exportação
exports.circumference = function (r) {
retornar 2 * pi * r;
};
Aqui, as funções que precisam ser exportadas são adicionadas ao objeto de exportação. As variáveis locais do módulo não são acessíveis externamente (por exemplo, a variável PI no exemplo acima). A chamada é necessária para carregar o módulo Circle.js:
A cópia do código é a seguinte:
var círculo = requer ('./ circ.js');
console.log ('A área de um círculo de raio 4 é'
+ círculo.area (4));
Como mencionado, no módulo, existe um objeto de módulo que representa o próprio módulo, e as exportações são o atributo do módulo.
Carregamento de módulos
O NODE BUBLERIRÁ MODULOS LOLHADOS PARA AVISAR A Sobrecarga de Recarregar:
A cópia do código é a seguinte:
// test.js
console.log ("estou aqui");
Carregando módulo test.js várias vezes
A cópia do código é a seguinte:
// Somente saída "estou aqui" uma vez
requer ('./ teste');
requer ('./ teste');
Quando o arquivo de carregamento não tem sufixo, o nó tenta adicionar o sufixo e carregar:
1..js (arquivo de origem JavaScript)
2..Node (módulo de extensão C/C ++)
3..json (arquivo json)
Existem vários tipos principais de módulos:
1. Módulo Core. Os módulos principais foram compilados no nó e podemos encontrar esses módulos principais no diretório LIB em seu código -fonte. Módulos comuns do núcleo: rede, http, módulo FS, etc.
2. Módulo de arquivo. O módulo de arquivo é carregado através de um caminho relativo ou absoluto, como o círculo.js que vimos acima
3. Personalize o módulo. O módulo personalizado está localizado no diretório Node_modules. Os vários módulos que instalamos através do NPM são colocados no diretório Node_modules.
Os módulos principais são sempre carregados primeiro. Se houver um módulo personalizado HTTP, o módulo principal HTTP ainda será carregado em vez do módulo personalizado HTTP ao carregar. Ao carregar um módulo personalizado, procure primeiro o diretório Node_modules no diretório atual e procure o diretório Node_modules no diretório pai e assim por diante até o diretório raiz.
requer quando o módulo carregado não é um arquivo, mas um diretório, esse diretório é chamado de pacote. Há um arquivo chamado package.json (arquivo de descrição do pacote) no pacote, por exemplo:
A cópia do código é a seguinte:
{"name": "alguma biblioteca",
"Main": "./lib/some-library.js"}
onde principal indica o módulo que precisa ser carregado. Se o package.json não existir no pacote ou pacote.json não especificar o módulo principal, o nó tentará carregar index.js, index.node, index.json.
Ao carregar um módulo JavaScript, o módulo carregado é embrulhado em uma função:
A cópia do código é a seguinte:
função (módulo, exportações, __filename, __dirname, ...) {
Módulo JavaScript
}
O módulo, exportações, __filename, __dirname, etc. Acessado por cada módulo JavaScript é realmente transmitido através de parâmetros de função. Devido a esse tipo de pacote, as variáveis locais do módulo são inacessíveis externamente. Mas às vezes há problemas difíceis de entender, como:
test1.js
A cópia do código é a seguinte:
exports = {
Nome: 'Name5566',
}
test2.js
A cópia do código é a seguinte:
module.exports = {
Nome: 'Name5566',
}
Carregue estes dois módulos:
A cópia do código é a seguinte:
var test1 = requer ('./ test1.js');
console.log (test1.name); // indefinido
var test2 = requer ('./ test2.js');
console.log (test2.name); // Name5566
As exportações são passadas como parâmetros para o módulo. Podemos naturalmente adicionar atributos (ou métodos) ao objeto de exportação através do Exports.x, mas atribuindo diretamente um valor às exportações (por exemplo, exportações = x) apenas altera o valor do parâmetro formal em vez do parâmetro real, então:
1. Ao adicionar propriedades às exportações, use exportações
2. Ao atribuir um valor às exportações, use o Module.Exports
Bolsa
De acordo com a especificação Commonjs, um pacote completo deve incluir:
1.Package.json Package Descrição Arquivo
2.Bin Diretório de arquivos binários
3. LIB JavaScript Code Directory
4.Doc Document Directory
5. Diretório de código de teste de teste
NPM é uma ferramenta de gerenciamento de pacotes para o nó. Uso comum:
Veja a documentação do comando:
A cópia do código é a seguinte:
NPM Ajuda a instalação
Veja a documentação para a instalação do comando.
Instale um pacote:
A cópia do código é a seguinte:
NPM Instale Redis
Instale o pacote Redis. O comando de instalação instala o pacote no diretório Node_modules no diretório atual.
Remova um pacote:
A cópia do código é a seguinte:
NPM Remova redis
Remova o pacote Redis. O comando Remover removerá o pacote no diretório atual.