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:
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
eurl ()
comoimport/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:
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 .