Pagina inicial » Codificação » Beginner's Guide to Node.js (JavaScript do lado do servidor)

    Beginner's Guide to Node.js (JavaScript do lado do servidor)

    Node.js - em palavras simples - é JavaScript do lado do servidor. Tem sido muito falado nos dias de hoje. Se você já ouviu falar ou está interessado em aprender e colocar as mãos nele - este post é para você.

    Então, o que exatamente é a necessidade de usar JavaScript no servidor? Para tornar claro o conceito de Node.js, gostaria de compará-lo com as linguagens comuns do lado do servidor, como o PHP. O Node.js usa um procedimento de execução do servidor baseado em eventos em vez da execução multithread em PHP.

    Para explicar mais, vamos falar sobre a ideia de o que o Node.js é junto com alguns sugestões de provedor de hospedagem e dicas de instalação. Conhecimento de nível intermediário de JavaScript, jQuery e Ajax são necessários, mas também forneceremos exemplos para você entender a coisa toda mais fácil e até mesmo trabalhar nela, então vamos conhecer mais sobre o Node.js!

    Vamos considerar um caso:

    Considere um site no qual você precisa carregar o conteúdo dinamicamente de outro servidor da Web que seja lento. No PHP você pode fazer isso de duas maneiras - codificá-lo em um arquivo simples e codificá-lo como outro script, então executá-lo em uma abordagem multithread.

    No primeiro método, embora o código seja simples a execução faz uma pausa por um tempo no ponto em que o servidor da web lento é acessado. O segundo método é mais otimizado em caso de desempenho mas é difícil codificar e tem uma sobrecarga de gerenciamento multithread. O caso é semelhante para a maioria das linguagens de programação da Web, exceto o JavaScript do lado do servidor, ou seja, o Node.js.

    Qual é a diferença no Node.js? Para entender o Node.js você deve ter em mente Programação baseada em eventos do JavaScript no navegador. Nós utilizamos a mesma tecnologia aqui. Em vez de usar um thread separado, um função é anexada ao evento final do “acesso lento ao servidor web” mencionado acima, assim você obtém o funcionalidade completa na segunda opção otimizada mencionada acima, sem qualquer sobrecarga multithread.

    Introdução ao Node.js

    Node.js é JavaScript. Por que não podemos utilizar a funcionalidade baseada em eventos do JavaScript no cliente para um servidor? Esse pensamento pode ter levado ao desenvolvimento do Node.js.

    Dito isso, o principal destaque do Node.js - são funções assíncronas baseadas em eventos. Ele usa um loop de eventos em vez de esperar por operações de E / S (acessando o serviço da Web externo, acessando o hardware).

    O Node.js ainda pode fazer uso de seu poder de processamento quando o servidor está esperando por qualquer outra operação. Isso faz com que o Node.js escalável para milhões de conexões simultâneas.

    Como o JavaScript é executado em um servidor??

    O Node.js funciona em um ambiente v8 - é um máquina virtual ou um Motor de JavaScript que executa o código JavaScript, portanto, para hospedagem, você não pode usar os hosts da Web comuns. Você vai precisar dos que têm o ambiente v8.

    Aqui estão algumas sugestões de fornecedores para a hospedagem do Node.js:

    1. Cloud Foundry
    2. Cloudnode
    3. DotCloud
    4. Duostack

    Instalando o Node.js

    Nó vai funciona perfeitamente nos sistemas operacionais Linux, Macintosh e Solaris. No Windows, você pode instalá-lo usando a camada de emulação do Cygwin. Nenhuma das compilações no Windows é satisfatória, mas ainda é possível obter algo em execução.

    Opção 1: Construindo o nó da fonte.

    Usar faço para construir e instalar o node.js (execute o seguinte na linha de comando). Git é obrigatório.

     git clone --depth 1 git: //github.com/joyent/node.git nó do cd git checkout v0.4.11 exportação JOBS = 2 mkdir ~ / local ./configure --prefix = $ HOME / local / nó make make install echo 'export PATH = $ HOME / local / node / bin: $ PATH' >> ~ / .profile echo 'export NODE_PATH = $ HOME / local / nó: $ HOME / local / node / lib / node_modules' >> ~ / fonte de perfil ~ / .profile 

    Opção 2: instalando o Node.js do pacote

    Para usuários de Mac, você pode instalar o Node.js como um pacote em https://sites.google.com/site/nodejsmacosx/, que é bastante auto-explicativo.

    Instalação do Nó de Teste

    A fim de verificar a sua instalação bem-sucedida do Node, podemos experimentar um programa "Hello World" de console muito simples. Crie um arquivo chamado "test.js"e escreva o seguinte código nele.

     var sys = require ("sys"); sys.puts ("Hello World"); 

    Explicação de código:

    Carrega o sys classe em uma variável sys. Em seguida, usa o sys objeto para executar as tarefas do console. o sys.puts é um comando semelhante ao cout em C ++, portanto, para executar o script acima, vá ao prompt de comando e execute-o pelo comando abaixo:

     node test.js 

    Se a sua instalação for bem-sucedida, você receberá uma saída de hello world na tela.

    Criando um servidor HTTP

    Agora é hora de criar um "Hello World" via servidor web usando o Node.js. Aqui está o que vamos fazer - nós criar um servidor que produza um “Olá Mundo” para o localhost na porta 8080 não importa qual é a URL, dando uma ideia do que evento é.

    Os códigos:

     var sys = require ("sys"), my_http = require ("http"); my_http.createServer (função (solicitação, resposta) sys.puts ("Eu fui expulso"); response.writeHeader (200, "Tipo de Conteúdo": "texto / sem formatação"); response.write ("Hello World "); response.end ();). listen (8080); sys.puts ("Servidor em execução em 8080"); 

    Explicação de código:

    A parte mais interessante no Node.js é sua programação baseada em eventos. Para criar um servidor HTTP, precisamos do Biblioteca HTTP, então vamos para frente e adicionamos usando my_http. Criamos servidor pela função:

     my_http.createServer (function (request, response) ). listen (8080); 

    A função dada como o primeiro argumento é executada toda vez que um evento é acionado na porta 8080, então a função em si sugere que o nó escute um evento na porta 8080. Para detectar isso, eu adicionei um “Eu fui chutado” mensagem que será exibida na tela do console sempre que uma solicitação for recebida.

    o pedido objeto contém todas as informações sobre o pedido que foi feito para o servidor. Por exemplo, ele contém a string de URL. o resposta objeto é o objeto que lida com a resposta do servidor. Primeiro, definimos o cabeçalho da resposta como um texto / plain conteúdo e, em seguida, saídas “Olá Mundo“, depois termine o fluxo de saída. 200 é a resposta do status.

    Bem, o exemplo acima é um exemplo muito simples, mas podemos ver que qualquer URL que damos no navegador para o mesmo servidor, obtemos a mesma saída como “Olá Mundo”.

    Criando um servidor de arquivos estático simples

    Vamos criar um servidor de arquivos estático simples no próximo tutorial.

    Os códigos:

     var sys = require ("sys"), my_http = requer ("http"), caminho = requer ("caminho"), url = requer ("url"), filesys = requer ("fs"); my_http.createServer (função (solicitação, resposta) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), meu_path); path.exists (full_path, function (exists) ) if (! exists) response.writeHeader (404, "Tipo de conteúdo": "texto / sem formatação"); response.write ("404 Não encontrado \ n"); response.end (); else filesys.readFile (full_path, "binary", function (err, arquivo) if (err) response.writeHeader (500, "Tipo de Conteúdo": "texto / sem formatação"); response.write (err + "\ n"); response.end (); mais response.writeHeader (200); response.write (arquivo, "binário"); response.end ();););). listen (8080); sys.puts ("Servidor em execução em 8080"); 

    Explicação de códigos:

    O código acima é bastante simples, vamos discutir isso como blocos.

     var sys = require ("sys"), my_http = requer ("http"), caminho = requer ("caminho"), url = requer ("url"), filesys = requer ("fs"); 

    Todas essas bibliotecas são necessárias para o programa. Seu uso será claro no seguinte código.

     var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); 

    o pedido objeto tem os detalhes da solicitação como discutimos anteriormente. Nós usamos o parse função da classe URL que incluímos para obter o nome do caminho do URL de solicitação. Depois de obter o nome do caminho, nós o concatenamos com o caminho do diretório de trabalho atual para obter o caminho completo do arquivo.

    Para unir URLs, temos uma função chamada Junte-se na biblioteca de caminho.

     path.exists (full_path, function (exists)  

    Depois de obter o caminho completo, verificamos se o caminho existe pela função existe. Após a verificação, a função de retorno de chamada é chamada e passada como segundo argumento.

     if (! exists) response.writeHeader (404, "Tipo de Conteúdo": "text / plain"); response.write ("404 não encontrado \ n"); response.end ();  else filesys.readFile (full_path, "binário", função (err, arquivo) if (err) response.writeHeader (500, "Tipo de Conteúdo": "texto / sem formatação"); response.write ( err + "\ n"); response.end (); mais response.writeHeader (200); response.write (arquivo, "binário"); response.end (););  

    Agora, na função de retorno de chamada, se o arquivo não existir, enviamos um "404 Página Não Encontrada"erro.

    Se a página é encontrada, então lemos o arquivo pelo readFile função no sistema de arquivos. Também podemos ver a função de retorno de chamada para o readFile função definida lá em si. Se não houver erro na leitura do arquivo, ele será exibido. Se houver um erro, um status 500 será retornado com o texto do erro.

    Eu também recomendo envolver os códigos do tutorial anterior em uma função para que você possa usá-la no próximo tutorial ou para uso futuro.

     var sys = require ("sys"), my_http = requer ("http"), caminho = requer ("caminho"), url = requer ("url"), filesys = requer ("fs"); my_http.createServer (função (solicitação, resposta) var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), meu_path); path.exists (full_path, function (exists) ) if (! exists) response.writeHeader (404, "Tipo de conteúdo": "texto / sem formatação"); response.write ("404 Não encontrado \ n"); response.end (); else filesys.readFile (full_path, "binary", function (err, arquivo) if (err) response.writeHeader (500, "Tipo de Conteúdo": "texto / sem formatação"); response.write (err + "\ n"); response.end (); mais response.writeHeader (200); response.write (arquivo, "binário"); response.end (););); my_http. createServer (função (solicitação, resposta) var my_path = url.parse (request.url) .pathname; load_file (my_path, resposta);). listen (8080); sys.puts ("Servidor em execução em 8080"); 

    Fique ligado !

    Isso é tudo. Espero que isso lhe dê uma boa ideia do Node.js. No próximo artigo, vou mostrar como carregar e exibir o número de curtidas no Facebook usando o Node.js. Fique ligado!

    Nota do editor: Este post foi escrito por Geo Paul para Hongkiat.com. Geo é um desenvolvedor Web / iPhone independente que gosta de trabalhar com PHP, Codeigniter, WordPress, jQuery e Ajax. Ele tem 4 anos de experiência em PHP e 2 anos de experiência em desenvolvimento de aplicativos para iPhone..