En aquest tema, aprendrem com configurar Webpack per a un projecte Vue.js. Vue.js és un framework progressiu per a la construcció d'interfícies d'usuari, i Webpack és una eina excel·lent per gestionar els recursos i optimitzar el rendiment de les aplicacions Vue.
Objectius
- Configurar un projecte Vue amb Webpack.
- Utilitzar
vue-loader
per gestionar components Vue. - Configurar Webpack per a un entorn de desenvolupament i producció amb Vue.
Requisits Previs
- Coneixements bàsics de Vue.js.
- Coneixements bàsics de Webpack.
Passos per Configurar Webpack amb Vue
- Inicialitzar el Projecte
Primer, crearem un nou projecte i instal·larem les dependències necessàries.
- Instal·lar les Dependències
Instal·larem Vue, Webpack i altres paquets necessaris.
- Estructura del Projecte
Organitzarem el projecte amb la següent estructura:
vue-webpack-project/ ├── dist/ ├── src/ │ ├── components/ │ │ └── HelloWorld.vue │ ├── App.vue │ └── main.js ├── package.json ├── webpack.config.js └── index.html
- Crear Components Vue
Crearem un component bàsic HelloWorld.vue
dins de src/components/
.
<!-- src/components/HelloWorld.vue --> <template> <div> <h1>{{ message }}</h1> </div> </template> <script> export default { data() { return { message: 'Hello, Vue with Webpack!' }; } }; </script> <style scoped> h1 { color: #42b983; } </style>
- Crear el Component Principal
Crearem el component principal App.vue
.
<!-- src/App.vue --> <template> <div id="app"> <HelloWorld /> </div> </template> <script> import HelloWorld from './components/HelloWorld.vue'; export default { components: { HelloWorld } }; </script> <style> #app { font-family: Avenir, Helvetica, Arial, sans-serif; text-align: center; color: #2c3e50; margin-top: 60px; } </style>
- Punt d'Entrada
Crearem el fitxer main.js
com a punt d'entrada.
// src/main.js import Vue from 'vue'; import App from './App.vue'; new Vue({ render: h => h(App), }).$mount('#app');
- Fitxer HTML
Crearem el fitxer index.html
per carregar l'aplicació.
<!-- index.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vue with Webpack</title> </head> <body> <div id="app"></div> <script src="bundle.js"></script> </body> </html>
- Configuració de Webpack
Crearem el fitxer de configuració de Webpack webpack.config.js
.
// webpack.config.js const path = require('path'); const VueLoaderPlugin = require('vue-loader/lib/plugin'); module.exports = { entry: './src/main.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'bundle.js' }, module: { rules: [ { test: /\.vue$/, loader: 'vue-loader' }, { test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/ }, { test: /\.css$/, use: [ 'vue-style-loader', 'css-loader' ] } ] }, plugins: [ new VueLoaderPlugin() ], devServer: { contentBase: path.join(__dirname, 'dist'), compress: true, port: 9000 } };
- Scripts de NPM
Actualitzarem el package.json
per afegir scripts de desenvolupament i producció.
// package.json { "name": "vue-webpack-project", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "dev": "webpack serve --mode development", "build": "webpack --mode production" }, "dependencies": { "vue": "^2.6.12" }, "devDependencies": { "vue-loader": "^15.9.6", "vue-template-compiler": "^2.6.12", "webpack": "^5.38.1", "webpack-cli": "^4.7.0", "webpack-dev-server": "^3.11.2", "babel-loader": "^8.2.2", "css-loader": "^5.2.6", "vue-style-loader": "^4.1.3" } }
- Executar el Projecte
Finalment, executarem el projecte en mode desenvolupament.
Exercici Pràctic
- Afegir un Nou Component: Crea un nou component
GoodbyeWorld.vue
que mostri el missatge "Goodbye, Vue with Webpack!" i inclou-lo en el componentApp.vue
.
Solució
<!-- src/components/GoodbyeWorld.vue --> <template> <div> <h1>{{ message }}</h1> </div> </template> <script> export default { data() { return { message: 'Goodbye, Vue with Webpack!' }; } }; </script> <style scoped> h1 { color: #ff6347; } </style>
<!-- src/App.vue --> <template> <div id="app"> <HelloWorld /> <GoodbyeWorld /> </div> </template> <script> import HelloWorld from './components/HelloWorld.vue'; import GoodbyeWorld from './components/GoodbyeWorld.vue'; export default { components: { HelloWorld, GoodbyeWorld } }; </script> <style> #app { font-family: Avenir, Helvetica, Arial, sans-serif; text-align: center; color: #2c3e50; margin-top: 60px; } </style>
Conclusió
En aquesta secció, hem après a configurar un projecte Vue.js amb Webpack, incloent-hi la configuració de vue-loader
i la creació de components bàsics. Aquesta configuració ens permet aprofitar al màxim les capacitats de Webpack per optimitzar i gestionar els nostres projectes Vue. En el següent mòdul, explorarem tècniques avançades i integracions amb altres eines.
Curs de Webpack
Mòdul 1: Introducció a Webpack
- Què és Webpack?
- Configuració de Webpack
- Fitxer de Configuració de Webpack
- Construcció Bàsica amb Webpack
Mòdul 2: Conceptes Bàsics
Mòdul 3: Configuració Avançada
Mòdul 4: Eines de Desenvolupament
Mòdul 5: Optimització per a Producció
Mòdul 6: Integracions i Tècniques Avançades
- Integració amb Babel
- Integració amb TypeScript
- Ús de Webpack amb React
- Ús de Webpack amb Vue
- Plugins i Loaders Personalitzats
Mòdul 7: Projectes del Món Real
- Configuració d'un Projecte React
- Configuració d'un Projecte Vue
- Configuració d'un Projecte Node.js
- Migració de Projectes Heretats a Webpack