Vue.js多页面项目中路由使用history模式的方法
采用vue分页后,因为指向的是单个html文件,无法配置history模式的路由。通过搜索发现了historyApiFallback
配置项,下面先写一下注意事项。
1. router.js 和 this.$router.push 需要加上前缀如:path: '/index/hello-world',
2. vue.config.js 配置publicPath: '/' (坏处是打包后的html直接打开白屏)
3.项目上线仍需要后台nigx重定向路由
配置:const path = require('path')function resolve ( return path.join(__dirname, d}
module.exports = {
pages: {
index: {
entry: 'src/main.js',
template: 'public/index.html',
filename: 'index.html',
title: 'Index Page',
},
print: {
entry: 'src/print/main.js',
template: 'public/print.html',
filename: 'print.html',
title: 'print Page',
}
},
chainWebpack: config => {
config.resolve.alias
.set('@', resolve('src'))
.set('assets',resolve('src/assets'))
.set('components',resolve('src/components'));
},
configureWebpack: {
devServer: {
historyApiFallback: {
verbose: true,
rewrites: [
{ from: /^\/index\/.*$/, to: '/index.html'},
{from: /^\/print\/.*$/, to: '/print.html'}
]
}
}
}
路由:
// print import HelloWold from '../components/HelloWorld' import goBack from '../components/GoBack' export default [ { path: '/print/hello', name: 'print', component: HelloWold }, { path: '/print/go-back', name: 'print', component: goBack } ] // index import HelloWold from '../components/HelloWorld.vue' export default [ { path: '/index/hello-world', name: 'hello-world', component: HelloWold } ]