Começando com NodeJS

Imagem para Começando com NodeJS

JavascriptPostado em  4 min de leitura

Lançado em 27 de maio de 2009, sendo criado por Ryan Dahl, juntamente com alguns colaboradores. O node.js surgiu para facilitar o desenvolvimento de aplicações real-time e de alta escalabilidade. Ele utiliza o mecanismo V8 Javascript, que é utilizado pela Google no navegador Chrome. A google criou esse interpretador escrito C++, e é possível fazer o download desse mecanismo e integrá-lo aonde desejar. Um mecanismo javascript, interpreta e executa o código. Assim com o V8, essa interpretação e execução é feita no servidor.

O pessoal de front-end, fica muito grato com a existência da plataforma Node.js e assim, conseguindo rodar javascript, no lado do servidor. É isso mesmo, para quem já utiliza a linguagem javascript, a curva de aprendizado será muito pequena. Portanto, irá desenvolver em javascript na plataforma do Node.js.

O Node.js possui vários módulos nativos que possibilitam trabalhar com recursos I/O (entrada/saída) no servidor. Podendo assim, ter várias bibliotecas a sua disposição para trabalhar com: HTTP, DNS, WebSockets e mais. Além de manipular arquivos, criptografias e mais. Com a vantagem desses eventos serem assíncronos.

Node foundation

O io.js, oficialmente lançado em dezembro de 2014, começou com um fork do projeto do Node.js, que hoje é mantido pela empresa Joyent, onde Dahl, trabalha. A iniciativa foi tomada por Fedor Indutny, um dos principais membros da comunidade Node.js, que estava insatisfeito com o conselho consultivo da Joyent. Outros importantes colaboradores da comunidade apoiaram a ideia, como: Trevor Norris, Isaac Z. Schlueter e Mikeal Rogers. Schlueter, deixa claro no FAQ do blog do io.js, que o fork é para prover um espaço para que os contribuidores do núcleo Node possa continuar fazendo o seu trabalho de melhoria.

Uma das principais queixas, era a falta de versões no projeto do Node.js. E com o io.js, a intenção era de lançar com crescente regularidade, versões que são compatíveis com o ecossistema npm construído até o momento para o Node.js.

Em 16 de junho de 2015, a Linux foundation anunciou que Node.js e io.js, iriam oficialmente fundir suas bases de código e continuar o trabalho como Node foundation e seria hospedado pela Linux Foundation.

Hoje, já estamos na versão 5.3.0 . Realmente o o ritmo de contribuições com o io.js, acelerou muito as melhorias. Antes da fusão, era curioso ver no github. Assim, vemos o poder da comunidade. Parabéns aos envolvidos. :)

Baseado em Node.js

Tem muitos projetos que são baseados na plataforma e nos ajudam no dia a dia. Alguns deles são:

  • Grunt ou Gulp: Automatizador de tarefas, muito conhecido por quem desenvolve o front-end. O mesmo nos ajuda nas tarefas de minificação de arquivos, compilação e mais.
  • MeteorJS: É um framework web JavaScript open-source escrito em Node.js.
  • KarmaJS - Uma ferramenta que gera um servidor Web que executa o código fonte com o código de teste para cada um dos navegadores conectados.

Mesmo que ainda não tenha usado o Node.js, no lado do servidor, é possível utilizá-lo para outras tarefas. Principalmente, quem é front-end, é quase obrigatório tê-lo instalado na máquina, por causa dos automatizadores de tarefas, citados acima. :)

Threads (Usuários fazendo requisições para a aplicação)

Em sistemas com arquitetura de Threads Bloqueantes, que é o caso dos desenvolvidos em JAVA ou .NET, por exemplo. Quando há acessos simultâneos para o mesmo recurso, eles são enfileirados. Assim, cada um deles utiliza o recurso um de cada vez, garantindo a integridade dos dados, por ter o controle de acesso único. Esse conceito é muito utilizado em aplicações bancárias e e-commerce.

O Node.js segue o conceito de Threads Não-Bloqueantes, portanto, é totalmente single-thread. Isso traz como vantagem uma alta escalabilidade para aplicações que necessitam de um processamento sem controle de processamento concorrente (threads), pois não há um agente bloqueando e enfileirando threads. Nos casos de aplicações que necessitem de uma resposta rápida, por exemplo, consultas frequentes no banco de dados, o node.js faz esse trabalho muito bem, como: Games Multiplayer, Web Services, Blogs, Redes sociais, Web Analytics, Chats e mais.

CommonJS

O Node.js utiliza o padrão CommonJS para organização e carregamento dos módulos. Para carregar um módulo, você fará uso da função require.

require('nome-do-modulo');

E o módulo terá que utilizar as variáveis globais: exports ou module.exports.

module.exports = function() {
	// script do módulo
}

Rodando um exemplo

Primeiramente, precisará ter o node instalado, se não tiver é só acessar o site e baixar. Depois vamos dar uma conferida no terminal:

node -v

Com o editor de sua preferência, vamos criar o arquivo exemplo.js:

var http = require('http');
http.createServer(function(req,res) {
  res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
  res.end('Exemplo com Node.js');
}).listen(4000);
console.log('Servidor rodando no endereço localhost:4000');

No terminal, você vai até onde está o arquivo ou escreve todo o caminho para executá-lo. No caso abaixo, vamos supor que estou na pasta onde se encontra o arquivo, sendo apenas necessário digitar:

node exemplo.js

Acessando no navegador da sua preferência, o endereço http://localhost:4000, poderemos ver o texto "Exemplo com Node.js". E assim, temos um exemplo simples com o Node.js.

Conclusão

Quer deixar um front-ender feliz, é só dizer que ele pode escrever em javascript, para rodar no servidor. E ele vai a loucura, se disser que pode usar os recursos do ES6. E isso é possível com a nossa querida plataforma Node.js. Acima, você pode conferir algumas informações e nos próximos artigos, terá mais algo prático. Até lá.