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.

Para quem curte a abordagem rails, dá para dar uma estudada no yeoman. Se for fazer algo manual, recomendo dar uma olhada no ejs. Tem um tutorial rápido de ejs + express aqui.

E sobre testes?

Tbm é um assunto amplo, pois temos vários tipos de teste (ex: end to end, unitário, etc).

Para testes de API dá para usar o Frisby, testes unitários recomendo o mocha ou jasmine.

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