Muitas pessoas querem estudar Node.js pela simplicidade de trabalhar com processamento assíncrono e por usar JavaScript em server side. JavaScript é uma linguagem simples com foco no desenvolvimento Client side, mas quando colocamos o JavaScript do lado do servidor, começam a surgir algumas dúvidas como: estrutura do software, como criar biblioteca, qual Framework usar e muitas outras.
Dando uma olhada no Github, vi que há muitos softwares que se parecem uma linguiça, com mais de 500 linhas em um mesmo arquivo. Aí me vem a seguinte pergunta: “JavaScript não é orientado a objeto?”. É claro que sim! Então, tem alguma coisa errada, pois uns dos paradigmas é dividir funcionabilidades, nas quais cada modulo faça sua parte e, ao usar todas elas, faz o que foi proposto.
Então, vamos seguir um exemplo simples:
- Conectar-se a um banco de dados;
- Fazer insert, update e delete;
- Desconectar-se do banco de dados.
O exemplo usado encontra-se no repositório “example-nodejs-mongodb”, na minha conta do Github. Nele eu vou usar o banco de dados MongoDB, por ser mais simples de instalar e usar (pois é um banco de dados NoSQL). Pressupondo que o MongoDB já esteja instalado em seu sistema operacional (para usuários Linux, basta baixar o source do MongoDB no site e depois rodar o binario mongod; já para usuários Windows, não tenho experiência no ambiente, mas achei este tutorial que pode ajudar). A instalação do NodeJS e NPM no Linux e Windows é uma operação relativamente simples, por isso não vou detalhar todo o processo.
A primeira coisa que temos que ter em mente é que tudo o que é escrito dentro de um package (próprio) não é levado para fora. Você precisa especificar o que realmente quer expor do seu package. No arquivo mongocon.js temos um exemplo de como trabalhar com exports no Node.JS:
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/avelinous');
exports.mongoose = mongoose;
No exemplo acima, estou expondo toda a classe do mongoose, mas eu poderia restringir export só alguns metodos por exemplo:
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/avelinous');
exports.mongoose_schema = mongoose.Schema;
Assim, podemos limitar o acesso dentro de um package. Caso queira fazer um package e expor publicamente via NPM, basta criar um package.json juntamente com o seu source, assim pode colocar as dependências do seu package e em qual versão do NodeJS ele roda. Veja o exemplo de um package.json:
{
"name": "mongo_test",
"description": "A package using mongoose ODM",
"author": "Thiago Avelino <thiagoavelinoster AT gmail DOT com>",
"dependencies": {
"mongoose": ">= 2.7.0"
},
"engine": "node 0.6.19"
}








