O que é o nó?
É melhor tentar cobrir tudo ao escrever alguma coisa, então também peguei alguns conceitos básicos da Internet. Alguns lugares mudaram sua compreensão minha. Se você entender essas coisas conceituais, pode optar por pular este parágrafo.
1.Node é um intérprete JavaScript do lado do servidor, mas eu realmente acho que os alunos que são bons em JavaScript podem facilmente obter o nó aprendendo o nó, então você está errado. Resumo: não sei se a água é profunda ou não, mas realmente não é superficial.
2. O objetivo do Node é ajudar os programadores a criar aplicativos altamente escaláveis e escrever códigos de conexão que podem lidar com dezenas de milhares de conexões com uma máquina física ao mesmo tempo. Lidar com alta concorrência e E/S assíncrona é uma das razões pelas quais o Node atraiu a atenção dos desenvolvedores.
3. O próprio Node executa o mecanismo JavaScript do Google V8, para que a velocidade e o desempenho sejam muito bons. Você pode ver isso olhando para o Chrome. Além disso, enquanto o nó encapsula -o, também melhora sua capacidade de processar dados binários. Portanto, o nó não apenas usa simplesmente o V8, mas também o otimiza para torná -lo mais poderoso em vários ambientes. (O que é V8 JavaScript Engine? Por favor, "Baidu sabe")
4. Extensões e módulos de terceiros desempenham um papel importante no uso do nó. O seguinte também apresentará o download do NPM. NPM é a ferramenta de gerenciamento de módulos. Use -o para instalar vários pacotes de software de nós (como Express, Redis, etc.) e publicar os pacotes de software que você escreveu para o Node.
Instale o nó
Aqui está uma breve introdução à instalação do nó em dois ambientes: Windows 7 e Linux. Ao instalar, você deve prestar atenção à versão Python. A instalação falhou muitas vezes devido a problemas com a versão Python. Recomenda -se que a versão 2.6+ tenha erros de instalação do nó. Se você consultar a versão Python, você pode entrar: pyhton -v
1. Vamos primeiro apresentar a instalação no Linux. O nó é muito conveniente para instalar e usar no ambiente Linux. Recomenda -se executar o nó no Linux. ^_^... Estou usando o Ubuntu11.04
um. Pacote de dependência de instalação: 50-100kb/s Cada pacote pode ser baixado e instalado em um minuto.
A cópia do código é a seguinte:
sudo apt-get install g ++ surl libssl-dev apache2-utils
sudo apt-get install-core
b. Execute o comando passo a passo no terminal:
A cópia do código é a seguinte:
git clone git: //github.com/joyent/node.git
Nó do CD
./configure
Fazer
sudo make install
Se a instalação for suave, o nó será instalado com sucesso e levará um total de 12 minutos para a rede 2M.
Nota: se você não usar o GIT para baixar o código fonte, poderá baixar o código fonte diretamente, mas precisará prestar atenção ao problema da versão do nó ao baixar e instalar dessa maneira. É o mais conveniente para baixar e instalar usando o GIT, por isso é recomendado.
2. Use Cygwin para instalar o nó no Windows. Este método não é recomendado porque realmente leva muito tempo e bom caráter. Meu sistema é a versão win7 Flagship
O Cygwin é um ambiente de simulação UNIX em execução na plataforma Windows. O endereço de download é: http://cygwin.com/setup.exe.
Depois de baixar o Cygwin, inicie a instalação. Passos:
um. Selecione a fonte de download - Instale na Internet
b. Selecione o diretório raiz para download e instalar
c. Selecione o diretório em que o arquivo de download é armazenado
d. Escolha o método de conexão
e. Selecione o site para baixar - http://mirrors.163.com/cygwin
f. O problema está nesta etapa, chegou a hora de testar seu personagem. O tempo de download e instalação necessário é incerto. De qualquer forma, leva muito tempo (mais de 20 minutos) e a falha de instalação ocorre ocasionalmente. Clique no ícone de seta rotativa na frente de cada pacote para selecionar a versão desejada. Quando selecionado, o sinal "X" parecerá indicar que o pacote foi selecionado. Selecione o pacote que deseja baixar:
A cópia do código é a seguinte:Pacote desenvolvido:
GCC-G ++: compilador C ++
gcc-mingw-g ++: cabeçalhos de suporte mingw32 e bibliotecas para gcc c ++
GCC4-G ++: Subpackage G ++
Git: Arquivos principais do sistema de controle de versão rápida
Faça: a versão GNU do utilitário 'Make'
OpenSSL-devel: o ambiente de desenvolvimento OpenSSL
pkg-config: um utilitário usado para recuperar informações sobre bibliotecas instaladas
ZLIB-DEVEL: A Biblioteca de Compressão/Descompressão Zlib (Desenvolvimento)
Editor Pacote: VIM: VI Melhor Enhanced VI Editor
Pacote python: troca de padrão para instalar o estado
Pacote da web:
WGET: Utilitário para recuperar arquivos da www via HTTP e FTP
Curl: ferramenta de linha de comando de transferência de arquivo multiprotocolo
Captura de tela anterior, leve o download do Zlib-devel como exemplo:
Após algumas etapas, o ambiente é concluído. No entanto, ainda não é hora de instalar o nó. Você ainda precisa executar o RebaseAll no modo de cinzas de Cywgin. As etapas são as seguintes:
um. Linha de comando CMD
b. Digite o subdiretório da lixeira no diretório de instalação do Cygwin
c. Execute cinzas para entrar no modo de shell
d. ./rebaseall -v
e. Feche a janela da linha de comando sem erros
OK, agora é hora de baixar e instalar o nó, iniciar cygwin.exe e digite:
A cópia do código é a seguinte:
$ wget http://nodejs.org/dist/node-v0.4.12.tar.gz
$ tar xf node-v0.4.12.tar.gz
$ CD Node-V0.4.12
$./Configure
$ make
$ Make Install
3.Download Node.exe Arquivo diretamente
Vá diretamente para Nodejs.org para download. Ouvi dizer que existem problemas instáveis, mas se você quiser apenas aprender sobre o nó no Windows primeiro, sinto pessoalmente que esse método é muito melhor do que a instalação do Cygwin.
Nota: Eu realmente não queria escrever o parágrafo de instalar o nó, mas ainda o escrevi para a abrangência deste artigo. Eu não esperava que fosse tanto quanto eu escrevi ... é uma mesa de café
"Hello World" - por que me sinto um pouco animado toda vez que vejo essa frase, e estou intrigado ...
Primeiro, crie um arquivo hello.js e copie o seguinte código no arquivo:
A cópia do código é a seguinte:
var http = requer ('http');
http.createServer (function (req, res) {
res.writehead (200, {'content-type': 'text/plana'});
Res.End ('Hello World/N');
}). Ouça (1337, "127.0.0.1");
console.log ('servidor em execução em http://127.0.0.1:1337/');
Lógica de código:
um. O método global requer () é usado para importar módulos. Geralmente, o valor de retorno do método requer () é atribuído diretamente a uma variável e essa variável é usada diretamente no código JavaScript. requer ("http") é carregar o módulo HTTP predefinido do sistema
b. http.createServer é o método de um módulo, o objetivo é criar e retornar um novo objeto do servidor da web e vincular um retorno de chamada ao serviço para lidar com a solicitação.
c. O servidor HTTP pode ser ouvido em uma porta específica através do método http.listen ().
d. Console.log Desnecessário dizer que aqueles que sabem que o Firebug devem saber que o nó implementa esse método.
Nota: Para detalhes específicos, verifique o documento cnodejs.org/cman/all.html#http.createServerver
Em seguida, execute o servidor Node, execute o código Hello.js e, depois de iniciar com êxito, você verá o texto em console.log (). Há fotos e verdade:
Baixar e usar o NPM
Além da API fornecida pelo próprio nó, agora existem muitos módulos de terceiros que podem melhorar bastante a eficiência do desenvolvimento. O NPM é o gerenciador de pacotes do Node, que pode usá -lo para instalar os pacotes de software necessários e publicar os pacotes de software escritos para o NodeJS. Endereço oficial do site: npmjs.org
A instalação requer apenas escrever uma linha de código no terminal:
A cópia do código é a seguinte:
Curl http://npmjs.org/install.sh | sh
O NPM instala o pacote de extensão do nó com a mesma linha de código:
A cópia do código é a seguinte:
NPM Install <Nome do pacote> // Exemplo: NPM Install Express
Nota: Se o erro de nome do domínio for relatado durante a instalação do módulo, limpe o cache> cache npm limpe ou reinicie o computador.
Entenda o conceito de nó do módulo
No nó, diferentes componentes funcionais são divididos em diferentes módulos. O aplicativo pode escolher e usar o módulo apropriado de acordo com suas necessidades. Cada módulo exporá alguns métodos ou atributos comuns. O usuário do módulo pode usar esses métodos ou atributos diretamente e não há necessidade de entender os detalhes da implementação interna. Além da API fornecida pelo próprio nó, os desenvolvedores também podem usar esse mecanismo para dividir aplicativos em vários módulos para melhorar a reutilização do código.
1. Como usar módulos?
É muito conveniente usar módulos no nó. No código JavaScript, você pode usar diretamente a função global exigir () para carregar um módulo.
No exemplo "Hello World" agora, requer ("http") pode carregar o módulo HTTP predefinido do sistema; O nome do módulo começa com "./", como requer ("./ mymodule.js") para carregar o módulo mymodule.js no mesmo diretório que o arquivo javascript atual.
2. Como desenvolver módulos sozinho?
Quando acabei de apresentar que, ao usar requer () para importar um módulo, o nome do módulo começa com "./" é o arquivo do módulo que desenvolvi sozinho. O que você precisa prestar atenção é o caminho do sistema do arquivo JS.
A lógica de processamento interno do módulo é encapsulada no código. Um módulo geralmente expõe alguns métodos ou atributos públicos para outras pessoas usarem. O código interno do módulo precisa expor esses métodos ou atributos.
3. Vamos fazer um conjunto simples de exemplos. Primeiro, crie um arquivo de módulo como mymodule.js, apenas uma linha de código
console.log ('Oi Darren.')
Em seguida, crie um arquivo test.js, importe este arquivo JS e execute o nó para ver os resultados
Existem muitos módulos de terceiros na comunidade de nós agora. Espero que mais pessoas possam se juntar a essa grande família aprendendo o nó e contribua para a comunidade de nós. Agradecemos antecipadamente, vamos continuar.
4. Tome um exemplo mais profundo. Neste exemplo, privado e compartilhado serão introduzidos. Primeiro, crie um mymodule.js, o código é o seguinte:
A cópia do código é a seguinte:
var name = "darren";
this.Location = "Pequim";
this.showlogl = function () {
console.log ('Oi Darren.')
};
Existem três tipos no código, a saber: atributos privados, atributos compartilhados e métodos compartilhados e, em seguida, crie um test.js e execute nó
A área destacada nos diz claramente que não podemos obter métodos privados fora do módulo, para que eles sejam indefinidos. A declaração de atributos compartilhados e métodos compartilhados precisa ser precedida pela palavra -chave.
O que o nó pode fazer e suas vantagens
Nó Idéias do núcleo: 1. Não bloqueando; 2. 3. Orientado a eventos.
Nos aplicativos da Web atuais, algumas interações entre o cliente e o servidor podem ser consideradas baseadas em eventos, portanto, o Ajax é a chave para a resposta oportuna da página. Toda vez que uma solicitação é enviada (não importa quão pequenos sejam os dados solicitados), ele vai e volta na rede. O servidor deve responder a essa solicitação, geralmente abrindo um novo processo. Em seguida, quanto mais usuários visitar esta página, mais solicitações serão iniciadas e haverá problemas como transbordamento de memória, conflitos causados por intercalação lógica, paralisia de rede e travamentos do sistema.
O objetivo do Node é fornecer uma solução para criar aplicativos de rede escaláveis. No exemplo do Hello World, o servidor pode lidar com muitas conexões do cliente ao mesmo tempo.
O nó e o sistema operacional têm uma convenção de que, se um novo link for criado, o sistema operacional notificará o nó e depois irá para a hibernação. Se alguém cria um novo link, ele (nó) executa um retorno de chamada, cada link que ocupava apenas uma sobrecarga de pilha (memória) muito pequena.
Pegue um exemplo simples de chamadas assíncronas, prepare o test.js e mymydule.js, ^_ ^. Copie o seguinte código em test.js e execute:
A cópia do código é a seguinte:
var fs = requer ('fs');
fs.readfile ('./ mymodule.js', function (err, dados) {
se (err) lançar err;
console.log ('com sucesso');
});
console.log ('assíncrono');
Assíncrono, todos devem ser capazes de pensar que o tempo de execução exibirá primeiro "assíncrono" e depois "com sucesso".
O nó é não bloqueado e, quando uma nova solicitação chega ao servidor, não há necessidade de fazer nada separadamente para esta solicitação. O Node está apenas esperando a solicitação ocorrer lá e lida com a solicitação se houver uma solicitação.
O nó é melhor para lidar com solicitações de pequeno porte e E/S baseada em eventos.
O Node não é apenas uma estrutura para fazer um serviço da Web, pode fazer mais, como pode prestar serviços de soquete, por exemplo, baseado em arquivos e, em seguida, com base em alguns exemplos, pode haver processos filhos e internamente, é um mecanismo de evento muito completo, incluindo algumas soluções de não injeção assíncrona, em vez de serem limitadas à primeira camada da rede. Ao mesmo tempo, pode, mesmo como um serviço da web, fornecer mais funções que podem penetrar no kernel e no núcleo de serviço. Por exemplo, o agente HTTP usado pelo Node, é que ele pode penetrar no kernel de serviço e fazer algumas funções.
Conceito de fluxo de eventos de nó
Como o Node adota um modo orientado a eventos, muitos módulos geram vários eventos, e o módulo pode adicionar métodos de processamento de eventos. Todos os objetos que podem gerar eventos são instâncias da classe EventEmitter no módulo de evento. O código é uma linguagem comum em todo o mundo, por isso ainda usamos código para falar:
A cópia do código é a seguinte:
var events = requer ("eventos");
var emissor = new events.EventEmitter ();
emissor.on ("myevent", função (msg) {
console.log (msg);
});
emissor.emit ("MyEvent", "Hello World.");
Uma breve análise deste parágrafo:
1. Use o método requer () para adicionar o módulo de eventos e atribuir o valor de retorno a uma variável
2. A frase dos novos eventos.
3. ON (Evento, ouvinte) é usado para adicionar manipulador de eventos a um evento de evento
4. O método emit (evento, [arg1], [arg2], [...]) é usado para gerar eventos. Cada função do ouvinte na lista do ouvinte é executada sequencialmente com os parâmetros fornecidos como parâmetros da função do ouvinte.
Os métodos da classe EventEmitter estão relacionados à geração e processamento de eventos:
1. AddListener (evento, ouvinte) e ON (Evento, ouvinte) são métodos que adicionam um ouvinte ao final da matriz do ouvinte do evento especificado.
2. Uma vez (evento, ouvinte), esse método adiciona um ouvinte único para eventos. O ouvinte é executado quando o evento for demitido pela primeira vez e será removido depois
3. Removelistener (evento, ouvinte) Este método é usado para remover o ouvinte da matriz do ouvinte do evento especificado.
4. Emit (evento, [arg1], [arg2], [...]) acabou de mencionar.
No nó, existem vários fluxos de dados diferentes e o fluxo é uma interface abstrata implementada por diferentes objetos. Por exemplo, a solicitação para solicitar um servidor HTTP é um fluxo, semelhante ao stdout (saída padrão); incluindo sistema de arquivos, solicitações e respostas HTTP e conexões TCP/UDP. O fluxo pode ser legível, gravável ou legível e gravável. Todos os fluxos são instâncias de EventEmitter, para que vários eventos possam ser gerados.
Um fluxo legível produz principalmente os seguintes eventos:
1.Data Este evento é acionado quando os dados no fluxo são lidos.
2.END Quando não há dados no fluxo a ser lido, este evento é acionado
3.Error Este evento é acionado quando ocorre um erro ao ler os dados.
4.Come Quando o fluxo é fechado, este evento é acionado, mas nem todos os fluxos acionam esse evento. (Por exemplo, um fluxo de solicitação HTTP recebido em uma conexão não acionará o evento 'Fechar'.)
Há também um evento FD mais especial, que é acionado quando um descritor de arquivo é recebido no fluxo. Somente os fluxos do UNIX suportam esse recurso e nenhum outro tipo de fluxo acionará este evento.
Documentação detalhada relacionada: http://cnodejs.org/cman/all.html#events_
Módulo de sistema de arquivos de arquivos poderoso
O módulo FS no nó é usado para operar no sistema de arquivos local. A E/S do arquivo é encapsulada pela função POSIX padrão. Este módulo precisa ser acessado usando requer ('fs'). Todos os métodos fornecem métodos assíncronos e síncronos.
Os métodos fornecidos no módulo FS podem ser usados para executar operações básicas de arquivos, incluindo leitura, redação, renomeação, criação e exclusão de diretórios e obtenção de metadados de arquivo. Cada método de operação de arquivos possui duas versões: versões síncronas e assíncronas.
As versões das operações assíncronas usarão um método de retorno de chamada como o último parâmetro. Quando a operação for concluída, o método de retorno de chamada será chamado. O primeiro parâmetro do método de retorno de chamada é sempre reservado como uma exceção que pode ocorrer durante a operação. Se a operação estiver correta e bem -sucedida, o valor do primeiro parâmetro será nulo ou indefinido.
O nome do método da versão de operação síncrona é adicionar uma sincronização como o sufixo após o método assíncrono correspondente. Por exemplo, a versão síncrona do método assíncrono renome () é renamesync (). O seguinte lista alguns métodos comuns no módulo FS e apenas apresenta a versão da operação assíncrona.
Os arquivos test.js e mymodule.js estão prontos? Copie o seguinte código em test.js uma vez
A cópia do código é a seguinte: var fs = requer ('fs');fs.unlink ('./ mymodule.js', function (err) {
se (err) lançar err;
console.log ('excluído com sucesso mymodule.js');
});
Se não houver erro, o mymodule.js será excluído. É tão simples
Este é apenas um exemplo simples. Se você estiver interessado, tente você mesmo e pratique a verdade. Por razões de espaço, não darei muitos exemplos. ^_^
Um resumo do nó de aprendizado:
1. Para mim, que tem quase zero conhecimento sobre comandos e conchas Linux, aprendi muito conhecimento sobre Linux durante esse período. Vim é realmente um editor poderoso e é muito bom não usar um mouse; E uma coisa é muito importante para mim. A programação no Linux é muito legal, especialmente na equipe, usada para instalar mais saudável^_^.
2. Entenda uma estrutura bem -sucedida para JavaScript - nó do lado do servidor, bem como algumas de suas vantagens e uso, este artigo é o melhor resumo, é claro, este será apenas o começo.
Algumas coisas a dizer a todos:
1. Eu tenho que atingir o entusiasmo de algumas pessoas aqui. Se você não sabe o suficiente sobre a tecnologia de back-end ou nunca foi exposto ao idioma do servidor, não saiba sobre E/S e não possui o conceito de fluxo de processamento de back-end, então ... O nó não é uma tecnologia do lado do servidor adequada para o nível básico. Por que você diz isso:
um. O ponto principal é que existem poucos exemplos e artigos em chinês; portanto, será mais problemático aprender sistematicamente, portanto, sempre há um sentimento imaturo durante o uso, é claro, é causado principalmente por minha falta de família. De fato, não há muitas empresas usando o nó na China e, é claro, ainda existem muitas no exterior. Tirei uma foto de cnodejs.org:
3. Na verdade, tenho alguns arrependimentos por não entrar em uma empresa com a qual sonha, mas a vida deve ser assim, com altos e baixos, que é exatamente o que eu preciso e espero ... então, ainda tenho que continuar minha nova vida, ser seu próprio timoneiro, entender sua própria direção e deixar passar o que é passado.
b. Para amigos inexperientes, o Node não é fácil de começar. Pode ser visto no mais simples "Hello World" (o entendimento de vários ambientes operacionais e detalhes de instalação exige algum esforço). Não compare a biblioteca jQuery. As coisas tratadas são diferentes e os custos de aprendizagem também são diferentes. Portanto, não é recomendável ser uma tecnologia do lado do servidor para iniciantes. Se você deseja aprender um PHP e Python no lado do servidor, é uma boa escolha, porque: existem muitos livros, exemplos, várias estruturas e muitas práticas, simples e fáceis de entender e construir ...
C. O acima são minhas sugestões pessoais. Devido ao meu nível limitado, dê -me alguns conselhos e espero ser impiedoso.
2. Não sou feio com os padrões de redação de nós e habilidades específicas. Não tenho muito código para escrever um nó, mas a ideia de programação orientada a objetos é boa em todos os lugares.
3. Espero que este artigo seja útil para que todos aprendam o nó