vue多页面项目中路由使用history模式的方法

2020-06-12 20:50:38易采站长站整理

前言

之前写了一个vue项目中需要添加一个打印的页面,需要使用多页面的模式进行开发,vue-cli3出初始化的项目配置多页面还是很容易的,但是发现print.html没有办法配置history模式的路由,一旦使用history模式的路由。写了一个简单的demo在网上寻求帮助没有能解决问题,后来没有办法只能使用hash模式完整项目了。

如何解决

有一天看webpack文档的时候,突然看到了

historyApiFallback
配置项,一瞬间感觉找到方法了。下班后回家就下载下之前的项目折腾了。

之前的vue.config.js中的配置是这样的,


const path = require('path')
function resolve (dir) {
return path.join(__dirname, dir)
}
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'));
}
}

然后根据 webpack文档 ,添加了如下代码:


configureWebpack: {
devServer: {
historyApiFallback: {
verbose: true,
rewrites: [
{ from: /^/index/.*$/, to: '/index.html'},
{from: /^/print/.*$/, to: '/print.html'}
] }
}
}

接下来启动项目去浏览器中验证,发现访问

 localhost:8080/print/hello 
和 
localhost:8080/index/hello-world 
能够分别访问到 print.html 和 index.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
}
]

在浏览器中访问,可以了~~~

项目地址 github

总结