Vue: Cómo configurar y usar en Laravel 8

vue

Cómo configurar y usar Vue en su aplicación Laravel 8

En versiones anteriores de Laravel, Vue se configuraba automáticamente con cada nueva instalación. Sin embargo, en las versiones más recientes, debe configurarlo usted mismo.

Afortunadamente, el paquete laravel/ui proporciona una manera fácil de configurar Vue en su aplicación Laravel.

Siga los siguientes pasos para configurar Vue en su aplicación Laravel.


1. Crear una nueva aplicación Laravel

Si aún no lo ha hecho, cree una nueva aplicación con el instalador de Laravel y navegue hasta ese directorio.

$ laravel new my-app
$ cd my-app

2. Instale el paquete laravel/ui composer

$ composer require laravel/ui

3. Instale el andamio Vue

El paquete laravel/ui tiene algunos comandos Artisan útiles que automáticamente distribuirán todo lo que necesita para comenzar.

$ php artisan ui vue

Notará que realiza algunos cambios en tu aplicación. Habrá más detalles sobre esos cambios a continuación.

4. Compile los archivos

Finalmente, deberá instalar las dependencias recién agregadas y compilarlas.

$ npm install && npm run dev

Nota: si está ejecutando esto por primera vez, es posible que Mix necesite instalar dependencias adicionales que se incorporarán automáticamente. Si ve un mensaje de error, simplemente ejecute npm run dev nuevamente.

5. Incluya /js/app.js en su vista

Su archivo app.js se compilará y guardará en public/js/app.js.  Como estamos usando Laravel Mix para compilarlo, podemos usar el método auxiliar mix() para generar la ruta correcta para nosotros. Se recomienda usar el ayudante mix() para que se use el nombre de archivo adecuado si está usando el control de versiones.

<script src="{{ mix('/js/app.js') }}"></script>

6. Agregue el elemento raíz Vue a su HTML

Asegúrese de tener también un elemento raíz con una identificación de aplicación para su andamio HTML. De lo contrario, Vue no sabrá dónde montar los componentes.

<div id="app">
<example-component></example-component>
</div>

Registro de componentes de Vue de un solo archivo

El paquete laravel / ui creará un nuevo directorio en resources/js/components. Aquí es donde puede agregar nuevos componentes de Vue. Notarás que el paquete laravel / ui agregó un archivo ExampleComponent.vue allí.

Una vez que cree su archivo de componente, deberá registrarlo con Vue. En Laravel, puedes hacerlo en tu archivo app.js principal (resources/js/app.js).

Notará que ExampleComponent ya está registrado.

Vue.component('example-component', require('./components/ExampleComponent.vue').default);

Siéntase libre de crear subdirectorios en su directorio resources/js/components/ para organizar sus archivos. Solo asegúrese de que la ruta en su método require() coincida con la estructura de su directorio.

Vue.component('admin-login-component', require('./components/Admin/AdminLoginComponent.vue').default);

Cambios de archivo

Notarás que el paquete laravel / ui realizará una serie de cambios en tus archivos.

package.json

Todos los paquetes necesarios se agregaron como dependencias.

  • vue
  • compilador-plantilla-vue

En particular, los paquetes vue se agregaron como dependencias. Los necesitaremos para usar Vue y compilar componentes de un solo archivo.

  • bootstrap
  • jquery
  • popper.js

Bootstrap y sus dependencias (jQuery, popper.js) se agregaron como dependencias en su proyecto. Estas dependencias adicionales se instalaron porque las vistas de andamio de autenticación opcionales de laravel/ui usan Bootstrap.

  • sass
  • sass-loader
  • resolve-url-loader

El CSS de Bootstrap está escrito en SASS. Estos paquetes SASS se incorporan para que podamos compilar correctamente nuestro SASS en CSS.

resources / js / app.js

Aquí inicializamos Vue e incluimos nuestros componentes para que estén disponibles en nuestroJS compilado.

recursos / js / bootstrap.js

Este archivo se modificó para cargar Bootstrap y jQuery.

webpack.mix.js

El método vue() agrega automáticamente algunas configuraciones necesarias de Babel que son necesarias para compilar componentes de un solo archivo.

Laravel Mix ahora también compila SASS en lugar de CSS.


Configuración manual de Vue sin usar laravel / ui

No necesita usar el paquete laravel/ui para agregar soporte para Vue. De hecho, puede optar por no hacerlo si no necesita las dependencias adicionales (como Bootstrap). Agregar soporte es bastante fácil.

1. Instalar dependencias npm

$ npm install --save-dev vue vue-template-compiler

2. Crea un componente

Cree un nuevo directorio llamado components en el directorio resources/js/.

Cree un nuevo archivo ExampleComponent.vue y rellénelo con el siguiente código.

<template>
<div>Hello, Example Component!</div>
</template>

<script>
export default {
mounted() {
console.log('Example component mounted.')
}
}
</script>

3. Inicialice

Necesitamos requerir el paquete Vue en nuestra aplicación, registrar nuestros componentes y luego inicializar nuestra aplicación.

Agregue lo siguiente a su archivo resources/js/app.js.

// Require Vue
window.Vue = require('vue').default;

// Register Vue Components
Vue.component('example-component', require('./components/ExampleComponent.vue').default);

// Initialize Vue
const app = new Vue({
el: '#app',
});

4. Agregue soporte Vue a Laravel Mix

Agregue el método vue() a su cadena de mezcla de Laravel.

Actualice lo siguiente en su archivo webpack.mix.js.

mix.js('resources/js/app.js', 'public/js')
.vue() // <- Add this
.postCss('resources/css/app.css', 'public/css', [
//
]);

5. Compile sus activos

$ npm run dev

Nota: si se trata de un proyecto nuevo, asegúrese de ejecutar npm install antes de ejecutar este comando.

6. Actualice tu HTML

Asegúrese de incluir su archivo javascript compilado en sus vistas HTML.

<script src="{{ mix('/js/app.js') }}"></script>

Además, asegúrese de tener un elemento raíz con una identificación de app.

<div id="app">
<example-component></example-component>
</div>

Observe que este #app id corresponde al id que le pasamos a Vue cuando lo inicializamos en el paso # 2. Por supuesto, puede nombrar esa identificación como desee. Solo asegúrese de que coincida con la configuración el al inicializar su aplicación Vue.

Ahora con suerte. Debería poder cargar su aplicación en el navegador y ver el componente Vue renderizado.

Recent Post