Um módulo em Node.js é um encapsulamento lógico de código em uma única unidade. É sempre uma boa prática de programação sempre segregar o código de uma forma que o torne mais gerenciável e sustentável para fins futuros. É aí que os módulos em Node.js entram em ação.
Como cada módulo é uma entidade independente com sua própria funcionalidade encapsulada, ele pode ser gerenciado como uma unidade de trabalho separada.
Neste tutorial, você aprenderá-
- O que são módulos em Node.js
- Usando módulos em Node.js
- Criação de módulos NPM
- Módulos de extensão
- Publicação de módulos NPM
- Gerenciando pacotes de terceiros com npm
- O que é o arquivo package.json
O que são módulos em Node.js?
Conforme declarado anteriormente, os módulos no Node js são uma forma de encapsular o código em uma unidade lógica separada. Existem muitos módulos prontos disponíveis no mercado que podem ser usados no Node js.
Abaixo estão alguns dos módulos populares que são usados em um aplicativo Node js
- Estrutura Express - Express é uma estrutura de aplicativo da web Node js mínima e flexível que fornece um conjunto robusto de recursos para a web e aplicativos móveis.
- Socket.io - Socket.IO permite comunicação bidirecional em tempo real baseada em eventos. Este módulo é bom para a criação de aplicativos baseados em bate-papo.
- Jade - Jade é um mecanismo de template de alto desempenho e implementado com JavaScript para nó e navegadores.
- MongoDB - O driver MongoDB Node.js é o driver node.js com suporte oficial para MongoDB.
- Restify - restify é uma estrutura leve, semelhante ao express para a construção de APIs REST
- Bluebird - Bluebird é uma biblioteca de promessas repleta de recursos com foco em recursos inovadores e desempenho
Usando módulos em Node.js
Para usar módulos em um aplicativo Node.js, eles primeiro precisam ser instalados usando o gerenciador de pacotes Node.
A linha de comando abaixo mostra como um módulo "express" pode ser instalado.
npm install express
- O comando acima irá baixar os arquivos necessários que contêm os "módulos expressos" e cuidar da instalação também
- Uma vez que o módulo foi instalado, para usar um módulo em um aplicativo Node.js, você precisa usar a palavra-chave 'require'. Essa palavra-chave é uma maneira que o Node.js usa para incorporar a funcionalidade de um módulo em um aplicativo.
Vejamos um exemplo de como podemos usar a palavra-chave "require". O exemplo de código "Guru99" abaixo mostra como usar a função require
var express=require('express');var app=express();app.set('view engine','jade');app.get('/',function(req,res){});var server=app.listen(3000,function(){});
- Na primeira instrução propriamente dita, estamos usando a palavra-chave "require" para incluir o módulo expresso. O módulo "express" é uma biblioteca JavaScript otimizada para desenvolvimento em Node.js. Este é um dos módulos Node.js mais comumente usados.
- Depois que o módulo é incluído, para usar a funcionalidade dentro do módulo, um objeto precisa ser criado. Aqui, um objeto do módulo expresso é criado.
- Depois que o módulo é incluído usando o comando "require" e um "objeto" é criado, os métodos necessários do módulo expresso podem ser chamados. Aqui, estamos usando o comando set para definir o mecanismo de visualização, que é usado para definir o mecanismo de modelagem usado no Node.js.
Nota: - (Apenas para a compreensão do leitor; um motor de modelagem é uma abordagem para injetar valores em um aplicativo, pegando dados de arquivos de dados. Este conceito é muito famoso em Angular JS, em que as chaves {{key}} são usadas para substitui valores na página da web. A palavra "chave" entre chaves denota basicamente a variável que será substituída por um valor quando a página for exibida.)
- Aqui, estamos usando o método listen to para fazer o aplicativo escutar em um número de porta específico.
Criação de módulos NPM
Node.js tem a capacidade de criar módulos personalizados e permite que você inclua esses módulos personalizados em seu aplicativo Node.js.
Vejamos um exemplo simples de como podemos criar nosso próprio módulo e incluí-lo em nosso arquivo de aplicativo principal. Nosso módulo fará apenas uma tarefa simples de somar dois números.
Vamos seguir os passos abaixo para ver como podemos criar módulos e incluí-los em nosso aplicativo.
Etapa 1) Crie um arquivo chamado "Addition.js" e inclua o código abaixo. Este arquivo conterá a lógica do seu módulo.
Abaixo está o código que entraria neste arquivo;
var exports=module.exports={};exports.AddNumber=function(a,b){return a+b;};
- A palavra-chave "exportação" é usada para garantir que a funcionalidade definida neste arquivo possa realmente ser acessada por outros arquivos.
- Estamos então definindo uma função chamada 'AddNumber'. Esta função é definida para receber 2 parâmetros, a e b. A função é adicionada ao módulo "exportações" para torná-la uma função pública que pode ser acessada por outros módulos do aplicativo.
- Estamos finalmente fazendo nossa função retornar o valor agregado dos parâmetros.
Agora que criamos nosso módulo personalizado, que tem a funcionalidade de adicionar 2 números. Agora é hora de criar um aplicativo, que chamará este módulo.
Na próxima etapa, veremos como criar o aplicativo que chamará nosso módulo personalizado.
Etapa 2) Crie um arquivo chamado "app.js", que é o arquivo principal do seu aplicativo e adicione o código abaixo
var Addition=require('./Addition.js');console.log(Addition.AddNumber(1,2));
- Estamos usando a palavra-chave "require" para incluir a funcionalidade no arquivo Addition.js.
- Como as funções no arquivo Addition.js agora estão acessíveis, podemos agora fazer uma chamada para a função AddNumber. Na função, estamos passando 2 números como parâmetros. Em seguida, estamos exibindo o valor no console.
Produto :
- Ao executar o arquivo app.js, você obterá uma saída de valor 3 no log do console.
- O resultado é porque a função AddNumber no arquivo Addition.js foi chamada com êxito e o valor retornado de 3 foi exibido no console.
Nota: - Não estamos usando o "gerenciador de pacotes Node" ainda para instalar nosso módulo Addition.js. Isso porque o módulo já faz parte do nosso projeto na máquina local. O gerenciador de pacotes do Node entra em cena quando você publica um módulo na Internet, o que veremos no tópico subsequente.
Módulos de extensão
Ao criar módulos, também é possível estender ou herdar um módulo de outro.
Na programação moderna, é bastante comum construir uma biblioteca de módulos comuns e, em seguida, estender a funcionalidade desses módulos comuns, se necessário.
Vejamos um exemplo de como podemos estender módulos em Node.js.
Etapa 1) Crie o módulo básico.
Em nosso exemplo, crie um arquivo chamado "Tutorial.js" e coloque o código abaixo.
Neste código, estamos apenas criando uma função que retorna uma string para o console. A string retornada é "Tutorial Guru99".
var exports=module.exports={};exports.tutorial=function(){console.log("Guru99 Tutorial")}
- O módulo de exportações é usado para que qualquer função definida neste arquivo possa estar disponível em outros módulos em Node.js
- Estamos criando uma função chamada tutorial que pode ser usada em outros módulos Node.js.
- Estamos exibindo uma string "Guru99 Tutorial" no console quando esta função é chamada.
Agora que criamos nosso módulo base chamado Tutorial.js. Agora é hora de criar outro módulo que irá estender este módulo básico.
Exploraremos como fazer isso na próxima etapa.
Etapa 2) Em seguida, criaremos nosso módulo estendido. Crie um novo arquivo chamado "NodeTutorial.js" e coloque o código abaixo no arquivo.
var Tutor=require('./Tutorial.js');exports.NodeTutorial=function(){console.log("Node Tutorial")function pTutor(){var PTutor=TutorPTutor.tutorial();}}Orvar Tutor=require('./Tutorial.js');exports.NodeTutorial=function(){console.log("Node Tutorial")this.pTutor = function (){var PTutor=TutorPTutor.tutorial();}}
Observe os seguintes pontos-chave sobre o código acima
- Estamos usando a função "require" no próprio arquivo do novo módulo. Como vamos estender o arquivo de módulo existente "Tutorial.js", precisamos primeiro incluí-lo antes de estendê-lo.
- Em seguida, criamos uma função chamada "Nodetutorial". Esta função fará 2 coisas,
- Ele enviará uma string "Node Tutorial" para o console.
- Ele enviará a string "Guru99 Tutorial" do módulo base "Tutorial.js" para nosso módulo estendido "NodeTutorial.js".
- Aqui estamos realizando o primeiro passo para enviar uma string para "Node Tutorial" para o console.
- A próxima etapa é chamar a função de nosso módulo Tutorial, que produzirá a string "Tutorial Guru99" no console.log.
Etapa 3) Crie seu arquivo app.js principal, que é o arquivo principal do aplicativo e inclua o código abaixo.
var localTutor=require('./NodeTutorial.js');localTutor.NodeTutorial();localTutor.NodeTutorial.pTutor();Or use this codevar tut = new localTutor.NodeTutorial(); // Create and save objecttut.pTutor(); // Call function on object
O código acima faz o seguinte;
- Nosso arquivo de aplicativo principal agora chama o módulo "NodeTutorial".
- Estamos chamando a função "NodeTutorial". Ao chamar esta função, o texto "Tutorial do nó" será exibido no log do console.
- Já que estendemos nosso módulo Tutorial.js e expusemos uma função chamada pTutor. Ele também chama o módulo tutorial no módulo Tutorial.js, e o texto "Tutorial Guru99" também será exibido no console.
Resultado:
Como executamos o código app.js acima usando o Node, obteremos a seguinte saída no arquivo console.log
- Node Tutorial
- Tutorial Guru99
Publicação de módulos NPM (Node Package Manager)
Pode-se publicar seu próprio módulo em seu próprio repositório Github.
Ao publicar seu módulo em um local central, você não terá que se instalar em cada máquina que o requeira.
Em vez disso, você pode usar o comando install do npm e instalar o módulo npm publicado.
As etapas a seguir precisam ser seguidas para publicar seu módulo npm
Etapa 1) Crie seu repositório no GitHub (uma ferramenta de gerenciamento de repositório de código online). Ele pode ser usado para hospedar seus repositórios de código.
Etapa 2 ) Você precisa informar à instalação do npm local quem você é. O que significa que precisamos dizer ao npm quem é o autor deste módulo, qual é o id do e-mail e qualquer URL da empresa que está disponível e precisa ser associado a esse id. Todos esses detalhes serão adicionados ao seu módulo npm quando ele for publicado.
Os comandos abaixo definem o nome, e-mail e URL do autor do módulo npm.
npm set init.author.name "Guru99."
npm set init.author.email " Este endereço de e-mail está protegido contra spambots. Você precisa de Javascript habilitado para vê-lo."
npm set init.author.url http://Guru99.com
Etapa 3) A próxima etapa é fazer login no npm usando as credenciais fornecidas na última etapa. Para fazer o login, você precisa usar o comando abaixo
npm login
Etapa 4) Inicializar seu pacote - A próxima etapa é inicializar o pacote para criar o arquivo package.json. Isso pode ser feito emitindo o comando abaixo
npm init
Ao emitir o comando acima, serão feitas algumas perguntas. O mais importante é o número da versão do seu módulo.
Etapa 5) Publicar no GitHub - a próxima etapa é publicar seus arquivos de origem no GitHub. Isso pode ser feito executando os comandos abaixo.
git add.git commit -m "Initial release"git tag v0.0.1git push origin master --tags
Etapa 6) Publique seu módulo - A parte final é publicar seu módulo no registro npm. Isso é feito por meio do comando abaixo.
npm publish
Gerenciando pacotes de terceiros com npm
Como vimos, o "gerenciador de pacotes Node" tem a capacidade de gerenciar módulos, que são exigidos por aplicativos Node.js.
Vejamos algumas das funções disponíveis no gerenciador de pacotes do nó para gerenciamento de módulos
-
Instalando pacotes no modo global - os módulos podem ser instalados no nível global, o que basicamente significa que esses módulos estariam disponíveis para todos os projetos Node.js em uma máquina local. O exemplo abaixo mostra como instalar o "módulo expresso" com a opção global.
npm install express -global
A opção global na declaração acima é o que permite que os módulos sejam instalados em um nível global.
-
Listando todos os pacotes globais instalados em uma máquina local. Isso pode ser feito executando o comando abaixo no prompt de comando
lista npm - global
Abaixo está a saída que será mostrada, se você instalou anteriormente o "módulo expresso" em seu sistema.
Aqui você pode ver os diferentes módulos instalados na máquina local.
-
Instalando uma versão específica de um pacote - às vezes, pode ser necessário instalar apenas a versão específica de um pacote. Depois de saber o nome do pacote e a versão relevante que precisa ser instalada, você pode usar o comando npm install para instalar essa versão específica.
O exemplo abaixo mostra como instalar o módulo chamado sublinhado com uma versão específica de 1.7.0
npm install [email protected]
-
Atualizando uma versão do pacote - Às vezes, você pode ter uma versão mais antiga de um pacote em um sistema e pode querer atualizar para a versão mais recente disponível no mercado. Para fazer isso, pode-se usar o comando npm update. O exemplo abaixo mostra como atualizar o pacote de sublinhado para a versão mais recente
npm atualização sublinhado
-
Pesquisando um pacote específico - para pesquisar se uma versão específica está disponível no sistema local ou não, você pode usar o comando de pesquisa do npm. O exemplo abaixo irá verificar se o módulo expresso está instalado na máquina local ou não.
npm search express
-
Desinstalando um pacote - Da mesma forma que você pode instalar um pacote, você também pode desinstalar um pacote. A desinstalação de um pacote é feita com o comando de desinstalação do npm. O exemplo abaixo mostra como desinstalar o módulo expresso
npm desinstalação expressa
O que é o arquivo package.json
O arquivo "package.json" é usado para conter os metadados sobre um projeto específico . Essas informações fornecem ao gerenciador de pacotes do Node as informações necessárias para entender como o projeto deve ser tratado junto com suas dependências.
Os arquivos package.json contêm informações como a descrição do projeto, a versão do projeto em uma distribuição específica, informações de licença e dados de configuração.
O arquivo package.json normalmente está localizado no diretório raiz de um projeto Node.js.
Vamos dar um exemplo de como fica a estrutura de um módulo quando ele é instalado via npm.
O instantâneo abaixo mostra o conteúdo do arquivo do módulo expresso quando ele está incluído em seu projeto Node.js. No instantâneo, você pode ver o arquivo package.json na pasta express.
Se você abrir o arquivo package.json, verá muitas informações no arquivo.
Abaixo está um instantâneo de uma parte do arquivo. O express@~4.13.1 menciona o número da versão do módulo expresso que está sendo usado.
Resumo
- Um módulo em Node.js é um encapsulamento lógico de código em uma única unidade. A separação em módulos torna o código mais gerenciável e sustentável para fins futuros
- Existem muitos módulos disponíveis no mercado que podem ser usados no Node.js, como express, underscore, MongoDB, etc.
- O gerenciador de pacotes de nó (npm) é usado para baixar e instalar módulos que podem ser usados em um aplicativo Node.js.
- É possível criar módulos NPM personalizados, estender esses módulos e também publicá-los.
- O gerenciador de pacotes Node possui um conjunto completo de comandos para gerenciar os módulos npm no sistema local, como instalação, desinstalação, pesquisa, etc.
- O arquivo package.json é usado para conter todas as informações de metadados para um módulo npm.