Tutorial NPM do Node.js: como criar, estender e publicar módulos
Módulos Node.js.
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 forma que o torne mais gerenciável e sustentável para propósitos futuros. É aí que os módulos do 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.
O que é um módulo em Node.js?
Conforme afirmado 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 dentro do Node js.
Abaixo estão alguns dos módulos populares que são usados em um aplicativo Node js
- Estrutura expressa – 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 móvel aplicações.
- soquete.io – Socket.IO permite comunicação bidirecional baseada em eventos em tempo real. 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 - A MongoDB O driver Node.js é o driver node.js oficialmente suportado para MongoDB.
- Restificar – restify é uma estrutura leve, semelhante ao express para construção de APIs REST
- Bluebird – Bluebird é uma biblioteca promissora com todos os recursos, com foco em recursos inovadores e desempenho
Usando módulos em Node.js
Para usar módulos em um Node.js aplicativo, 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 instalar expresso
- O comando acima irá baixar os arquivos necessários que contêm os “módulos expressos” e cuidar também da instalação
- Após a instalação do módulo, para usá-lo em um aplicativo Node.js, você precisa usar a palavra-chave 'require'. Esta palavra-chave é uma forma 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 em si, estamos usando a palavra-chave “require” para incluir o módulo expresso. O módulo “express” é um módulo otimizado JavaScript biblioteca para desenvolvimento Node.js. Este é um dos módulos Node.js mais comumente usados.
- Após a inclusão do módulo, para utilizar a funcionalidade dentro do módulo, um objeto precisa ser criado. Aqui é criado um objeto do módulo expresso.
- Uma vez 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 invocados. 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.
- Aqui estamos usando o método listen to para fazer o aplicativo escutar em um número de porta específico.
Nota:-(Apenas para a compreensão do leitor; um mecanismo de modelagem é uma abordagem para injetar valores em um aplicativo, coletando dados de arquivos de dados. Este conceito é bastante famoso em Angular JS, onde as chaves {{ key }} são usadas para substituir valores em a 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.)
Como criar módulos NPM
O Node.js tem a capacidade de criar módulos personalizados e permite incluir 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 principal do aplicativo. 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 nossa aplicação.
A seguir está o processo passo a passo sobre como criar módulos NPM
Passo 1) Crie um arquivo e cole o código abaixo
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ções” é 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 da aplicação.
- Finalmente estamos fazendo com que nossa função retorne o valor agregado dos parâmetros.
Agora que criamos nosso módulo customizado que tem a funcionalidade de somar 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.
Passo 2) Crie um arquivo de aplicativo
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. Estamos então exibindo o valor no console.
saída:
- Ao executar o arquivo app.js, você obterá uma saída de valor 3 no log do console.
- O resultado ocorre porque a função AddNumber no arquivo Addition.js foi chamada com êxito e o valor retornado de 3 foi exibido no console.
Nota: – Ainda não estamos usando o “gerenciador de pacotes Node” para instalar nosso módulo Addition.js. Isso ocorre porque o módulo já faz parte do nosso projeto na máquina local. O gerenciador de pacotes Node entra em cena quando você publica um módulo na internet, o que veremos no tópico a seguir.
Estendendo módulos em Node.js
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 depois estender a funcionalidade desses módulos comuns, se necessário.
Vejamos um exemplo de como podemos estender módulos em Node.js.
Passo 1) Crie o módulo base.
No 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ção é usado para que qualquer função definida neste arquivo possa estar disponível em outros módulos do Node.js.
- Estamos criando uma função chamada tutorial que pode ser usada em outros módulos do Node.js.
- Estamos exibindo uma string “Tutorial Guru99” 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 estenderá este módulo base.
Exploraremos como fazer isso na próxima etapa.
Passo 2) A seguir, 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=Tutor PTutor.tutorial(); } } Or var Tutor=require('./Tutorial.js'); exports.NodeTutorial=function() { console.log("Node Tutorial") this.pTutor = function () { var PTutor=Tutor PTutor.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 do 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 do “Tutorial do Node” para o console.
- O próximo passo é chamar a função do nosso módulo Tutorial, que irá gerar a string “Tutorial Guru99” para o console.log.
Passo 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 code var tut = new localTutor.NodeTutorial(); // Create and save object tut.pTutor(); // Call function on object
O código acima faz o seguinte;
- Nosso arquivo principal do aplicativo agora chama o módulo “NodeTutorial”.
- Estamos chamando a função “NodeTutorial”. Ao chamar esta função, o texto “Node Tutorial” 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.
Saída:
Como executamos o código app.js acima usando Node, obteremos a seguinte saída no arquivo console.log
- Tutorial de nó
- Tutorial Guru99
Pacote de publicação NPM (Node Package Manager)
Pode-se publicar seu próprio módulo em seu próprio Github repositório.
Ao publicar seu módulo em um local central, você não terá que se instalar em todas as máquinas que o exigirem.
Em vez disso, você pode usar o comando install do npm e instalar seu módulo npm publicado.
As etapas a seguir precisam ser seguidas para publicar seu módulo npm
Passo 1) Crie seu repositório no GitHub (uma ferramenta online de gerenciamento de repositório de código). Ele pode ser usado para hospedar seus repositórios de código.
Passo 2) Você precisa informar à instalação local do npm quem você é. O que significa que precisamos informar ao npm quem é o autor deste módulo, qual é o id do e-mail e qualquer URL da empresa disponível que precisa ser associada a esse id. Todos esses detalhes serão adicionados ao seu módulo npm quando ele for publicado.
Os comandos abaixo definem o nome, email e URL do autor do módulo npm.
npm define init-autor-nome “Guru99.”
npm definir init-autor-email “guru99@gmail.com”
npm definir init-autor-url “http://Guru99.com”
Passo 3) A próxima etapa é fazer login no npm usando as credenciais fornecidas na última etapa. Para fazer login, você precisa usar o comando abaixo
npm login
Passo 4) Inicialize 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, você será solicitado a fazer algumas perguntas. O mais importante é o número da versão do seu módulo.
Passo 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.1 git push origin master --tags
Passo 6) Publique seu módulo – A última etapa é publicar seu módulo no registro npm. Isso é feito através 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 pelos aplicativos Node.js.
Vejamos algumas das funções disponíveis no gerenciador de pacotes do nó para gerenciar módulos
- Instalando pacotes em modo global – Os módulos podem ser instalados em 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 instalar expresso –global A opção global na declaração acima é o que permite que os módulos sejam instalados em 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 comandolista npm –globalAbaixo está a saída que será mostrada, caso você já tenha instalado 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.0npm install sublinhado@1.7.0
- Atualizando uma versão de 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 recentesublinhado de atualização npm
- Procurando por 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 search do npm. O exemplo abaixo irá verificar se o módulo expresso está instalado na máquina local ou não.pesquisa expressa npm
- 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 expressonpm desinstalar expresso
Qual é o arquivo package.json
O arquivo “package.json” é usado para armazenar o metadados sobre um projeto específico. Essas informações fornecem ao gerenciador de pacotes 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.
Vejamos 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 é incluído em seu projeto Node.js. No instantâneo, você pode ver o arquivo package.json na pasta expressa.
Se você abrir o arquivo package.json, verá muitas informações no arquivo.
Abaixo está um instantâneo de uma parte do arquivo. O expresso@~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 dentro do Node.js, como express, underscore, MongoDB, etc.
- O gerenciador de pacotes do 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 armazenar todas as informações de metadados de um módulo npm.