Articles

Com utilitzar Laravel amb Vue.js 3

Vue.js és un dels frameworks JavaScript més utilitzats per crear interfícies web i aplicacions d'una sola pàgina, juntament amb Laravel es converteix en una eina de desenvolupament molt potent.

Per al desenvolupament d'aplicacions web, una eina molt utilitzada és vuejs, i en aquest article veurem com instal·lar-lo i utilitzar-lo amb Laravel. El marc de Vue.js era definito marc progressiu perquè està especialitzat en la creació de vistes HTML, i permet integrar fàcilment amb components d'altres biblioteques i projectes.

L'èxit de Vue.js també es deu a l'elecció de laravel per suggerir-lo com a framework d'interfície, donant lloc així al llançament de la versió 2.0.

Creació del projecte Laravel

El primer pas és, per descomptat, crear un nou projecte a Laravel. Si en teniu un a l'ordinador, utilitzeu-lo o podeu crear-ne un de nou només per a aquest tutorial.

composer create-project laravel/laravel guide-laravel-vue

Un cop iniciat el projecte, haureu d'instal·lar el fitxer npm addiccions. Per fer-ho, executeu l'ordre següent dins del directori del vostre projecte:

npm install

Un cop instal·lades les dependències, executeu l'ordre següent per crear els recursos i assegurar-vos que tot funciona realment:

npm run dev

La comanda npm run dev realitza una varietat de comprovacions i construccions, en particular Laravel Mix compilar el fitxer resources/js/app.js i el fitxer resources/css/app.css en fitxers public/js/app.js e public/css/app.css.

Quan acabis, si tot funciona bé, veuràs alguna cosa com això:

Instal·lant Vue.js

Després de preparar el projecte Laravel, podem procedir a instal·lar Vue.js 3. Per fer-ho, executeu l'ordre següent al directori del vostre projecte:

npm install --save-dev vue

Això instal·larà Vue.js com una de les dependències de desenvolupament. Després de compilar els actius, el vostre fitxer JavaScript de producció serà autònom, de manera que només cal que instal·leu Vue.js com a dependència de desenvolupament.

Per assegurar-vos que Vue 3 s'ha instal·lat correctament, obriu el fitxer package.json (present a l'arrel del projecte) i cercar "vue" a la secció "devDependencies":

// package.json

{
    "private": true,
    "scripts": {
        "dev": "npm run development",
        "development": "mix",
        "watch": "mix watch",
        "watch-poll": "mix watch -- --watch-options-poll=1000",
        "hot": "mix watch --hot",
        "prod": "npm run production",
        "production": "mix --production"
    },
    "devDependencies": {
        "axios": "^0.21",
        "laravel-mix": "^6.0.6",
        "lodash": "^4.17.19",
        "postcss": "^8.1.14",
        "vue": "^3.2.37"
    }
}

Com podeu veure, el número de versió indica que Vue.js 3 s'ha instal·lat. 

Primer intent de Vue.js

Al fitxer welcome.blade.php poseu el codi següent:

<div id="vue-app">
    {{ text }}
</div>
<script>
window.vueApp = new Vue({
  el: '#vue-app',
  data: {
    text: 'Hello World from Vue!'
  }
});
</script>

Com podeu veure hem creat un element div amb id "vue-app“. Dins de l'element script hem creat una instància de Vue, on passem al constructor un objecte que ens permet defiacabar alguns paràmetres de l'aplicació, com ara dades i comportaments, en el nostre cas:

  • el: Referència a l'element div defiacabat a l'html
  • data: conjunt de dades

Tan bon punt es crea l'objecte, Vue adquireix el div amb id vue-app i s'encarrega de substituir el marcador de posició {{ text }} amb el valor contingut a l'objecte de dades. Per descomptat, aquest objecte pot contenir més d'una propietat, fins i tot de diferents tipus: són vàlids números, matrius i altres objectes imbricats.

