vue官方提供的命令行工具vue-cli,能够快速搭建单页应用。默认一个页面入口index.html,那么,如果我们需要多页面该如何配置,实际上也不复杂
假设要新建的页面是rule,以下以rule为例
创建新的html页面
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<!DOCTYPE html> < html > < head > < meta charset = "utf-8" > < meta name = "viewport" content = "width=device-width,initial-scale=1.0" > < meta content = "width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" name = "viewport" > < meta http-equiv = "pragma" content = "no-cache" > < meta http-equiv = "cache-control" content = "no-cache" > < meta http-equiv = "expires" content = "0" > < title ></ title > </ head > < body > < span style = "color:#000000;" >< div id = "rule" ></ div ></ span > <!-- built files will be auto injected --> </ body > </ html > |
创建入口文件Rule.vue和rule.js,仿照App.vue和main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
< template > < div id = "rule" > < router-view ></ router-view > </ div > </ template > < script > export default { name: 'lottery', data() { return { } }, mounted: function() { this.$router.replace({ path:'/rule' }); }, } </ script > < style lang = "less" > body{ margin:0; padding:0; } </ style > |
rule.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import Vue from 'vue' import Rule from './Rule.vue' import router from './router' import $ from 'jquery' //import vConsole from 'vconsole' import fastclick from 'fastclick' Vue.config.productionTip = false fastclick.attach(document.body) Vue.config.productionTip = false; /* eslint-disable no-new */ new Vue({ el: '#rule', router, template: '< Rule />', components: { Rule }, }) |
修改config/index.js
build添加rule地址,即编译后生成的rule.html的地址和名字
1
2
3
4
5
6
|
build: { // Template for index.html index: path.resolve(__dirname, '../dist/index.php'), rule: path.resolve(__dirname, '../dist/rule.php'), …… } |
rule: path.resolve(__dirname, '../dist/rule.php')表示编译后再dist文件下,rule.html编译后文件名为rule.php
修改build/webpack.base.conf.js
配置entry
1
2
3
4
|
entry: { app: './src/main.js', rule: './src/rule.js' }, |
修改build/webpack.dev.conf.js
在plugins增加
1
2
3
4
5
6
|
new HtmlWebpackPlugin({ filename: 'rule.html', template: 'rule.html', inject: true, chunks:['rule'] }), |
修改build/webpack.prod.conf.js
在plugins增加
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
new HtmlWebpackPlugin({ filename: config.build.rule, template: 'rule.html', inject: true, minify: { removeComments: true, collapseWhitespace: true, removeAttributeQuotes: true // more options: // https://github.com/kangax/html-minifier#options-quick-reference }, // necessary to consistently work with multiple chunks via CommonsChunkPlugin chunksSortMode: 'dependency', chunks: ['manifest','vendor','rule'] }), |
以上全部
当后台地址跳转到你的新建的页面后,由于现在配置的默认路由是公用的,可自己配置多个路由文件,分别引用。
可在Rule.vue中路由跳转到指定路由,以实现页面控制
1
2
3
4
5
6
|
mounted: function() { this.$router.replace({ path:'/rule' }); }, |
本着资源共享的原则,欢迎各位朋友在此基础上完善,并进一步分享,让我们的实现更加优雅。如果有任何疑问和需要进一步交流可以留言沟通
Testner创始人(testner.club) Sea