Node: iniciando
Iniciar em node é bem simples. Tendo o pacode instalado (installer aqui), ele já vem com o NPM (gerenciador de pacodes do node).
Um hello world seria:
//Não precisa de ";" no final
console.log("Hello World")
E para executar só precisa rodar:
node nomeDoArquivoCriado.js
Ok, e como estruturar um projeto?
Criando do zero, vc pode rodar npm init
, esse modo iterativo vai criar um arquivo package.json
onde ficam as definições de scripts a serem executados, dependencias, etc.
O package.json
é similar ao pom.xml (java), Gemfile (ruby), entre outros.
O arquivo gerado com npm init
é similar a:
{
"name": "sample",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Porém, só o conteudo abaixo é obrigatório:
{
"scripts" : {
"start" : "node index.js"
}
}
Agora para rodar é só chamar npm start
(o npm vai procurar o script "start" no package.json
)
E como incluir dependencias?
Fácil. Exemplo: npm install log4js --save
. Nota: nas novas versões do npm a flag --save
não será necessária.
O package.json
vai ser atualizado com a dependencia:
{
...
"dependencies": {
"log4js": "^1.1.1"
}
}
…e para chamar no código fica:
const log4js = require("log4js"), //a função "require" serve como import
logger = log4js.getLogger("index")
logger.debug("Hello world")
E como posso iniciar minha API?
Dá uma olhada na documentação do express, está em português mesmo.
Futuramente vale estudar o hapi ou o koa. Tem um comparativo aqui.
Que IDE eu posso usar?
Recomendo o Visual Studio Code. Possui syntax highlight, debug com break points, é leve, tem plugins, é gratuíto, integrado com git.
Se vc estiver disposto a pagar, tem o WebStorm da JetBrains (mesma empresa do Intellij).
Pq node? Onde usar? Cases
Bom, eu explico isso nesse vídeo:
Como gerar telas?
Hmm, esse assunto é muito amplo e varia dependendo da lib selecionada.
E sobre testes?
Tbm é um assunto amplo, pois temos vários tipos de teste (ex: end to end, unitário, etc).
Particularmente eu curto mais testes end to end com docker-compose (assunto para um post futuro).
CoffeeScript? TypeScript? ClojureScript?
O node / javascript é uma linguagem interpretada, isto é, ela não é compilada.
Então, CoffeeScript / TypeScript / ClojureScript são transpiladores: formas diferentes de escrever o javascript, para ser menos verboso, fazer checagem de tipo, etc. Mas no fim o código gerado ainda vai ser javascript.
Eu particularmente prefiro usar javascript direto, é mais fácil para debugar / fazer troubleshooting depois. Mas isso é opção de cada dev/time.
Next Steps
-
Ver o livro do grande Waldemar Neto: construindo apis testaveis com node.js [ github | leanpub | youtube ]
-
Acompanhar algum meetup. Em Porto Alegre temos [ meetup | github | twitter ]
-
Talvez criar um chatbot? Fazer deploy do projeto no heroku?
… e um pouco de humor
Referencias
Dúvidas? Comentários? Algum assunto para detalhar melhor? Deixe o feedback nos comentários