Butlletí d'innovació
No et perdis les notícies més importants sobre innovació. Registra't per rebre'ls per correu electrònic.

A més d'aquesta substitució, Vue també ha activat el seu motor i ha fet que l'aplicació respongui, és a dir, qualsevol canvi a la propietat del text provocarà una actualització instantània de l'element corresponent a l'HTML.

Segona prova de Vue.js

Per passar a la segona prova, primer haureu d'instanciar l'aplicació per crear un component nou. Tu obris resources/app.js (o resources/js/app.js) i actualitzar-ne el contingut de la manera següent:

// resources/app.js

require('./bootstrap');

import { createApp } from 'vue';
import HelloVue from '../components/HelloVue.vue';

createApp({
    components: {
        HelloVue,
    }
}).mount('#app');

En aquest fitxer estem creant una nova instància Vue.js, i per fer-ho necessitem un component Vue que hem anomenat HelloVue.vue. Per a més informació consultar els documents oficials . 

Creeu un fitxer nou resources/components/HelloVue.vue i introduïu el codi següent:

// resources/components/HelloVue.vue

<template>
  <h1>Hello Vue!</h1>
</template>

<script>
export default {
    name: 'HelloVue'
}
</script>

El fitxer que acabem de crear és un component bàsic de Vue.js que s'imprimeix Hello Vue! Venir header1 a la pàgina. Finalment, obriu el webpack.mix.js fitxer a l'arrel del projecte i actualitzeu-ne el contingut de la següent manera:

// webpack.mix.js

const mix = require('laravel-mix');

mix.js('resources/js/app.js', 'public/js')
    .vue({
        version: 3,
    })
    .postCss('resources/css/app.css', 'public/css', [
        //
    ]);

En aquest fitxer, la crida al mètode .vue() compilarà qualsevol codi Vue.js i l'agruparà al fitxer JavaScript de producció. La funció accepta un objecte on podeu defiacabeu la versió de Vue.js que feu servir. 

Després d'editar el fitxer webpack.mix.js heu de compilar el codi javascript. Per fer-ho, tornem a executar l'ordre npm run dev.

Finalment, per provar Vue de manera operativa, obriu el fitxer resources/views/welcome.blade.php i introduïu el codi següent:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Laravel Vue</title>
    <script src="{{ asset('js/app.js') }}" defer></script>
</head>
<body>
    <div id="app">
        <hello-vue />
    </div>
</body>
</html>

El codi, juntament amb el component creat anteriorment, produirà un missatge de vídeo Hola Vue!, a causa que la instància Vue.js està muntada en un element HTML amb id app.

Executeu la vostra aplicació utilitzant php artisan serve, i obriu-lo al vostre navegador preferit.

Ercole Palmeri

També us pot interessar ...

Butlletí d'innovació
No et perdis les notícies més importants sobre innovació. Registra't per rebre'ls per correu electrònic.

Articles recents

Veeam ofereix el suport més complet per a ransomware, des de la protecció fins a la resposta i la recuperació

Coveware de Veeam continuarà oferint serveis de resposta a incidents d'extorsió cibernètica. Coveware oferirà capacitats forenses i de reparació...

23 2024 abril

Revolució verda i digital: com el manteniment predictiu està transformant la indústria del petroli i del gas

El manteniment predictiu està revolucionant el sector del petroli i el gas, amb un enfocament innovador i proactiu a la gestió de les plantes.…

22 2024 abril

El regulador antimonopoli del Regne Unit aixeca l'alarma de BigTech sobre GenAI

La CMA del Regne Unit ha emès una advertència sobre el comportament de Big Tech al mercat de la intel·ligència artificial. Allà…

18 2024 abril

Casa Green: revolució energètica per a un futur sostenible a Itàlia

El Decret "Case Green", formulat per la Unió Europea per millorar l'eficiència energètica dels edificis, ha conclòs el seu procés legislatiu amb...

18 2024 abril