以前写了一个vue项目中须要添加一个打印的页面,须要使用多页面的模式进行开发,vue-cli3出初始化的项目配置多页面仍是很容易的,可是发现print.html没有办法配置history模式的路由,一旦使用history模式的路由。写了一个简单的demo在网上寻求帮助没有能解决问题,后来没有办法只能使用hash模式完整项目了。html
有一天看webpack文档的时候,忽然看到了historyApiFallback配置项,一瞬间感受找到方法了。下班后回家就下载下以前的项目折腾了。
以前的vue.config.js中的配置是这样的,vue
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文档,添加了以下代码: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
页面。可是不能进入对应的路因为是修改各自的路由文件,修改完后的路由分别为:git
// 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 } ]
在浏览器中访问,能够了~~~
项目地址 githubgithub