下面是“webpack4手动搭建Vue开发环境实现todoList项目的方法”的完整攻略。
步骤一:初始化项目
先创建一个新的文件夹,进入文件夹中进行以下操作:
1.使用npm初始化项目:
npm init
根据提示输入项目信息。
2.安装webpack和webpack-cli:
npm install webpack webpack-cli --save-dev
步骤二:安装其他依赖
1.安装vue, vue-template-compiler 和 vue-loader:
npm install vue vue-template-compiler vue-loader --save-dev
2.安装css-loader, style-loader:
npm install css-loader style-loader --save-dev
步骤三:创建Webpack配置文件
在项目的根目录下创建webpack.config.js文件,配置webpack的入口,出口等信息:
const path = require('path');
module.exports = {
entry: './src/main.js',
output: {
path: path.resolve(__dirname, './dist'),
filename: 'bundle.js'
},
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.css$/,
use: [
'style-loader',
'css-loader',
],
},
]
}
};
在上面的代码中,我们定义了入口文件为src/main.js,打包后生成的文件为dist/bundle.js,同时我们添加了vue-loader和css-loader作为模块的loader。
步骤四:创建Webpack插件
在此步骤中,我们将安装html-webpack-plugin,该插件可以自动将bundle.js注入HTML文件中并生成一个新的文件。
npm install html-webpack-plugin --save-dev
修改webpack.config.js文件,加入html-webpack-plugin的配置:
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
//...省略其它配置
plugins:[
new HtmlWebpackPlugin({
template:'./src/index.html',//指定模板页面
filename:'index.html',//指定生成的页面名称
inject:true,//是否将打包后的脚本注入到模板页面中
}),
]
};
步骤五:创建Vue组件
在src目录下创建App.vue文件作为Vue组件,组件的代码如下:
<template>
<div>
<h1>Todo List</h1>
<input type="text" placeholder="Add a to-do item" v-model="newItem" />
<button @click="addItem">Add</button>
<ul>
<li v-for="(item, index) in items" :key="index">
<div class="item-dec">{{ item }}</div>
<div class="item-btns">
<button @click="deleteItem(index)">Delete</button>
</div>
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
newItem: '',
items: [],
};
},
methods: {
addItem() {
if (this.newItem !== '') {
this.items.push(this.newItem);
this.newItem = '';
}
},
deleteItem(index) {
this.items.splice(index, 1);
},
},
};
</script>
<style>
.item-dec {
display: inline-block;
width: 80%;
}
.item-btns {
display: inline-block;
width: 20%;
text-align: right;
}
</style>
步骤六:创建JavaScript入口文件
在src目录下创建main.js文件,并在其中导入Vue和App组件:
import Vue from 'vue';
import App from './App.vue';
new Vue({
el: '#app',
render: h => h(App),
});
在此,我们使用了Vue的渲染函数(render function),来渲染我们的App组件。
步骤七:创建HTML模板文件
在src目录下创建一个index.html文件,使用Webpack打包时,该文件会被处理并输出到目标文件夹(我们在Step3中配置的是dist目录)。
在index.html中,我们需要包含我们的打包后的文件(bundle.js)和根元素(在本例中指的是id为app的div元素)。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>TodoList App</title>
</head>
<body>
<div id="app"></div>
<script src="./bundle.js"></script>
</body>
</html>
步骤八:创建启动应用的脚本
在项目根目录下创建一个启动应用的脚本,比如命名为run.js,代码如下:
const webpack = require('webpack');
const webpackConfig = require('./webpack.config.js');
webpack(webpackConfig, (err, stats) => {
if (err || stats.hasErrors()) {
// 构建过程出现错误
console.error(err);
return;
}
console.log('构建完成');
});
步骤九:使用命令启动应用
在package.json文件中添加如下npm命令:
{
"scripts": {
"dev": "node run.js"
}
}
现在我们的开发环境的配置已经完成,可以使用npm run dev命令在浏览器中运行应用了。
在浏览器中访问 http://localhost:8080/ ,即可看到todoList的页面。
下面是一个示例(示例代码中省略掉了部分骨架代码):
webpack.config.js文件:
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: './src/main.js',
output: {
path: path.resolve(__dirname, './dist'),
filename: 'bundle.js'
},
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.css$/,
use: [
'style-loader',
'css-loader',
],
},
]
},
plugins:[
new HtmlWebpackPlugin({
template:'./src/index.html',
filename:'index.html',
inject:true,
}),
]
};
App.vue文件:
<template>
<div>
<h1>Todo List</h1>
<input type="text" placeholder="Add a to-do item" v-model="newItem" />
<button @click="addItem">Add</button>
<ul>
<li v-for="(item, index) in items" :key="index">
<div class="item-dec">{{ item }}</div>
<div class="item-btns">
<button @click="deleteItem(index)">Delete</button>
</div>
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
newItem: '',
items: [],
};
},
methods: {
addItem() {
if (this.newItem !== '') {
this.items.push(this.newItem);
this.newItem = '';
}
},
deleteItem(index) {
this.items.splice(index, 1);
},
},
};
</script>
<style>
.item-dec {
display: inline-block;
width: 80%;
}
.item-btns {
display: inline-block;
width: 20%;
text-align: right;
}
</style>
main.js文件:
import Vue from 'vue';
import App from './App.vue';
new Vue({
el: '#app',
render: h => h(App),
});
index.html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>TodoList App</title>
</head>
<body>
<div id="app"></div>
<script src="./bundle.js"></script>
</body>
</html>
run.js文件:
const webpack = require('webpack');
const webpackConfig = require('./webpack.config.js');
webpack(webpackConfig, (err, stats) => {
if (err || stats.hasErrors()) {
console.error(err);
return;
}
console.log('构建完成');
});
完整示例代码可以在我的github中找到(https://github.com/zhangxiangliang/webpack-vue-todoList)。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:webpack4手动搭建Vue开发环境实现todoList项目的方法 - Python技术站