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
  }
]

 

posted @ 2020-10-30 14:34  没事看看电影  阅读(1646)  评论(0编辑  收藏  举报