Vue框架的兴起改变了前端开发的方式,其简单易用、高效灵活的特点受到了广大开发者的认可。而Webpack作为一款强大的模块打包工具,也在前端工程化的发展中扮演了重要角色。本文将会介绍一个小而美的Vue项目实战,使用轻量级的Vue.js和Webpack进行开发,能够快速上手,为初学者提供学习参考。
- 前置知识
在学习本文前,我们需要具备以下知识储备:
• 基础的HTML、CSS、JavaScript开发能力;
• Vue.js基础知识和常见API的使用;
• Webpack基础知识和常见配置项的使用。
若对以上知识还不熟悉,建议先进行基础学习和实践。
- 项目开发流程
我们将从以下几个步骤进行项目开发:
• 初始化项目
• 安装依赖
• 配置Webpack
• 进行页面布局设计
• 编写Vue组件
• 打包项目
接下来,让我们一步步进入Vue和Webpack的应用开发之旅。
- 初始化项目
使用Vue-cli可以快速生成Vue.js项目的骨架,并预设了一些常用的配置项,方便我们快速开发。这里我们使用Vue-cli来初始化项目。
第一步,先安装Vue-cli工具:
npm install -g @vue/cli
第二步,用Vue-cli创建一个新的项目,在命令行中进入工作目录:
vue create vue-webpack-project
这里我们创建的项目名为vue-webpack-project,Vue-cli会在当前目录下生成一个名为vue-webpack-project的项目文件夹。
- 安装依赖
进入项目根目录,运行以下命令安装需要的依赖:
npm install vue vue-router --save
这里我们需要安装的依赖包括Vue.js和Vue-router,Vue-router是一个Vue.js官方提供的路由插件,可以很方便地处理前端路由相关问题。
- 配置Webpack
在实际开发中,Webpack的配置通常比写代码还来得复杂,因此我们只需要配置一些常用的配置项即可。
第一步,新建一个webpack.config.js文件,用于存放Webpack的配置:
const path = require('path');
const { VueLoaderPlugin } = require('vue-loader');
module.exports = {
entry: './src/main.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js'
},
module: {
rules: [
{
test: /.vue$/,
use: 'vue-loader'
},
{
test: /.js$/,
use: 'babel-loader'
},
{
test: /.css$/,
use: [
'vue-style-loader',
'css-loader'
]
}
]
},
plugins: [
new VueLoaderPlugin()
]
};
这里我们配置了三个规则:处理.vue文件的vue-loader、处理.js文件的babel-loader、处理.css文件的css-loader和vue-style-loader插件。
第二步,修改package.json文件,在scripts属性中增加一个命令,用于在项目根目录运行Webpack:
{
"scripts": {
"build": "webpack"
},
……
}
- 进行页面布局设计
在项目开发前,我们需要先进行页面布局设计。这里我们使用ElementUI组件库进行快速开发,直接在HTML文件中使用组件即可。
<!DOCTYPE html>
<html>
<head>
<title>vue-webpack-project</title>
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head>
<body>
<div id="app">
<el-container>
<el-header>Header</el-header>
<el-container>
<el-aside>Aside</el-aside>
<el-main>Main</el-main>
</el-container>
</el-container>
</div>
<script src="./dist/bundle.js"></script>
</body>
</html>
- 编写Vue组件
在src目录下,新建两个.vue文件:Header.vue和Main.vue,代码如下:
Header.vue
<template>
<el-header>
<h1>Header</h1>
</el-header>
</template>
<script>
export default {
}
</script>
<style scoped>
el-header {
text-align: center;
color: #fff;
background-color: #409EFF;
}
</style>
Main.vue
<template>
<el-main>
<h1>Main</h1>
</el-main>
</template>
<
.........................................................