Neste tutorial do Pug.js, mostraremos como integrar Vue.js em um aplicativo de back-end usando Pug como um mecanismo de modelos.

Para obter uma introdução ao Pug.js, consulte “ Getting começou com Pug . ”

O que é Pug.js?

Pug.js , anteriormente conhecido como Jade, é um mecanismo de modelagem projetado para renderizar HTML em tecnologias do lado do servidor, como Node.js. Como qualquer mecanismo de modelagem JavaScript, o Pug.js oferece suporte à escrita de código HTML reutilizável e à renderização de dados dinâmicos.

Vue.js é uma estrutura progressiva para JavaScript que é usada para construir interfaces da web e aplicativos de página. Não apenas para interfaces da web, Vue.js também é usado para desenvolvimento de aplicativos para desktop e dispositivos móveis com o Estrutura do elétron .

Por que usar o Pug com Vue.js?

A maioria dos desenvolvedores de back-end opta por usar Pug com Vue.js porque é muito mais fácil de implementar e ler e não requer muita configuração. Qualquer HTML válido também é um modelo Vue.js válido. Usar Pug.js como um pré-processador para seus modelos Vue.js torna muito mais fácil migrar projetos existentes para aproveitar os recursos de reatividade do Vue.

Pug.js é frequentemente usado com tecnologias de back-end, como Express . js para modelagem, uma vez que compila em HTML. Ao contrário dos desenvolvedores de back-end, a maioria dos desenvolvedores de front-end acha o Pug frustrante de escrever e manter porque ele é sensível a espaços em branco, o que significa que ele usa recuo para determinar quais tags estão aninhadas umas dentro das outras.

Para acompanhar este tutorial, você deve ter conhecimento de JavaScript e Vue.js e experiência no uso de um editor de texto, como Código VS .

Configuração de um projeto Node.js

Ao configurar um projeto nodejs, precisamos inicializar um arquivo package.json para rastrear as dependências de nosso aplicativo usando o comando npm init-y .

A seguir, criaremos um arquivo index.js , que será nosso arquivo Node.js raiz. Usaremos Express.js para nosso servidor, por isso precisamos instalar o Express, importá-lo para nosso arquivo raiz index.js e criar uma instância dele. Usaremos a instância para ouvir uma porta em execução em 3000 .

Instalação de Express.js em um aplicativo Node.js

Para instalar Express.js, abra seu terminal e digite npm i express --``save .

 let express=require ('express');
deixe app=express (); app.get ('/', (req, res)=> res.json ({msg:"Hello World"})) app.listen (3000, ()=> console.log ('Teste em execução'))

Para executar o aplicativo, abra seu terminal e digite node index.js . Este comando exibirá Test running no terminal, o que significa que o servidor está em execução. Agora podemos acessar nosso aplicativo em http://localhost: 3000/ em nosso navegador:

Pug.js:'H ello World'

Configurando Pug.js

Para configurar o Pug como seu mecanismo de modelagem, primeiro instale-o executando npm install pug .

Após instalar o Pug, precisamos defini-lo como o mecanismo de modelagem Express padrão e também apontar para um diretório onde todos os nossos modelos serão definidos. Podemos modificar nosso arquivo index.js para este:

 let express=require ('express');
deixe pug=exigir ("pug")
let path=require ('path')
deixe app=express (); app.set (path.join (__ dirname,'./views'))
app.set ('ver motor','pug') app.get ('/', (req, res)=> res.render ('home')) app.listen (3000, ()=> console.log ('Teste em execução'))

Observe que exigimos o módulo Node.js path , que fornece utilitários para trabalhar com caminhos de arquivo e diretório.

Vamos criar um diretório views onde definiremos todos os nossos modelos de Pug. Usaremos o módulo path para direcionar o diretório views e defini-lo como o diretório raiz para todos os nossos modelos.

A seguir, crie um arquivo home.pug dentro do diretório views e adicione este:

.container h1 Hello World

Nosso aplicativo agora renderizará Hello World no navegador porque alteramos a rota para renderizar o modelo home.pug . Observe como Pug usa recuo para descobrir quais tags estão aninhadas umas dentro das outras.

Usando Pug com Vue.js

Para configurar o Vue.js em nosso modelo Pug, precisamos instalar e configurar o webpack .

webpack é basicamente um empacotador de módulos. Seu objetivo principal é agrupar arquivos JavaScript para uso em um navegador.

Para instalar o webpack e seu CLI, abra o terminal e digite o seguinte:

 npm i-D webpack webpack-cli

Depois de instalar o webpack, precisamos instalar alguns outros pacotes para ajudar a inicializar o Vue.js:

  • vue-loader , um carregador para webpack que permite a você configurar componentes Vue.js como um componente de arquivo único
  • vue-loader-plugin , que ajuda a resolver problemas de compatibilidade com configurações do Webpack5.
  • vue-template-compiler , que é usado para pré-compilar modelos Vue.js 2.0 em funções de renderização para evitar sobrecarga de compilação em tempo de execução e restrições de CSP.
  • css-loader , que interpreta e resolve @import e url () como import/require ()

