A introdução de nodejs usa + a função de npm + fonte de espelho Taobao + servidor local

Introdução ao Node.js

O JavaScript pode ser usado para desenvolvimento de back-end

insira a descrição da imagem aqui

O surgimento do Node.js deu ao JavaScript a capacidade de fazer desenvolvimento de back-end.

O que o Node.js pode fazer

Como um ambiente de tempo de execução JavaScript, o Node.js fornece apenas funções básicas e APIs. No entanto, com base nessas funções básicas fornecidas pelo Node.js, muitas ferramentas e estruturas poderosas surgiram uma após a outra, portanto, aprender Node.js pode tornar os programadores front-end competentes para mais trabalhos e posições!

  • Com base na estrutura Express/Koa (http://www.expressjs.com.cn/), você pode criar rapidamente aplicativos da web
  • Com base na estrutura Electron (https://electronjs.org/), você pode criar aplicativos de desktop multiplataforma
  • Com base na estrutura restify (http://restify.com/), você pode criar rapidamente projetos de interface API
  • Leia, escreva e manipule bancos de dados, crie ferramentas úteis de linha de comando para auxiliar no desenvolvimento de front-end
  • etc…

Resumindo, o Node.js é a "grande espada" da grande era do front-end. Com a bênção do Node.js, o super buff, a competitividade da indústria dos programadores de front-end ficará cada vez mais forte!

O que é Node.js

Node.js® é um tempo de execução JavaScript criado no mecanismo JavaScript V8 do Chrome.

Node.js Um baseado no motor Chrome V8 JavaScript 运行环境.

Entendimento popular: Node.js fornece o ambiente necessário para a operação normal do código JavaScript.

O endereço do site oficial do Node.js: https://nodejs.org/zh-cn/

Ambiente de tempo de execução JavaScript em Node.js

insira a descrição da imagem aqui

Perceber:

  • O navegador é 前端o ambiente de execução do JavaScript. (O navegador é um software instalado no lado do cliente)
  • Node.js é o ambiente de tempo de execução para JavaScript 后端. (Normalmente, o Nodejs deve ser instalado no servidor)
  • As APIs internas do navegador, como DOM e BOM, não podem ser chamadas no Node.js.

Veja o número da versão do Node.js instalado

Abra o terminal (janela preta ou janela azul), insira o comando no terminal node –ve pressione a tecla Enter para visualizar o número da versão do Node.js instalado.

Se você pode ver o número da versão, isso significa que você instalou com sucesso

Executar a janela do terminal (entenda)

Este método é semelhante ao painel "Console" da ferramenta de depuração do navegador, adequado apenas para executar uma pequena quantidade de código de teste, portanto, é suficiente para entender.

Passos:

  • Abra qualquer terminal, digite diretamente o comando node e pressione Enter
  • Execute seu código JS, pressione Enter para executar
  • Pressione "Ctrl + C" duas vezes para sair.

Execute arquivos JS usando o comando node (mestre)

Este método é mais comumente usado. Você pode executar xx.jso código JS escrito em " " e pode executar o código no arquivo JS.

Passos:

  • terminal aberto
  • Digite " node 要执行的js文件"

vscode vem com seu próprio terminal:

  • xxx.jsNo arquivo, botão direito do mouse --> abrir no terminal --> uma janela de terminal aparece -->node xxx.js

Preste atenção no caminho do terminal e veja se você pode encontrar seu arquivo js nesse caminho.

modular

A modularização é o processo de implementação de dividir um arquivo grande em vários arquivos pequenos e combinar os arquivos pequenos por meio de uma sintaxe específica.

vantagem

Vantagens da modularidade

mais fácil de manter

melhor reutilização

As vantagens da modularidade no nó

Mais propício à manutenção (se o projeto precisar atualizar o módulo de login, isso não afetará outros módulos)

Melhor capacidade de reutilização (como uma função pública, encapsulada e todos os outros arquivos js podem usar esta função)

vscode executar js

Digite o nome do arquivo do nó no comando cdm

arquivo de nó de entrada do terminal vscode

​ Tais como: node .\test.js

módulo personalizado

Para compartilhar (exportar/expor) conteúdo para outros módulos, você precisa usar o module.exportsexport content.

Importe o módulo, se precisar usar o conteúdo exportado pelo módulo acima, pode usar require() o load

Exemplo:

02-test.js – exportar conteúdo

let age = 30;
let name = 'laotang';
let height = '175cm';
let weight = '75kg';
let square = x => x * x;

// 导出age、name、fn给其他模块使用
module.exports = {
    
     age, name, square };

03-use.js – importar conteúdo

let test = require('./02-test');

console.log(test); // { age: 30, name: 'laotang', square: Function...}

Carregar módulos personalizados

Ao carregar um módulo personalizado, um caminho deve ser incluído (caminho relativo, caminho absoluto é aceitável)

Ao carregar módulos personalizados, o sufixo pode ser omitido

módulo embutido

Os módulos integrados são um conjunto de APIs básicas (módulos funcionais) que acompanham a plataforma Node.js. Também chamado de módulo principal.

Vários módulos embutidos são descritos abaixo.

Observe que ao carregar módulos integrados, o caminho não pode ser escrito , o que é diferente de carregar módulos personalizados.

Módulos embutidos - módulo de caminho

  • pathÉ uma API fornecida pelo próprio Node, que é especialmente utilizada para processar caminhos.
  • http://nodejs.cn/api/path.html

  • usar

    • módulo de carga

      // 使用核心模块之前,首先加载核心模块
      let path = require('path');
      // 或者
      const path = require('path');
      
    • Chame os métodos no módulo path para lidar com os problemas correspondentes. Aqui estão alguns métodos no módulo path

      método efeito
      path.basename(path[, ext]) Retorna a última parte do caminho (nome do arquivo)
      path.dirname(caminho) nome do diretório de retorno
      caminho.extname(caminho) Retorna a extensão (incluindo .) dos arquivos no caminho
      path.format(pathObject) Formatar um objeto como uma string de caminho
      caminho.juntar([…caminhos]) caminho de costura
      path.parse(path) Analisa uma string de caminho em um formato de objeto
      path.resolve([…paths]) Concatenar caminhos com base no diretório de trabalho atual
      const path = require('path');
      
      // extname -- 获取文件后缀
      console.log(path.extname('index.html')); // .html
      console.log(path.extname('index.coffee.md')); // .md
      
      // join -- 智能拼接路径
      // ------------------- 智能拼接路径 -----------------------------
      // console.log(path.join('a', 'b', 'c')); // a/b/c
      
      // console.log(path.join('a', 'b', 'c', 'index.css')); // a/b/c/index.css
      
      // a里面有b,b里面有../c,言外之意,c和b同级。
      // console.log(path.join('a', 'b', '../c', 'index.js')); // a/c/index.js
      
      // __dirname 永远表示当前js文件的绝对路径
      console.log(path.join(__dirname, 'css', 'demo.css')); // /Users/tangfengpo/Study/123/Node01/code/css/demo.css
      

Módulo embutido - módulo fs

  • fs, ou seja, sistema de arquivos, sistema de arquivos, este módulo pode realizar a operação de arquivos e pastas

  • http://nodejs.cn/api/fs.html

  • módulo de carga

    // 引入模块,引入模块的时候,可以使用var、let,但是建议使用const,因为我们不希望它改变
    const fs = require('fs');
    
ler arquivo
// readFile -- 异步读取文件
fs.readFile('./test.json', (err, data) => {
    
    
    if (err) {
    
    
        console.log('读取文件出错');
    } else {
    
    
        console.log(data); // 读取到的二进制数据
        console.log(data.toString()); // 得到原始数据
    }
});

fs.readFile('./test.json', 'utf-8', (err, data) => {
    
    
    if (err) {
    
    
        console.log('读取文件出错');
    } else {
    
    
        console.log(data); // 读取到的原始数据
    }
});
gravar no arquivo
const fs = require('fs')

fs.writeFile('./002.html','写入一段话888888', (err) => {
    
    
     if(err) throw err
     console.log('写入成功');
})

módulo embutido - módulo http

servidor de compilação http

//加载http模块
const http = require('http')

//创建server对象,一般命名为server
const server = http.createServer()

//3.注册request事件,监听浏览器的请求。只要浏览器的请求,就会触发该事件。
server.on('request', (req, res) => {
    
    
  //req -- request,请求,通过它可以获取到请求相关信息。
    比如获取请求头、获取请求体、获取请求的url、请求方式等。
    
 //res --response响应,所有和响应相关的操作都通过res完成,设置响应状态码,设置响应头、设置响应状态
    res.statusCode = 200
    res.setHeader('Content-type','text/html; charest=utf-8');
    res.end('这是我的服务器')
    
})

//4.指定端口,启动服务
server.listen(3000,() => {
    
    
    console.log('我的服务器启动了')
})

parâmetros req e res

O formato do código acima é basicamente fixo. Apenas a função de processamento do evento de solicitação precisa ser explicada.

Quando a solicitação do navegador for recebida, o evento de solicitação será acionado e a função de processamento de eventos possui dois parâmetros formais req e res.

// 代码片段
server.on('request', function (req, res) {
    
    
  // 该函数就是处理请求响应的函数
  // 形参res是响应response的简写
})

  • parâmetro formal requerido
    • O parâmetro formal req é a abreviação de request, ou seja, request.
    • Por meio do objeto req, você pode obter informações relacionadas à solicitação.
    • req.url obtém o caminho na linha de solicitação
    • req.method obtém o método de solicitação na linha de solicitação
    • req.headers Obter cabeçalhos de solicitação
  • parâmetro formal res
    • O parâmetro formal res é a abreviação de response, ou seja, a resposta
    • Para responder, você precisa usar o objeto res.
    • statusCode define o código de status da resposta, que deve ser chamado antes do método end .
    • res.setHeader() Define o cabeçalho da resposta, como definir a codificação do corpo da resposta, que deve ser chamado antes do método end .
    • res.end() envia a mensagem de resposta (linha de resposta, cabeçalho de resposta, corpo de resposta) para o navegador, em termos leigos, é para responder.
      • chamada end() para indicar uma resposta
      • Depois que end() é chamado, você não pode mais definir o código de status de resposta e o cabeçalho de resposta
      • O parâmetro de end() indica o resultado da resposta; somente strings podem ser preenchidas .

Quando o navegador solicitar o servidor, ele solicitará /favicon.icoo ícone do site no diretório raiz do site por padrão, portanto, deixe-o em paz.

NPM

Introdução ao npm

npm é uma ferramenta para gerenciar (baixar, desinstalar, publicar) módulos de terceiros.

node(node ​​package manager) node package manager. Uma ferramenta para gerenciar pacotes de nós.

Um pacote é um módulo e a ferramenta npm já está instalada em seu computador quando você instala o node.

Execute na linha de comando: npm -v para visualizar o número da versão.

O papel do npm

A função do npm é: uma ferramenta para gerenciar módulos de nó.

  • Baixe e instale módulos de terceiros
  • Desinstalar módulos de terceiros
  • módulo de lançamento
  • Remover módulos publicados

npm é uma ferramenta para gerenciar (baixar, instalar, desinstalar...) módulos de terceiros

módulo local

inicialização

Para instalar módulos locais, você precisa usar a ferramenta npm para inicializar

npm init -y
//接着按回车即可
初始化之后会在项目中目录中生成package.json的文件

Instalar e desinstalar comandos de módulo de terceiros

Espelho Taobao

A equipe de desenvolvimento front-end do Taobao fez backup dos módulos do site npm.Geralmente, na China, a imagem espelhada do Taobao será instalada primeiro no npm para melhorar a velocidade de download dos módulos.

//建议在安装第三方模块之前,先执行如下命令(淘宝镜像),只需执行一次即可(以后重启vscode还是电脑,都无需再执行)
npm config set registry https://registry.npm.taobao.org

Comandos de instalação e desinstalação

  • comando de instalação
npm install 模块名
或简写
npm i 模块名
//一次性安装多个模块
npm i 模块名 模块名
  • módulo de desinstalação
npm uninstall 模块名
npm un 模块名   //简写
npm un 模块名 模块名  //卸载多个

Use módulos de terceiros

Como usar módulos integrados, você precisa usar require() para carregar módulos

let moment = require('moment')  //moment是一个时间日期的模块

O que é um módulo de terceiros

Módulos que não vêm com node. Também não é um módulo personalizado.

É um módulo escrito por outros e depois publicado no site npm, podemos usar a ferramenta npm para baixar e instalar módulos escritos por outros.

Os módulos de terceiros são todos encapsulados com base no módulo principal do nó e realizam muitos métodos muito convenientes, rápidos e concisos.

Atualmente, o site npm contém mais de 1,6 milhão de módulos de terceiros.

Se você deseja implementar uma função. Em seguida, procure por módulos de terceiros, não há nada que você não possa fazer, apenas você não pode encontrá-lo.

módulo global

Diferenças dos módulos nativos

  • Módulos instalados globalmente não podem ser carregados e usados ​​por meio de require()
  • Módulos instalados globalmente são geralmente comandos ou ferramentas.

Comandos de instalação e desinstalação

//全局安装命令
npm i 模块名 -g
//或者
npm i -g 模块名

//全局卸载命令
npm un 模块名 -g

//查看全局安装路径
npm root -g

Instale o módulo nodemon globalmente

npm i nodemon -g
O papel dos não-demônios

Em vez do comando node, inicie a ferramenta de serviço. Ao salvar o código após alterá-lo, o nodemon reiniciará automaticamente o serviço.

  • Execute o nodemon, se o erro for o seguinte:

[Falha na transferência da imagem do link externo, o site de origem pode ter um mecanismo anti-leeching, é recomendável salvar a imagem e carregá-la diretamente (img-yuQecHqo-1628818076645) (C:/Users/15001/Desktop/Learning Documents/09-node/Node02/Documents/NPM.assets/1585472428055.png)]

  • A solução é:
    • 管理员modo, abra a janela da linha de comando (powershell)
    • implementoset-ExecutionPolicy RemoteSigned;
    • Nas opções que aparecem, digite Ae pressione Enter. pode

Instale o nrm globalmente (alterne a fonte do espelho)

npm i -g nrm  //安装
nrm ls   //查看全部可用的镜像源
npm use taobao  //切换到淘宝镜像
npm use npm     //切换到npm主站

A execução do comando nrm relatará um erro:

[Falha na transferência da imagem do link externo, o site de origem pode ter um mecanismo de link anti-roubo, é recomendável salvar a imagem e enviá-la diretamente (img-PeLRixNi-1628818076646)(file://D:/%E5%89%8D%E7%AB%AF%E8%B5%84%E6%96%99/09-node/Node02/%E6%96%87%E6% A1%A3/NPM.as sets/image-20210505194903739.png?lastModify=1628814335)]

Solução: abra o arquivo marcado acima e substitua os comentários de 17 linhas pelo seguinte código:

const NRMRC = path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], '.nrmrc');

Despejo de arquivo...(img-yuQecHqo-1628818076645)]

  • A solução é:
    • 管理员modo, abra a janela da linha de comando (powershell)
    • implementoset-ExecutionPolicy RemoteSigned;
    • Nas opções que aparecem, digite Ae pressione Enter. pode

Instale o nrm globalmente (alterne a fonte do espelho)

npm i -g nrm  //安装
nrm ls   //查看全部可用的镜像源
npm use taobao  //切换到淘宝镜像
npm use npm     //切换到npm主站

A execução do comando nrm relatará um erro:

[Transferência de imagem de link externo...(img-PeLRixNi-1628818076646)]

Solução: abra o arquivo marcado acima e substitua os comentários de 17 linhas pelo seguinte código:

const NRMRC = path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], '.nrmrc');

Acho que você gosta

Origin blog.csdn.net/weixin_48585264/article/details/119667799
Recomendado
Clasificación