Este portal foi desativado, veja meus outros projetos:

Site da Psicóloga e Psicoterapeuta Bianca Galindo terapia online

segunda-feira, 20 de agosto de 2012

Utilizando módulos em sua aplicação node

Pessoal, vamos trabalhar com módulo em nossa aplicação node. Vou começar com o código abaixo.
http = require('http');
Essa instrução carrega o módulo http, um módulo do sistema(core module).
O carregamento de módulos em node é feito pela função require. Para quem vem do python é como executar o código:
import os as b
Módulos são sub programas que executão tarefas bem definidas. Nós esperamos com nosso exemplo que o módulo http permitam que utilizemos os protocolo http. Os módulos do sistema do node têm suas funções documentadas na página da API do node[1].

Core Module

São módulos embutidos no node. Eles são carregados pela declaração sem prefixo do nome do módulo. Ex: require('buffer');

Módulos declarados dessa forma dão preferência aos módulos do sistema, mesmo tendo um arquivo buffer.js na raiz de nossa aplicação.

Módulos da aplicação.

É comum uma grande aplicação dividir suas tarefas em módulos para atender aos requisitos do sistema, tomando como exemplo uma aplicação com o arquivo circle.js (expões funções matemáticas aplicadas a círculos) em sua raiz. Esse arquivo corresponde a um módulo da aplicação e pode ser chamado da seguinte forma:
circle = require('./circle');
circle = require('circle');
circle = require('/path/to/app/circle');
todas são formas válidas de carregar módulos na aplicação.

Prefixos './' '/'

Os prefixos determinam a localização do módulo, '/' utilizam o caminho absoluto do módulo. './' utilizam o caminho relativo a partir do caminho atual.

dica: Quando o módulo não vem prefixado e há um conflito de nomes com módulos do sistema, os módulos do sistema ganham preferência no carregamento.

Extensão dos módulos

Quando os módulos não tem a extensão explícita o node procura pelas seguintes extensões em sua devida ordem :

  • .js : o arquivo é iterpretado como um arquivo de código fonte javascript;
  • .json : é utilizado um analisador JSON no arquivo;
  • .node: interpretado como um addon através do dlopen.

Módulos do node_module


Quando o arquivo não é prefixado e não é nativo do node(core modules), o node busca o módulo na pasta node_module. A busca percorre toda o caminho de diretórios do código executado até a raíz.

Fica mais fácil de entender com o exemplo abaixo. ( vamos supor que código é executado em /path/to/app/code.js)
require('mymodule');
Como mymodule não é um módulo do sistema ele então pesquisa na pastas node_module. Essa pesquisa é recursiva por todo o caminho iniciando no diretório atual até atingir a raiz.
/path/to/app/node_modules/mymodule.js
/path/to/node_modules/mymodule.js
/path/node_modules/mymodule.js
/node_modules/mymodule.js

Diretórios como módulos

Quando um diretório da aplicação contém um arquivo package.json ele é também é considerado um módulo e pode ser carregado como outros módulos.
draw = require('./draw');
Ele busca pelo arquivo: ./draw/package.json que contém informações do módulo e qual arquivo carregar. Caso não exista esse arquivo mas exista um index.js ele é utilizado como arquivo source do módulo.

Outras informações que você deve conhecer sobre os módulos

  • Os módulos são carregados apenas uma vez.
  • Node trata as chamadas cíclicas de módulos, então mesmo que não seja muito bom telas você não precisa se preocupar.
  • Somente variáveis exportadas estão disponíveis no módulo, as demais variáveis e funções são privadas do módulo.
  • Você pode carregar somente atributos específicos do módulo. Ex: var EventEmitter = require('events').EventEmitter;

Conclusão

Como o objetivo do tópico é apenas conhecer como se trabalha com módulos omitir algumas considerações e não expliquei como criar módulos que ficará para uma próxima oportunidade. Espero que tenha conseguido passar um pouco de como utilizamos no dia-a-dia os módulos.

Se o leitor achou que preciso acrescentar algo fiquem a vontade para solicitar. Abraços;

Nenhum comentário:

Este portal foi desativado, veja meus outros projetos:

Site da Psicóloga e Psicoterapeuta Bianca Galindo terapia online