Como começar rapidamente com VUE3.0: Vá para o estudo
1.1 O que é modularização
se refere ao processo de dividir o sistema em vários módulos, camada por camada, de cima para baixo, ao resolver um problema complexo. Para todo o sistema, os módulos são unidades que podem ser combinadas, decompostas e substituídas.
A modularização no campo da programação consiste em seguir regras fixas e dividir um arquivo grande em vários módulos pequenos que são independentes e interdependentes.
Os benefícios de dividir o código em módulos:
Melhora a capacidade de reutilização do código,
melhora a capacidade de manutenção do código
e permite o carregamento sob demanda
2.1 Classificação de módulos
em Node.js com base em Dependendo de. a fonte do módulo, os módulos são divididos em 3 categorias principais, a saber:
módulos integrados (os módulos integrados são fornecidos oficialmente pelo Node.js, como fs, path, http, etc.)
módulos personalizados (cada . js criado pelo usuário), são todos módulos personalizados)
Módulos de terceiros (módulos desenvolvidos por terceiros não são módulos integrados fornecidos oficialmente, nem são módulos personalizados criados por usuários e precisam ser baixados antes do uso)
2.2 Carregue módulos
usando o poderoso método require(), você pode carregar os módulos integrados necessários, módulos definidos pelo usuário e módulos de terceiros para uso. Por exemplo:
Nota: Ao usar o método require() para carregar outros módulos, o código no módulo carregado será executado; o sufixo do arquivo '.js' pode ser omitido ao carregar um módulo personalizado.
2.3 Escopo do módulo em Node.js
O que é escopo do módulo
? Semelhante ao escopo da função, variáveis, métodos e outros membros definidos em um módulo personalizado só podem ser acessados dentro do módulo atual.
O benefício do escopo do módulo
evita o problema de poluição de variáveis globais (se dois arquivos js forem importados com tags de script e a mesma variável for definida em ambos os arquivos, o primeiro será substituído pelo último)
2.4 Compartilhando o escopo do módulo externamente Membro
1 . Objeto de módulo
Há um objeto de módulo em cada módulo personalizado .js, que armazena informações relacionadas ao módulo atual. Ele é impresso da seguinte forma:
2. Objeto module.exports
Em um módulo personalizado, você pode usar o objeto module.exports para compartilhar membros dentro do módulo para uso externo.
Quando o mundo exterior usa o método require() para importar um módulo personalizado, o que ele obtém é o objeto apontado por module.exports.
3. Pontos a serem observados ao compartilhar membros:
Ao usar o método require() para importar um módulo, o resultado da importação sempre será baseado no objeto apontado por module.exports.
4. Objeto Exports
Como a palavra module.exports é relativamente complicada de escrever, para simplificar o código para compartilhar membros externamente, o Node fornece o objeto exports. Por padrão, exports e module.exports apontam para o mesmo objeto. O resultado final compartilhado ainda é baseado no objeto apontado por module.exports.
5. Mal-entendidos no uso de exports e module.exports
Lembre-se sempre que quando require() um módulo, você sempre terá o objeto apontado por module.exports:
Entendimento pessoal: exports e module.exports apontam originalmente para o mesmo objeto. Apenas montando os dados, ele ainda aponta para o mesmo objeto. Os dados montados pelas exportações também podem ser obtidos pelo módulo require. Se uma parte atribuir um valor (apontando para outro objeto, então eles não apontam para o mesmo objeto, e o módulo require obtém o objeto apontado por module.exports, então, uma vez que uma parte altera o ponteiro, o módulo require não obterá o valor das exportações.)
Nota: Para evitar confusão, é recomendado que você não use exports e module.exports ao mesmo tempo no mesmo módulo
2.5 Especificação de modularidade em Node.js Node.js segue a modularidade CommonJS. A especificação CommonJS estipula as características dos módulos e como cada módulo interage entre si.
CommonJS estipula:
(1) Dentro de cada módulo, a variável module representa o módulo atual.
(2) A variável do módulo é um objeto e seu atributo de exportação (ou seja, module.exports) é a interface externa.
(3) Carregar um módulo na verdade carrega o atributo module.exports do módulo. O método require() é usado para carregar módulos.
3.1 Pacotes
1. O que é um pacote
Módulos de terceiros em Node.js também são chamados de pacotes.
Assim como computadores e computadores referem-se à mesma coisa, módulos e pacotes de terceiros referem-se ao mesmo conceito, mas com nomes diferentes.
2. A fonte do pacote
é diferente dos módulos integrados e dos módulos personalizados no Node.js. O pacote é desenvolvido por um indivíduo ou equipe terceirizado e é gratuito para uso de todos.
Observação: os pacotes em Node.js são todos gratuitos e de código aberto e podem ser baixados e usados gratuitamente, sem pagamento.
3. Por que os pacotes são necessários
Como os módulos integrados do Node.js fornecem apenas algumas APIs de baixo nível, a eficiência do desenvolvimento de projetos com base em módulos integrados é muito baixa.
O pacote é encapsulado com base em módulos integrados, fornecendo uma API mais avançada e conveniente, o que melhora muito a eficiência do desenvolvimento.
O relacionamento entre pacotes e módulos integrados é semelhante ao relacionamento entre jQuery e a API integrada do navegador.
4. Onde baixar pacotes?
Existe uma empresa de TI no exterior chamada npm, Inc. Esta empresa tem um site muito famoso: www.npmjs.com/, que é a maior plataforma de compartilhamento de pacotes do mundo. website Procure qualquer pacote que você precise, desde que tenha paciência!
Até agora, mais de 11 milhões de desenvolvedores em todo o mundo desenvolveram e compartilharam mais de 1,2 milhão de pacotes para nosso uso por meio desta plataforma de compartilhamento de pacotes. fornece um servidor em Registry.npmjs.org/ para compartilhar todos os pacotes externamente. Podemos baixar os pacotes que precisamos deste servidor.
Nota:
Procure o pacote necessário no site www.npmjs.com/
e baixe o pacote necessário no servidor Registry.npmjs.org/
5. Como fazer download do pacote
npm, Inc. , podemos usar esta ferramenta de gerenciamento de pacotes para baixar os pacotes necessários do servidor Registry.npmjs.org/ para uso local.
O nome desta ferramenta de gerenciamento de pacotes é Node Package Manager (conhecida como ferramenta de gerenciamento de pacotes npm). Esta ferramenta de gerenciamento de pacotes é instalada no computador do usuário junto com o pacote de instalação do Node.js.
Você pode executar o comando npm -v no terminal para verificar o número da versão da ferramenta de gerenciamento de pacotes npm instalada em seu computador:
3.2 Primeira experiência com npm
1. Comando para instalar pacotes no projeto
Se você deseja instalar um pacote com um nome especificado no projeto, você precisa executar o seguinte comando:
npm install O nome completo do pacote
O comando de empacotamento acima pode ser abreviado no seguinte formato:
npm i O nome completo do pacote
2. Quais arquivos adicionais são adicionados após a instalação inicial do pacote
Após a conclusão da instalação inicial do pacote, haverá uma pasta adicional chamada node_modules e um arquivo de configuração package-
?lock.json na pasta do projeto.
Entre eles: a pasta node_modules é utilizada para armazenar todos os pacotes que foram instalados no projeto. Quando require() importa um pacote de terceiros, ele procura e carrega o pacote deste diretório.
O arquivo de configuração package-lock.json é usado para registrar as informações de download de cada pacote no diretório node_modules, como nome do pacote, número da versão, endereço de download, etc.
Nota: Os programadores não devem modificar manualmente nenhum código nos arquivos node_modules ou package-lock.json, a ferramenta de gerenciamento de pacotes npm os manterá automaticamente.
3. Instale a versão especificada do pacote.
Por padrão, quando você usa o comando npm install para instalar um pacote, a versão mais recente do pacote será instalada automaticamente. Se precisar instalar um pacote de uma versão especificada, você pode especificar a versão específica através do símbolo @ após o nome do pacote, por exemplo:
npm i [email protected]
4. A especificação semântica da versão do pacote
O número da versão do o pacote está em "decimal pontilhado" É definido na forma de um total de três dígitos, por exemplo, 2.24.0
O significado de cada dígito é o seguinte:
1º dígito: versão principal
2º dígito: versão funcional
3º dígito: correção de bug
número da versão Regras para promoção: Enquanto o número da versão anterior aumentar, o número da versão subsequente retornará a zero.
3.3 Arquivo de configuração de gerenciamento de pacotes
npm estipula que um arquivo de configuração de gerenciamento de pacotes chamado package.json deve ser fornecido no diretório raiz do projeto. Usado para registrar algumas informações de configuração relacionadas ao projeto. Por exemplo:
nome do projeto, número da versão, descrição, etc.
Quais pacotes são usados no projeto,
quais pacotes são usados apenas durante o desenvolvimento,
quais pacotes são necessários durante o desenvolvimento e implantação
Problemas encontrados
na colaboração entre várias pessoas
: O tamanho do pacotes de terceiros são muito grandes, tornando inconveniente para os membros da equipe compartilhar o código-fonte do projeto.Solução: Remova node_modules ao compartilhar.
2. Como registrar quais pacotes estão instalados no projeto
. No diretório raiz do projeto, crie um arquivo de configuração chamado package.json, que pode ser usado para registrar quais pacotes estão instalados no projeto. Isso facilita o compartilhamento do código-fonte do projeto entre os membros da equipe após a remoção do diretório node_modules.
Nota: No desenvolvimento futuro do projeto, certifique-se de adicionar a pasta node_modules ao arquivo .gitignore ignore.
3. Crie rapidamente package.json
A ferramenta de gerenciamento de pacotes npm fornece um comando de atalho para criar rapidamente o arquivo de configuração de gerenciamento de pacotes package.json no diretório onde o comando é executado:
npm init -y
Nota:
(1) O comando acima é. só pode ser executado com sucesso no diretório em inglês! Portanto, o nome da pasta do projeto deve ser em inglês, não em chinês, e não deve haver espaços.
(2) Ao executar o comando npm install para instalar um pacote, a ferramenta de gerenciamento de pacotes npm registrará automaticamente o nome e o número da versão do pacote em package.json.
4. Nó de dependências
No arquivo package.json, há um nó de dependências, que é especialmente usado para registrar quais pacotes você instalou usando o comando npm install.
5. Instale todos os pacotes de uma vez.
Quando removemos um projeto com node_modules, precisamos fazer download de todos os pacotes no projeto antes de podermos executá-lo. Caso contrário, um erro semelhante ao seguinte será relatado:
Você pode executar o comando npm install (ou npm i) para instalar todos os pacotes dependentes de uma vez:
6. Para desinstalar um pacote
, você pode executar o comando de desinstalação npm para desinstalar o pacote especificado:
nome específico do pacote de desinstalação npm
Nota: Depois que o comando de desinstalação npm for executado com sucesso, o pacote desinstalado será automaticamente removido das dependências de package.json . Não existe um atalho para desinstalar.
7. Nó devDependencies
Se alguns pacotes serão usados apenas durante a fase de desenvolvimento do projeto e não serão usados após o projeto ficar online, é recomendado registrar esses pacotes no nó devDependencies.
Da mesma forma, se alguns pacotes precisarem ser usados após o desenvolvimento e lançamento do projeto, é recomendado registrar esses pacotes no nó de dependências.
Você pode usar o seguinte comando para registrar o pacote no nó devDependencies:
3.4 Resolver o problema da velocidade lenta de download de pacotes
1. Por que a velocidade de download do pacote é lenta
Ao usar o npm para baixar pacotes, ele baixa do servidor Registry.npmjs.org/ estrangeiro por padrão, então a velocidade de download do pacote será muito lenta
?.
2. Servidor espelho Taobao NPM
Taobao construiu um servidor na China para sincronizar pacotes em servidores oficiais estrangeiros para servidores domésticos e, em seguida, fornecer serviços de distribuição de pacotes na China. Isso melhora muito a velocidade de download de pacotes.
Extensão: O espelhamento é uma forma de armazenamento de arquivos. Os dados em um disco possuem uma cópia idêntica em outro disco, que é um espelho.
3. Mude a origem do espelho do pacote para npm.
A origem do espelho do pacote refere-se ao endereço do servidor do pacote.
4. nrm
Para alternar de forma mais conveniente a fonte da imagem do pacote, podemos instalar a ferramenta nrm e usar o comando de terminal fornecido pelo nrm para visualizar e alternar rapidamente a fonte da imagem do pacote.
3.5 Classificação dos pacotes
Os pacotes baixados usando a ferramenta de gerenciamento de pacotes npm são divididos em duas categorias, a saber:
pacote do projeto
pacote global
1. Pacote do projeto
Os pacotes instalados no diretório node_modules do projeto são todos pacotes do projeto.
Os pacotes de projetos são divididos em duas categorias, a saber:
pacotes de dependência de desenvolvimento (pacotes registrados no nó devDependencies, que são usados apenas durante o desenvolvimento)
pacotes de dependências principais (pacotes registrados no nó de dependências, que são usados durante o desenvolvimento e o projeto. Será usado depois de ficar online)
2. Pacote global Ao executar o comando npm install, se o parâmetro -g for fornecido, o pacote será instalado como um pacote global.
O pacote global será instalado no diretório C:Usersuser directoryAppDataRoamingnpmnode_modules.
Nota:
(1) Somente pacotes de ferramentas precisam ser instalados globalmente. Porque eles fornecem comandos de terminal úteis.
(2) Para determinar se um pacote precisa ser instalado globalmente antes de poder ser usado, você pode consultar as instruções oficiais de uso.
3. i5ting_toc
i5ting_toc é uma pequena ferramenta que pode converter documentos MD em páginas HTML. As etapas a serem usadas são as seguintes:
3.6 Estrutura padronizada de pacotes
Depois de entender o conceito de pacotes e como baixar e usar pacotes, vamos dar uma olhada mais profunda na estrutura interna dos pacotes.
Um pacote padronizado deve atender aos três requisitos a seguir:
(1) O pacote deve existir em um diretório separado
(2) O diretório de nível superior do pacote deve conter o arquivo de configuração de gerenciamento de pacotes package.json
(3) package.json deve conter três atributos: nome, versão e principal, que representam respectivamente o nome do pacote, o número da versão e a entrada do pacote.
Nota: Os três requisitos acima são o formato que uma estrutura de pacote padronizada deve cumprir. Para obter mais restrições, você pode consultar o seguinte URL: https://yarnpkg.com/zh-Hans/docs/package-json
3.7 Desenvolva seu. próprio pacote
1. Inicialize a estrutura básica do pacote
(1) Crie uma nova pasta itheima-tools como diretório raiz do pacote
(2) Na pasta itheima-tools, crie os três arquivos a seguir:
package.json (gerenciamento de pacotes arquivo de configuração)
index.js (arquivo de entrada do pacote)
README.md (documento de descrição do pacote)
2. Inicialize package.json
Nota: nome - usado para informar o nome da aplicação ou pacote de software; versão - indica a versão atual main - define o ponto de entrada da descrição da aplicação; é uma breve descrição das palavras-chave da aplicação/pacote de software; Matriz de palavras-chave relacionadas à função do pacote de software (ajuda a navegar no site oficial do nó para encontrar a licença do pacote de software – especifica a licença do pacote de software);
3. Escreva a documentação do pacote.
O arquivo README.md no diretório raiz do pacote é a documentação de uso do pacote. Por meio dele, podemos escrever antecipadamente as instruções de uso do pacote em formato markdown para comodidade do usuário.
Não há requisitos obrigatórios sobre qual conteúdo deve ser escrito no arquivo README, desde que a função, uso, precauções, etc. do pacote possam ser claramente descritos.
3.8 Pacote de lançamento
1. Registre a conta npm
(1) Visite o site www.npmjs.com/, clique no botão de inscrição para entrar na interface do usuário de registro
(2) Preencha as informações relacionadas à conta: Nome completo, Email público, Nome de usuário, Senha
(3) Clique no botão Criar uma conta para registrar uma conta
(4) Faça login no seu e-mail e clique no link de verificação para verificar a conta
2. Faça login na conta npm
Após a conclusão do registro da conta npm, você
.pode executar o comando npm login no terminal e inserir o nome de usuário e a senha (senha). Ele está oculto e não pode ser visto, basta inserir a chave correta (Enter), o endereço de e-mail e o código OTP enviado para o endereço de e-mail e, em seguida. você pode fazer login com sucesso.
Nota: Antes de executar o comando npm login, você deve primeiro mudar o endereço do servidor do pacote para o servidor oficial do npm. (Se você estava usando o servidor taobao antes, você deve mudar para o servidor oficial npm) Caso contrário, a publicação do pacote falhará!
3. Publique o pacote no
npm
Depois de mudar o terminal para o diretório raiz do pacote, execute o comando npm subscribe para publicar o pacote no npm (nota: os nomes dos pacotes não podem ser os mesmos. Você pode acessar o site oficial para verifique se existem pacotes com o mesmo nome).
4. Exclua o pacote publicado.
Execute o comando npm unpublish package name --force para excluir o pacote publicado do npm.
Nota:
(1) O comando npm unpublish só pode excluir pacotes publicados dentro de 72 horas
(2) Pacotes excluídos por npm unpublish não podem ser republicados dentro de 24 horas
(3) Tenha cuidado ao publicar pacotes e tente não publicá-los no pacote npm sem sentido!
4.1 Priorizar o carregamento do cache
Os módulos serão armazenados em cache após o primeiro carregamento. Isso também significa que chamar require() diversas vezes não fará com que o código do módulo seja executado diversas vezes.
Nota: Quer sejam módulos integrados, módulos definidos pelo usuário ou módulos de terceiros, eles serão carregados primeiro do cache, melhorando assim a eficiência de carregamento do módulo.
4.2 Mecanismo de carregamento de módulos integrados
Módulos integrados são módulos fornecidos oficialmente pelo Node.js. Os módulos integrados têm a maior prioridade de carregamento.
Por exemplo: require('fs') sempre retorna o módulo fs integrado, mesmo que haja um pacote com o mesmo nome no diretório node_modules, ele também é chamado de fs.
4.3 Mecanismo de carregamento de módulo personalizado
Ao usar require() para carregar um módulo personalizado, você deve especificar um identificador de caminho começando com ./ ou ../. Ao carregar um módulo personalizado, se nenhum identificador de caminho como ./ ou ../ for especificado, o node o carregará como um módulo integrado ou de terceiros.
Ao mesmo tempo, ao usar require() para importar um módulo personalizado, se a extensão do arquivo for omitida, o Node.js tentará carregar os seguintes arquivos em ordem:
(1) Carregar de acordo com o nome exato do arquivo
(2) Conclusão Extensão .js para carregar
(3) Conclua a extensão .json para carregar
(4) Conclua a extensão .node para carregar
(5) O carregamento falha, o terminal relata um erro
4.4 Se o mecanismo de carregamento de módulos de terceiros
for passado para exigir () Se o identificador do módulo não for um módulo integrado e não começar com './' ou '../', o Node.js tentará carregar o módulo de terceiros da pasta /node_modules, começando pelo diretório pai do módulo atual.
Se o módulo de terceiros correspondente não for encontrado, ele será movido para o diretório pai um nível acima e carregado até o diretório raiz do sistema de arquivos.
Por exemplo, supondo que require('tools') seja chamado no arquivo 'C:Usersitheimaprojectfoo.js', o Node.js pesquisará na seguinte ordem:
(1) C:Usersitheima projeto node_modulestools
(2) C:Usersitheimanode_modulestools
(3) C:Usersnode_modulestools
(4) C:node_modulestools
4.5 Diretório como um módulo
Ao passar o diretório como um módulo identificador, ao carregar require(), existem três métodos de carregamento:
(1) Encontre um arquivo chamado package.json no diretório que está sendo carregado e procure o atributo principal, que serve como ponto de entrada para require() carregar
( 2) Se no diretório não houver arquivo package.json ou se a entrada principal não existir ou não puder ser analisada, o Node.js tentará carregar o arquivo index.js no diretório.
(3) Se as duas etapas acima falharem, o Node.js imprimirá uma mensagem de erro no terminal, relatando o módulo ausente: Erro: Não é possível encontrar o módulo 'xxx'
Este artigo foi reproduzido de: https://juejin.cn/post /7083445004240158757