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-loaderper 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.vueque 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
