Como instalar o Vue 3 no Laravel 9 com Vite

VueJs 3 + Laravel 9 + ViteJs

Iniciando o desenvolvimento de uma aplicação com Laravel v9, VueJs3 e Vite


Conteúdo:

  • Descrição do ambiente utilizado
  • Composer
  • NVM (Node Version Manager)
  • Node
  • Laravel 9
  • VueJS 3
  • Vite
  • Exemplo prático
  • Referências

  • Descrição do artigo
    Nessa configuração serão utilizados o framework Laravel 9.x, VueJS 3 em conjunto com Vite para a estruturação do front-end. E utilizaremos o Composer e o NPM para gerenciar mais facilmente as dependências dessa estrutura.
    Aqui vamos utilizar um ambiente Windows com WSL2 o que, em tese, deve seguir os mesmos passos, caso o mesmo seja realizado em um ambiente Linux/Ubuntu.

  • Composer/NVM/Node
    – Para instalar o Composer, basta efetuar o download aqui, e seguir as instruções do site oficial. A instalação do mesmo é bastante simples.

    – Já o NVM, iremos fazer a instalação dentro do WSL2. Por segurança, desinstale todas as versões do NODE já instaladas e pelo terminal (já dentro do WSL), basta utilizar o curl ou o wget:

    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
    ou
    wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash

    Conforme é citado na documentação oficial.

    Feito isso, vamos digitar o comando “nvm install v18.17.1”, onde v18.17.1 é a versão do node que iremos instalar. Sinta-se a vontade para testar outras versões. Com o NVM é possível instalar mais de uma versão e selecionar qual que pretendemos utilizar no momento.
    Para verificar as versões do node instaladas, utilize o comando “nvm list”. E caso queira trocar de versão, basta utilizar “nvm use vXX.XX.X”.

    Com esses passos, já temos nossa tríade Composer/NVM/NodeJs prontos para iniciar a construção da aplicação.

  • Laravel 9
    A documentação do Laravel é bastante completa e estarei aqui apenas mencionando os comandos necessários para uma nova instalação.
    Lembrando que estamos utilizando o terminal do WSL, execute:

    composer create-project laravel/laravel:^9.0 nome-pasta-app

    Aguarde a instalação terminar e caso exiba a pergunta “Do you want to remove the existing VCS (.git, .svn..) history?” utilize a opção “Y”, pois estamos criando um projeto próprio com create-project, por isso não há necessidade de termos o histórico do repositório original.

    Agora já podemos conferir a versão instalada com “php artisan –version” e verificar a mesma rodando com “php artisan serve”.
    O comando –version deve apresentar algo do tipo “Laravel Framework 9.52.15”
    E o serve deve exibir no terminal o endereço:porta para acessar a aplicação e no navegador irá exibir a tela de boas vindas do Laravel, respectivamente, algo como:
  • Instalação do VueJS 3
    Nosso próximo passo é instalar o VueJS 3 e suas dependências.
    Vamos começar navegando até a pasta do projeto e rodando o comando “npm install”, assim estaremos instalando todas as nossas dependências de frontend.
    O segundo passo é instalar o Vue e o vue-loader (que é utilizado para interagir com webpacks e possibilitar a manipulação de componentes com outros webpacks). Para isso vamos rodar o comando “npm install vue@next vue-loader@next”

  • Instalação do Vite
    E por fim, instalaremos o Vite utilizando “npm i @vitejs/plugin-vue”.
    O Vite nada mais é do que um frontend builder. Ele será o responsável por agrupar o seu código (css e js) e disponibilizar em localhost:porta um ambiente de desenvolvimento em localhost.
    Em seguida, vamos configurar o vite.config.js, designando os caminhos/arquivos para que sejam criados bundles para a sua aplicação.
    Abra o arquivo vite.config.js que está na raiz do projeto e substitua o conteúdo pelo código abaixo:
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import vue from '@vitejs/plugin-vue'

export default defineConfig({
    plugins: [
        vue(),
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
        }),
    ],
});
  • Após essa alteração vamos iniciar a nossa aplicação pelo terminal chegando até a pasta raiz da mesma e rodando o comando “npm run dev”. Isso irá inicializar o servidor Vite que irá rodar em background, lendo os seus assets JS e CSS. Na verdade, nada mais é do que um watch que irá escutar as alterações dos seus arquivos resources/js/app.js e resources/css/app.css.

  • Exemplo prático
    Após toda a parte de configuração do framework, vamos criar alguns exemplos práticos:
    • Criando um app Vue
      No arquivo “resources/js/app.js” adicione o seguinte código:
import {createApp} from 'vue';
import App from './App.vue';

createApp(App).mount("#app");
  • Ainda dentro da pasta “resources/js/app.js”, crie um arquivo chamado “App.vue” e dentro dele cole o conteúdo a seguir:
<template>
    Hello world!!!
</template>
  • Dentro da pasta “resources/views”, crie um arquivo chamado app.blade.php e dentro dele vamos colar um código html simples apenas para rodar o nosso app vue.
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Laravel</title>

        @vite('resources/css/app.css')
    </head>
    <body class="antialiased">
        <div id="app"></div>
        
        @vite('resources/js/app.js')
    </body>
</html>
  • Repare que temos uma div com o id=”app”, que é onde nossa aplicação será carregada, pois lá no import utilizamos um “mount”, justamente passando esse atributo como seletor.

    Depois, dentro do arquivo de rotas “routes/web.php”, vamos adicionar uma rota para o nosso app:

Route::get(‘/appvue’, function () {

    return view(‘app’);

});

  • Feito isso, basta rodar o “php artisan serve”, acessar nossa rota citada acima e pronto, temos o nosso Laravel devidamente configurado com Vue 3 e o Vite para nos auxiliar com os webpacks.

    Let’s code!!!!

Compartilhe

Você pode gostar...

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *