charleyup

为自己吹过的🐮🍺奋斗终生.

Vue路由懒加载(history模式)

2017/12/30

当打包构建应用时,Javascript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。

结合 Vue 的异步组件和 Webpack 的代码分割功能,轻松实现路由组件的懒加载。

具体实现如下:

// router.js
import Vue from "vue";
import VueRouter from "vue-router";
Vue.use(VueRouter);

export default new VueRouter({
    mode: "history",
    routes: [
        {
            path: "/home",
            name: "home",
            component: () => import(/* webpackChunkName: "home" */ './Home.vue');
        },
        {
            path: "/ahout",
            name: "about",
            component: () => import(/* webpackChunkName: "about" */ './About.vue');
        }
    ]
});
// .babelrc
{
    plugins: [ "@babel/plugin-syntax-dynamic-import" ]
}

开发阶段webpack配置

// webpack.dev.config.js
module.exports = {
    // ...
    devServer: {
        historyApiFallback: true
    }
}

生产环境nginx配置

location / {
  try_files $uri $uri/ /index.html;
}