O Node.js deve ser uma das tecnologias mais quentes hoje. Este artigo apresenta principalmente os cenários de características e aplicação do Node.JS.
O Node.js é uma plataforma criada no Chrome JavaScript Runtime, que é usado para criar facilmente aplicativos de rede rápidos e fáceis de escalar. O Node.js é tornado leve e eficiente com orientação a eventos e é ideal para aplicativos em tempo real com uso intensivo de dados em execução em dispositivos distribuídos.
1. Recursos
1.1 E/S assíncrona
A chamada E/S assíncrona é relativa à E/S síncrona. Muitas operações de E/S devem ser realizadas durante a execução do programa, como leitura e gravação de arquivos, entrada e saída, resposta de solicitação, etc. De um modo geral, as operações de E/S são demoradas. Por exemplo, no modo de programação tradicional, você precisa ler um arquivo de vários G, o thread inteiro será pausado e aguarda a leitura do arquivo e continuar a executar. Em outras palavras, as operações de E/S bloqueiam a execução do código, reduzindo bastante a eficiência do programa.
Em relação à E/S assíncrona, na verdade não é familiar para os engenheiros de front-end, porque iniciar uma solicitação de Ajax é a chamada "assíncrona" mais comum. No nó, a leitura de um arquivo (ler um arquivo é uma operação de E/S demorado) como exemplo, é muito semelhante à maneira de iniciar uma solicitação de Ajax:
A cópia do código é a seguinte:
var fs = requer ('fs');
fs.readfile ('/path', function (err, arquivo) {
console.log ('Leia o arquivo concluído');
});
console.log ('Iniciar o arquivo de leitura');
Depois que o código acima é chamado FS.readfile, o código subsequente é executado imediatamente e o tempo em que "o arquivo de leitura é concluído" é imprevisível. Quando um thread encontrar uma operação de E/S, ele não aguarda a operação de E/S terminar de maneira bloqueadora, mas simplesmente enviará a solicitação de E/S para o sistema operacional e continuará a executar declarações subsequentes. Quando o sistema operacional concluir uma operação de E/S, o thread que executa a operação de E/S é notificado na forma de um evento e o thread processará o evento em um horário específico.
1.2 loop de eventos e função de retorno de chamada
O chamado loop de eventos significa que o nó usará o mecanismo de eventos para resolver todas as operações assíncronas, e um thread está constantemente loop para detectar a fila de eventos. O evento do evento verifica eventos não tratados na fila de eventos até o final do programa. O método de programação dos eventos tem as vantagens de acoplamento leve, frouxo e foco apenas nos pontos de transação. No entanto, no cenário de múltiplas tarefas assíncronas, os eventos são independentes um do outro e como cooperar é um problema. No JavaScript, as funções de retorno de chamada estão por toda parte e as funções de retorno de chamada são a melhor maneira de aceitar chamadas assíncronas para retornar dados.
1.3 Único rosqueado
O Node mantém as características do JS como um único thread no navegador. A maior vantagem do thread único é que ele não requer um problema de sincronização consciente do estado, como programação com vários threads, não há impasse, nem a sobrecarga da troca de contexto de encadeamento. A única linha também possui suas fraquezas, manifestadas principalmente em três aspectos: a incapacidade de utilizar a CPU multi-núcleo; Os erros farão com que todo o aplicativo saia, e a robustez do aplicativo é digna do exame de admissão de pós -graduação; Uma grande quantidade de computação ocupará a CPU e tornará impossível continuar chamando de E/S assíncrona.
Para resolver o problema acima, o Node adota a mesma idéia que os trabalhadores da Web HTML5 e usa Child_Process para resolver o problema de grande quantidade de computação em um único thread. Ao distribuir os cálculos para cada processo filho, um grande número de cálculos pode ser dividido e os resultados podem ser passados através de mensagens de evento entre processos.
1.4 Plataforma cruzada
O Node é plataforma cruzada, ou seja, o mesmo conjunto de código JS pode ser implantado e executado no Windows, Linux, OSX e outras plataformas. Isso se deve principalmente ao fato de o Node ter construído uma arquitetura de plataforma Libuv entre o sistema operacional e o sistema de módulos de nível superior do nó.
2. Cenários de aplicação
1) Aplicativos em tempo real: como bate-papo online, empurrão de notificação em tempo real etc. (como soquete.io)
2) Aplicação distribuída: Use os dados existentes através de E/S paralela eficiente
3) Aplicação da ferramenta: Ferramentas massivas, da implantação de compressão front-end (como Grunt) a aplicativos de interface gráfica para desktop
4) Aplicativos de jogo: o campo do jogo possui altos requisitos para a realeza e a simultaneidade (como a estrutura de Pomelo da NetEase)
5) Use interface estável para melhorar os recursos de renderização da Web
6) Ambiente de linguagem de programação do front-end unificado: os desenvolvedores de front-end podem entrar rapidamente no desenvolvimento do lado do servidor (como o famoso JavaScript Pure, arquitetura média de palha completa)