-
Notifications
You must be signed in to change notification settings - Fork 0
1. Criando o projeto básico com NodeJS
Primeiramente é necessário instalar o NodeJS e NPM
Cheque se você já não possui node
e npm
instalados. Execute os seguintes trechos de código no seu terminal:
NodeJS
node -v npm -v
Projeto completo feito nesse tutorial para download.
Para inicio, vamos criar a pasta e inicializar o npm
onde vamos trabalhar no nosso projeto.
- Criar pasta do projeto (Ex.: simpleNodeProject)
- E criar o arquivo
index.js
dentro da pasta
Windows
mkdir simpleNodeProject cd simpleNodeProject type nul > index.js
Linux
mkdir simpleNodeProject cd simpleNodeProject touch index.js
- Criar o arquivo
package.json
sem perguntas
-
Obs.: Caso queira criar o
package.json
sem a criação automática, basta tirar o-y
do comando
NodeJS
npm init -ynpm init
Ele te pedira as seguintes informações (as informações mostradas dentro dos parenteses será a informação usada por padrão caso aperte ENTER
):
- package name: (nome_da_pasta)
Nome do pacote/projeto
- version: (1.0.0)
Atual versão do seu projeto
- description:
Descrição do seu projeto. Não é obrigatório.
- entry point: (index.js)
Entry point é o arquivo javascript que será invocado inicialmente, onde a execução começa.
- test command:
Comando que será executado para testes
npm test
. Não é obrigatório, inicialmente não vamos utilizar.
- git repository:
Link do repositório do git utilizado. Não é obrigatório.
- keywords:
São as palavras chave do seu projeto. Não é obrigatório. Insira separando as palavras por vígula.
- author:
Nome do autor do projeto. Não é obrigatório.
- license: (ISC)
Tipo de licença utilizada no seu projeto. Por padrão os novos projetos utilizam ISC, que é uma licença de software livre.
- Is this ok?
Confirmação dos dados, ´ENTER´ para finalizar (´yes´), digite ´no´ caso não.
Agora que temos nossa pasta pronta e o npm
iniciado, vamos instalar alguns pacotes nos ajudar a utilizar o NodeJS:
- Instalar os pacotes express, morgan e consign para a aplicação.
- E instalar o pacote Nodemon pra usarmos no desenvolvimento.
NodeJS
npm i express morgan consign --save npm i nodemon --save-dev
Breve explicação sobre cada pacote que acabamos de instalar:
Para aplicativos da web o Express é um framework para aplicativo da web do Node.js mínimo e flexível que fornece um conjunto robusto de recursos para aplicativos web e móvel. E para APIS, o Express, com uma miríade de métodos utilitários HTTP e middleware a seu dispor, criar uma API robusta é rápido e fácil.
Não é obrigatório, mas facilita muito a vida de quem vai programar utilizando NodeJS. Para esses artigos vamos usá-lo bastante.
Morgan é um middleware para NodeJS responsável por gerar logs de requisição (HTTP request), também não é obrigatório.
O Nodemon é um utilitário que acompanha e identifica alterações feitas no código fonte do seu projeto, e reinicia automaticamente o servidor, é muito útil para quando estamos utilizando o servidor para desenvolver, vai nos poupar tempo de ficar reiniciando o servidor toda vez que fizer uma alteração e precise testar.
O Consign facilita o desenvolvimento de aplicativos com separação lógica de arquivos e carregamento automático de scripts. Ele pode ser usado para autoload de modelos, rotas, esquemas, configurações, controladores, mapas de objetos, entre muitas outras funções.
Coloque esse trecho de código no arquivo criado anteriormente index.js
//Importamos o módulo express
var express = require('express');
//Invocamos a função express e passamos ela pra variável app.
//A partir de agora app vai ser um objeto com todos os métodos
//públicos de express.
var app = express();
//Dizemos que a variável port precisa receber o valor de 'process.env.PORT'
//ou, se esse valor não existir é igual a '3000'
var port = process.env.PORT || 3000;
//Configuramos nossa primeira rota app.get. Definimos que quando o usuário
//acessar a rota '/' ou seja 'http://localhost:3000/', ele vai receber como
//resposta o nosso 'Hello World!'.
app.get('/', function (request, response) {
response.send('Hello World!');
});
//Dizemos ao nosso servidor pra escutar na porta 3000 com o app.listen
app.listen(port, function () {
console.log('Servidor rodando em http://localhost:%s', port);
});
E para executar/rodar nosso servidor, basta executar o comando abaixo no terminal:
NodeJS
node index.js
E então acessar o localhost:3000
em seu navegador.
Vamos criar as pastas bootstrap
e uma routes
dentro da pasta do projeto. E então o arquivo app.js
na pasta bootstrap
e o arquivo index.js
na pasta routes
.
Windows
mkdir bootstrap mkdir routes cd bootstrap type nul > app.js cd.. cd routes type nul > index.js
Linux
mkdir bootstrap mkdir routes touch bootstrap/app.js touch routes/index.js
Em seguida modificar nossos novos arquivos bootstrap/app.js
e routes/index.js
. E nosso arquivo index.js
que está na pasta principal, ficando da seguinte maneira:
O arquivo bootstrap/app.js
será nosso arquivo de inicialização dos módulos do nosso projeto.
var express = require('express');
var app = express();
var port = process.env.PORT || 3000;
app.listen(port, function () {
console.log('Servidor rodando em http://localhost:%s', port);
});
module.exports = app;
Aqui criamos nossa rota e exportamos uma função que recebe como parâmetro app
que deve ser nossa instancia do Express, no arquivo bootstrap/app.js
module.exports = function (app) {
app.get('/', function (request, response) {
response.send('Hello World!');
});
}
Agora nosso arquivo index.js
(da pasta principal) fica responsável apenas por iniciar nosso servidor e a configuração fica lá no bootstrap/app.js
.
var express = require('./bootstrap/app');
Mas já que nosso arquivo index.js
(da pasta principal) é responsável por subir nosso servidor vamos renomeá-lo para server.js
, agora pra subir deveríamos rodar node server.js
, mas por termos renomeado para o arquivo para server.js
, agora podemos executar somente npm start
no terminal, esse comando quando não é declarado no seu package.json
ele roda node server.js
por padrão.
Windows
ren index.js server.js
Linux
mv index.js server.js
NodeJS
npm start
Apesar de funcionar sem precisar realizar essa alteração, é uma boa trocar o nome do main
no arquivo package.json
de index.js
para server.js
NodeJS
"main": "server.js",
Quando alterarmos nosso código teríamos que reiniciar nosso servidor toda vez, e foi pra evitar isso que instalamos o Nodemon, vamos criar um script para facilitar a inicialização dele. Dentro do arquivo package.json
, na parte de scripts, adicione a linha de código:
NodeJS
"dev": "nodemon server.js"
Ao fim seu arquivo package.json
deve estar algo parecido com isso na parte de scripts:
NodeJS
"scripts": { "test": "echo \"Error: no test specified\" && exit 1", "dev": "nodemon server.js" }
Pra começarmos a desenvolver podemos apenas rodar:
NodeJS
npm run dev
Para isso vamos usar o Morgan que instalamos anteriormente. Vamos configurar nosso pacote para logs, e ele é bem simples, ele funciona como um middleware para o express
, então pra deixarmos ele funcionando vamos alterar nosso arquivo bootstrap/app.js
, adicionando o seguinte (linhas com comentários do lado):
var logger = require('morgan') // Primeiro chamamos o pacote
var express = require('express');
var app = express();
app.use(logger('dev')) // Depois definimos como middleware
var port = process.env.PORT || 3000;
app.listen(port, function () {
console.log('Servidor rodando em http://localhost:%s', port);
});
module.exports = app;
Basicamente ele irá imprimir uma mensagem no console (terminal) onde está rodando o servidor de acordo com as configurações passadas, no caso como estamos usando app.use(logger('dev'))
, ele vai imprimir as requisições feitas, etc. Por exemplo, quando acessamos o diretório raiz onde ele nós mostra o Hello World!
, no console aparece algo assim: GET / 304 2.445 ms - -
, que seria :method :url :status :response-time ms - :res[content-length]
É possível ver outras configurações de uso no github do Morgan.
Lembra do nosso arquivo de rotas criado anteriormente routes/index.js
? Vamos configurá-lo para que funcione. Agora que vamos usar o Consign. No arquivo ´bootsrap/app.js´, adiocione os trechos de código (os que possuem comentário):
var logger = require('morgan');
var express = require('express');
var consign = require('consign'); // Primeiro chamamos o módulo
var app = express();
app.use(logger('dev'));
//Antes de exportarmos o app configuramos o consign
consign().include('routes').into(app);
module.exports = app;
var port = process.env.PORT || 3000;
app.listen(port, function () {
console.log('Servidor rodando em http://localhost:%s', port);
});
Basicamente, invocamos o Consign e dizemos pra ele carregar todas as funções que estão dentro da pasta routes
, passando o app
como parâmetro, assim não é necessário ficar carregando todos os arquivos de rotas manualmente no arquivo bootstrap/app.js
.
O Consign pode ser utilizado também para fazer o autoloads de outras configurações, controladores, etc.
Sendo assim, agora temos o projeto parcialmente pronto e organizado.