Perdido em Node.Js. Por onde começar.
--
Aprender qualquer coisa é sempre difícil. A sensação de perdido de não saber por onde começar.
Para ajudar você, que quer (e vai) começar a desenvolver em Node.JS, fizemos um pequeno passo-a-passo com tudo o que você precisa para se achar nessa runtime criada por Ryan Dahl, em 2009, e uma das tecnologias web mais usadas hoje em dia.
Uma passo para trás
Antes de falarmos sobre Node.js, é importante fazermos um esclarecimento, ele não é um framework. Ele é uma runtime, ou seja, um set de bibliotecas escritas em JavaScript, que possibilitam a execução de JavaScript no servidor. Uma tecnologia server-side.
Observou a imagem acima? Dê uma olhada novamente… V8. Ele é uma engine JavaScript criada pelo Google, escrita em C++ e usada pelo Chrome. Todo código JavaScript que você irá criar, será interpretado pelo V8, o que significa que ele é muito rápido. Apenas 17% mais lento que um código C++ otimizado.
Bem, agora que fizemos essa rápida explicação sobre o que realmente é Node.js e uma breve imersão nas “entranhas” da runtime. Vamos ao que interessa*, como começar com Node.js.
*Alto lá! Sabemos que o que interessa é praticar, afinal é a melhor forma de aprender. Porém, não deixe de lado o interesse em saber como funciona as coisas. Isso irá dar base a sua prática e até facilitar o aprendizado. Portanto, leia a documentação oficial, que embora seja muito mais focada na API, ainda vale a leitura para aprender a usa o debugger, por exemplo. Vale também olhar o V8 e sobre como funciona o Event Loop. Por fim, o livro Hands-on Node.js, do portuga Pedro Teixera, é excelente e um dos poucos realmente focados no core do Node.js.
O Guia do Mochileiro em JavaScript
Bem, se você está aqui, jovem, você quer conhecimento. Mais especificamente sobre Node.js, e como todo novato (esse adjetivo não é algo ruim), você deve estar perdido. Esse guia é para evitar isso. Nada de ficar perdido.
Separamos ele em Sols (aproveite que você tem mais 39 minutos e 35,244 segundos por dia).
Sol 1
Main quest
- Instalar o Node.js e o NPM, o gerenciador de pacotes. No site tem tudo pra você completar essa tarefa: https://nodejs.org/en/download/
- Complete todos os desafios do NodeSchool: http://nodeschool.io/
Simples e direto, o conteúdo do NodeSchool irá te fazer utilizar os principais módulos do Node.
Sol 2
Main quest
Criar nossa primeira aplicação Web com o Express.
Para isso você irá precisar:
- Falar com a Anciã da vila, para saber o que usar. Ela irá te indicar o Express, o web-framework mais utilizado (dica: quando for aprender algo novo, sempre use o que for mais utilizado, pois isso significa muitas coisas. Uma delas é um vasto material);
- Instale o Express e faça o Hello World;
- Pronto! O dia de hoje foi moleza. Aproveite para completar alguma(s) side quest(s)!
Side quests
Se você estiver no level 1 em JavaScript:
- Não tem as referências nerds desse guia aqui, mas é muito mais abrangente e uma excelente fonte para aprender JavaScript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide
- Entre em guerra e faça os exercícios do CodeWars com JavaScript: http://www.codewars.com/
Se você já completou quests com JavaScript:
- Revise closures: http://javascriptissexy.com/understand-javascript-closures-with-ease/
- Veja OOP em JavaScript: http://javascriptissexy.com/oop-in-javascript-what-you-need-to-know/
- Veja o server.js do HabitRPG e aproveite para estudar ES2015: https://github.com/HabitRPG/habitrpg/blob/develop/website/server/server.js e https://babeljs.io/docs/learn-es2015/
Sol 3
Main quest
Se aquele foi o seu primeiro “hello world” na vida, a próxima missão pode parecer desafiadora. Portanto, complete todas as side quests anteriores. Assim você vai ganhar mais XP.
A nova main quest é: criar uma aplicação com Express e MongoDB
Vamos precisar do seguinte:
- Siga os tutorias do Zell Liew: parte 1 e parte 2 (código fonte)
Uma vez finalizado o tutorial, você irá ter uma noção básica de como criar CRUDs com Express e MongoDB. Porém, como quase todo tutorial, falta estruturar melhor a aplicação. Para aprender a estruturar, realize as side quests abaixo.
Side quests
- Refatore o código existente criando uma camada de controllers. Use como referência o código do hackaton-starter. Observe que no app.js estão os requires para os controllers que possuem o tratamento para cada rota da aplicação;
- Veja os exemplos do Express, começando pelo https://github.com/expressjs/express/blob/master/examples/route-middleware/index.js, que irá te mostrar como usar middlewares. Depois mais um exemplo de separação de rotas em https://github.com/expressjs/express/tree/master/examples/route-separation
Sol 4
Main quest
Recrie o RSS-Feed-Emitter
Chegou a hora de aprender novas práticas e para isso temos o super tutorial do Filipe. Digo super porque ele vai além do “fazer funcionar” e te dá o caminho das pedras para fazer coisas simples como publicar no npm, até mais complexas, como testar a sua aplicação.
São 19 passos (contando com os bônus) que precisam ser completados. Siga cada um e, caso não conheça algo, clique nos links que estão pelo tutorial para saber mais: https://github.com/filipedeschamps/rss-feed-emitter/issues/119
Side quests
- Realize os bônus do tutorial
- Treine mais como testar a sua aplicação completando esse tutorial: https://semaphoreci.com/community/tutorials/getting-started-with-node-js-and-mocha
- Mais sobre testes. Agora veja um pouco mais sobre o Sinon, para criar mocks, spies e stubs: https://www.codementor.io/nodejs/tutorial/unit-testing-nodejs-tdd-mocha-sinon
Sol 5
Main quest
Publique a sua aplicação com o PM2
Chegou a hora de publicar a aplicação criada em Sol 3. Para publicar iremos usar o PM2. Basta seguir esses passos que você irá criar o process.json e aprender os vários comandos que o PM2 possui.
Side quests
- Publique na Digital Ocean (ou numa máquina virtual sua): https://www.digitalocean.com/community/tutorials/how-to-use-pm2-to-setup-a-node-js-production-environment-on-an-ubuntu-vps
- Dê uma olhada no Cluster Mode: http://pm2.keymetrics.io/docs/usage/cluster-mode/
Concluindo
Se você conclui todas as quests, inclusive as sides, parabéns! Você agora já tem uma boa base para iniciar projetos com Node.js e, como você pode ter percebido, boa parte da jornada até aqui foi usando o Express.
Como dissemos no começo, é bom começar por ele, pois boa parte do uso de Node.js será, no final, através de algum framework Web.
Mas não se limite a isso e não esqueça de dar uma olhada no Hands-on. Ele vai mais a fundo no core do Node.js. Além disso, você pode fazer outros tipos de aplicações, como chats com o Socket.IO e aplicações desktops com o Electron.
Boa jornada! Ela está só começando…
Quer conversar com a gente sobre Node.js? Estaremos na NodeConf BR. Passe no nosso estande para falarmos mais sobre Node.js e tecnologia no geral. :)