um projeto inicial com suporte a sessões, Template engine (por padrão ele inclui o
framework Jade) e um CSS engine (por padrão ele utiliza CSS puro). Para visualizar
todas as opções execute o comando: express -h
Figura 4.2: Opções do Express em modo CLI.
4.3
Criando um projeto de verdade
Vamos criar uma aplicação de verdade com Express? Dessa vez, criaremos um pro-
jeto que será trabalhado durante os demais capítulos do livro, e criaremos uma
agenda de contatos em que seus contatos serão integrados em um web chat fun-
cionando em real-time.
Os requisitos do projeto são:
O usuário deve criar, editar ou excluir um contato;
O usuário deve se logar informando seu nome e e-mail;
O usuário deve conectar ou desconectar no chat;
O usuário deve enviar e receber mensagens no chat somente entre os contatos
online;
O nome do projeto será Ntalk (Node talk) e utilizaremos as seguintes tecnologias:
Node.js: Backend do projeto;
MongoDB: Banco de dados NoSQL orientado a documentos;
33
4.3. Criando um projeto de verdade
Casa do Código
Redis: Banco de dados NoSQL para estruturas de chave-valor;
Express: Framework para aplicações web;
Socket.IO: Módulo para comunicação real-time;
MongooseJS: ODM (Object Data Mapper) MongoDB para Node.js;
Node Redis: Cliente Redis para Node.js;
EJS: Template engine para implementação de html dinâmico;
Mocha: Framework para testes automatizados;
SuperTest: Módulo para emular requisições que será utilizado no teste de in-
tegração;
Nginx: Servidor Web de alta performance para arquivos estáticos;
Exploraremos estas tecnologias no decorrer desses capítulos, então muita calma
e boa leitura!
Caso você esteja com pressa de ver este projeto rodando, você pode cloná-
lo através do meu repositório público: (https://github.com/caio-ribeiro-pereira/
livro-nodejs) .
Para instalá-lo em sua máquina faça os comandos a seguir:
git clone git@github.com:caio-ribeiro-pereira/livro-nodejs.git
cd livro-nodejs/projeto/ntalk
npm install
npm start
E depois acesse no seu navegador favorito o endereço:
http://localhost:3000
Agora se você quer aprender passo a passo a desenvolver este projeto, continue
lendo este livro, seguindo todas as dicas que irei passar.
Criaremos o diretório da aplicação já com alguns recursos do Express que é ge-
rado a partir de seu CLI. Para começar, execute os seguintes comandos:
express ntalk --ejs
cd ntalk
npm install
Parabéns! Você acabou de criar o projeto ntalk.
34
Casa do Código
Capítulo 4. Iniciando
com o Express
4.4
Gerando scaffold do projeto
Ao acessar o diretório do projeto, veja como foi gerado o seu scaffold:
Figura 4.3: Estrutura do Express.
package.json: contém as principais informações sobre a aplicação como:
nome, autor, versão, colaboradores, url, dependências e muito mais.
public: pasta pública que armazena conteúdo estático, por exemplo: ima-
gens, css, javascript etc.
app.js: arquivo que inicializa o servidor do projeto, através do comando:
node app.js.
routes: diretório que mantém todas as rotas da aplicação.
views: diretório que contém todas as views que são renderizadas pelas rotas.
Ao rodarmos o comando npm install, por padrão ele instalou as dependên-
cias existentes no package.json. Neste caso, ele apenas instalou o Express e o EJS
(Embedded Javascript).
Vamos fazer algumas alterações nos códigos gerados pelo scaffold do Express. O
primeiro passo será criar uma descrição sobre o nosso projeto e definir false o
atributo private. Isso tudo será modificado no arquivo package.json, veja o
código abaixo como ficou:
35
4.4. Gerando scaffold do projeto
Casa do Código
{
"name": "ntalk",
"description": "Node talk - Agenda de contatos",
"private": false,
"version": "0.0.1",
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "3.4.7",
"ejs": "0.8.5"
}
}
Também modificaremos o app.js, deixando-o com o mínimo de código pos-
sível para explicarmos em baby-steps o que realmente será necessário no desenvolvi-
mento deste projeto. Recomendo que apague o código gerado pelo scaffold e coloque
o código abaixo:
var express = require('express')
, routes = require('./routes');
var app = express();
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.static(__dirname + '/public'));
app.get('/', routes.index);
app.get('/usuarios', routes.user.index);
app.listen(3000, function(){
console.log("Ntalk no ar.");
});
Essa versão inicialmente atende os requisitos mínimos de uma aplicação Express.
A brincadeira começa quando executamos a função express(), pois o seu retorno
habilita todas as suas funcionalidades de seu framework, pelo qual armazenamos na
variável app.
Com app.listen() fazemos algo parecido com o http.listen(), ou seja,
ele é um alias responsável por colocar a aplicação no ar.
36
Casa do Código
Capítulo 4. Iniciando com o Express
Os métodos app.get(), app.post(), app.put() e app.del() são
funções de roteamento, cada uma delas associa seus respectivos métodos do pro-