Conceitos – O que é o Node.JS
O Node.JS é uma plataforma leve para você construir aplicações servidoras em linguagem Javascript e pode ser comparado, em um primeiro momento de análise, a tecnologias como o Java EE Web ou ASP.NET. Ao mesmo tempo, Node.JS é uma tecnologia minimalista. Ele é muito leve e não traz consigo servidores Web ou servidores de aplicação pesados, como o Java EE Web ou o ASP.NET. No Node.JS, você começa leve e coloca novos módulos apenas quando necessário.
O JavaScript no lado do servidor pode ser um conceito novo para todos que trabalharam exclusivamente com o JavaScript no lado do cliente, mas a idéia em sí não é tão absurda – porque não usar a mesma linguagem de programação no cliente que você usa no servidor?
Em nível detalhado, o Node.js é uma plataforma construída sobre o motor JavaScript do Google Chrome para construir aplicações de Internet rápidas e com excelente escalabilidade. O motor JavaScript V8 é o motor que a Google usa com seu navegador Chrome. A engine JavaScript do Chrome realmente interpreta o código JavaScript e o executa. Com o V8 a Google criou um interpretador ultra-rápido escrito em C++.
O Node.js usa um modelo de I/O direcionada a eventos assíncronos que o torna leve e eficiente, ideal para aplicações em tempo quase real com troca intensa de dados através de dispositivos distribuídos. Em termos arquiteturais, o Node é um servidor de programas e roda sobre um pequeno motor JavaScript.
A figura abaixo representa a arquitetura minimalista do Node.JS
Pré-Requisitos para este tutorial:
- Node/NPM (Instalado via pacote de instalação em https://nodejs.org/en/download/)
- yo, gulp e bower (instalado via linha de comando via o comando: npm install -g yo gulp bower)
- Notas: Este laboratório foi testado com o Node.JS 5.7 e 3.6 em ambiente OS/X e Windows
// Carga de modulos em Javascript. Aqui estou carregando o modulo HTTP, que dar | |
//suporte a requisicoes em protocolo HTTP | |
var http = require('http'); | |
// Nesta linha eu crio um servidor Web, que irá ouvir requisições no porto 8080. | |
// Toda conexao a esse servidor será tratado por uma função criada pelo desenvolvedor. | |
// Esta funcao gera um cabeçalho HTTP 200 (OK) e então ecoa uma mensagem para | |
//o navegador que originou a requisição. | |
http.createServer(function (req, res) { | |
res.writeHead(200, {'Content-Type': 'text/plain'}); | |
res.end('Meu primeiro programa Node.JS!'); | |
}).listen(8080); | |
// Nesta linha eu faço um log no console do servidor onde o Node.JS foi iniciado | |
console.log('Servidor rodando em http://localhost:8080/'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Carga de modulos em Javascript. Aqui estou carregando o modulo HTTP, que dar | |
//suporte a requisicoes em protocolo HTTP | |
var http = require('http'); | |
// Nesta linha eu crio um servidor Web, que irá ouvir requisições no porto 8080. | |
// Toda conexao a esse servidor será tratado por uma função criada pelo desenvolvedor. | |
// Esta funcao gera um cabeçalho HTTP 200 (OK) e então ecoa uma mensagem para | |
//o navegador que originou a requisição. | |
http.createServer(function (req, res) { | |
res.writeHead(200, {'Content-Type': 'text/plain'}); | |
res.end('Meu primeiro programa Node.JS!'); | |
}).listen(8080); | |
// Nesta linha eu faço um log no console do servidor onde o Node.JS foi iniciado | |
console.log('Servidor rodando em http://localhost:8080/'); |










// Aplicacao minima Node.JS com MySQL | |
// Carrega modulos express em mysql | |
var express = require('express'), | |
mysql = require('mysql'); | |
// Inicializa conexao com o banco de dados e servidor Web express | |
var connection = mysql.createConnection({ | |
host : 'localhost', | |
user : 'root', | |
password : 'root' | |
}); | |
var app = module.exports = express.createServer(); | |
// Configura o banco de dados | |
connection.query('CREATE DATABASE IF NOT EXISTS test', function (err) { | |
if (err) throw err; | |
connection.query('USE test', function (err) { | |
if (err) throw err; | |
connection.query('CREATE TABLE IF NOT EXISTS users(' | |
+ 'id INT NOT NULL AUTO_INCREMENT,' | |
+ 'PRIMARY KEY(id),' | |
+ 'name VARCHAR(30)' | |
+ ')', function (err) { | |
if (err) throw err; | |
}); | |
}); | |
}); | |
// Configuracao da aplicacao | |
app.use(express.bodyParser()); | |
// Requisicao / redireciona para o arquivo index.html | |
app.get('/', function(req, res) { | |
res.sendfile('index.html', { root: __dirname }); | |
}); | |
// Atualiza o banco de dados MySQL quando a rota /users for chamada. | |
// Ela é chamada como evento de submissao do formulario index.html | |
app.post('/users', function (req, res) { | |
connection.query('INSERT INTO users SET ?', req.body, | |
function (err, result) { | |
if (err) throw err; | |
res.send('Usuario adicionado ao banco de dados com ID: ' + result.insertId); | |
} | |
); | |
}); | |
// Express Ouve na porta 3000 | |
app.listen(3000); | |
console.log("Servidor express ouvindo no porto 3000", app.address().port, app.settings.env); |
<!doctype html> | |
<html> | |
<head> | |
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> | |
<script type="text/javascript"> | |
$(document).ready(function () { | |
$('#user-submit').click(function () { | |
var payload = { | |
name: $('#user-name').val() | |
}; | |
$.ajax({ | |
url: "/users", | |
type: "POST", | |
contentType: "application/json", | |
processData: false, | |
data: JSON.stringify(payload), | |
complete: function (data) { | |
$('#output').html(data.responseText); | |
} | |
}); | |
}); | |
}); | |
</script> | |
</head> | |
<body> | |
<h3>Entre o nome de um usuario que vai ser gravado no banco de dados MySQL:</h3> | |
<input id="user-name" type="text" /> | |
<input id="user-submit" type="submit" /> | |
<p id="output"></p> | |
</body> | |
</html> |
{ | |
"name": "AloMundoNodeMysql" | |
, "description": "Demonstração de como usar o Express e MySQL juntos" | |
, "author": "Modificado por *Seu nome*" | |
, "version": "0.0.1" | |
, "private": true | |
, "dependencies": { | |
"express": "~2.5", | |
"mysql": "~2.0" | |
} | |
} |
- What is Node, Brett McLaughlin
- Node.js, The Right Way, Jim Wilson
- Aplicações Web Real Time com Node.JS, Caio Ribeiro (em português)
Bom artigo! Simples e resumido sobre os princípios básicos do Node.js. Pra ser “primeiros passos” e já deixar um app com rest e mySQL está EXCELENTE! (RS)… Primeira vez que vejo uma abordagem sobre depuração de código node, o que pra mim foi a melhor parte. Se for falar mais sobre o assunto, sugiro abordar sobre middlewares, que é onde tive/tenho as maiores dificuldades.
CurtirCurtir
Oi, Pedro. Obrigado pelo comentário. Vou colocar aqui na lista para preparar um outro blog em breve sobre middlewares em Node.
Se tiver alguma tecnologia específica de middleware em mente, eh so falar 🙂
CurtirCurtir