Para instalar esses pacotes, abra seu terminal e digite o seguinte:

 npm i-D vue-loader vue-loader-plugin vue-template-compiler css-loader

O sinalizador -D instalará esses pacotes como uma dependência de desenvolvimento.

Em seguida, temos que instalar babel , um conjunto de ferramentas usado principalmente para converter o código ECMAScript 2015+ em uma versão compatível com versões anteriores do JavaScript em navegadores e ambientes atuais e mais antigos. Com isso instalado, podemos usar coisas como importar e export em nosso arquivo JavaScript.

Começaremos instalando o babel-watch usando npm, executando npm i babel-watch em nosso terminal e, em seguida, instalando o babel-core e babel-loader como uma dependência de desenvolvimento:

 npm i-D babel-core babel-loader

Vamos criar um diretório client onde escreveremos nossos códigos Vuejs. Dentro do diretório, crie um arquivo home.js e adicione o seguinte:

 importar Vue de"vue";
let app=new Vue ({ el:'#home', dados: { nomes: ['Sabedoria',"Ekpot","Ubongabasi"] }, métodos: { logSomeThing () { retornar'Hello Wisdom Ekpot' } }, montado () { console.log (this.logSomeThing ()); }
})

Se você está familiarizado com o Vue.js, deve reconhecê-lo como uma configuração simples do Vuejs. Aqui, o elemento raiz tem como alvo um div com um id de home . Assim que o modelo é montado, o método logSomething é chamado, o qual é definido no objeto métodos .

Para incluir isso em nosso arquivo Pug, teremos que adicionar algumas configurações do webpack. Vamos criar um arquivo webpack.config.js , importar webpack e escrever algumas configurações para Vue.js.

Começaremos importando webpack, path e VueLoaderPlugin :

 const webpack=require ('webpack');
const path=require ('path');
const VueLoaderPlugin=require ('vue-loader/lib/plugin');

Nossa configuração do webpack será envolvida em um objeto config . Começaremos definindo o modo como desenvolvimento e também definiremos nosso arquivo de entrada.

Depois de definir um arquivo de entrada, precisamos definir uma saída onde todo o código transcompilado será armazenado. A propriedade output informa ao webpack onde emitir os pacotes que ele cria e como nomear esses arquivos. Basicamente, o webpack pega nosso código Vue.js e o transcompila para o JavaScript vanilla.

 const config={ modo:'desenvolvimento', entrada: { 'home':'./client/home.js', }, resultado: { caminho: path.resolve (__ dirname,'public/js'), nome do arquivo:'[nome].bundle.js' },
}

Criaremos um diretório public para armazenar nosso código compilado. Também precisamos criar algumas regras do webpack a serem usadas quando a regra corresponder. Essas regras são avaliadas apenas quando a condição da regra pai corresponde. Cada regra aninhada pode conter suas próprias condições.

módulo

: { regras: [ { teste:/\.vue$/, loader:'vue-loader' }, { teste:/\.js$/, use:'babel-loader', excluir:/node_modules/ }, { teste:/\.css$/, usar: [ 'vue-style-loader', 'css-loader' ] } ] },

Basicamente, o webpack verifica se há alguma extensão de arquivo .vue e usa o plug-in vue-loader para agrupá-lo ao JavaScript.

Também precisamos definir um objeto resolver para configurar como os módulos são resolvidos:

 resolver: { alias: { 'vue $':'vue/dist/vue.esm.js' }, extensões: [ '.js', '.vue' ] },

Em seguida, precisamos definir uma nova instância de VueLoaderPlugin para ajudar a lidar com algumas configurações de Webpack 5 :

 plug-ins: [ new VueLoaderPlugin (), ],

Depois de fazer isso, temos que exportar nosso objeto config :

 module.exports=config;

Para inicializar esta configuração do webpack, precisamos adicionar alguns scripts em nosso arquivo package.json para inicializá-lo:

"watch":"babel-watch--watch-index", "dev":"npm run watch & npm run client: build-dev", "client: build-dev":"webpack--watch"

O comando client: build-dev iniciará o Bootstrap e observará nossos arquivos para quaisquer alterações. Para iniciar o aplicativo, execute npm run dev em seu terminal.

Agora podemos modificar nosso arquivo home.pug para este:

.container # home h1 Hello World
script (src="/js/home.bundle.js")

Se executarmos npm run dev em nosso terminal, ele criará um arquivo home.bundle.js dentro de nosso diretório público, que é nosso código transcompilado.

Se olharmos para o console do nosso navegador, veremos o método logSomeThing () impresso:

Vu e.js em um modelo de Pug

O acima indica que Vue.js está sendo usado em nosso modelo Pug.

A última coisa que precisamos fazer é criar um arquivo .gitignore e adicionar o seguinte:

 public/js
node_modules

Isso impedirá que o diretório node_modules e o diretório public sejam confirmados no git.

Conclusão

Ao trabalhar com tarefas de front-end grandes e complexas em seu back-end, usar o Pug com Vue.js é uma ótima maneira de simplificar e escalar o processo de desenvolvimento.

O código-fonte do exemplo usado neste artigo está disponível em GitHub .

A postagem Usando Pug.js com Vue.js apareceu primeiro no LogRocket Blog .

Source link