Vue-router 懒加载 - 异步组件

当在使用 vue-router 来构建一个 vue 单页面应用的时候,如果应用的路有页面非常多的时候,应用打包后 Javascript 包(通常是app.js)会变得非常大,影响页面的加载,出现长时间的白屏。使用vue-router的懒加载机制可以使组件只有在需要的时候才会被加载,减小初始的app.js的大小(分成多个 js 文件)。
步骤也很简单:

  1. 只需要把路由对应的组件定义成异步组件:
const Foo = resolve => {
  require.ensure(['./Foo.vue'], () => {
    resolve(require('./Foo.vue'))
  })
}
  1. 在使用的时候, 还是和普通的路由组件引入一样:
const router = new VueRouter({
    routes: [
      { path: '/foo', component: 

2017.8.1修改

在官方英文的文档有着不一样的懒加载的操作方式,可能是因为鼓励大家多看看英文文档,所以并没有跟新到中文这边来~

  1. 步骤一: 通过一个返回 promise 对象构建一个异步组件
const A = () => Promise.resolve({ /* component definition */ })
  1. 步骤二: 通过webpack2 的新功能,可以设置一个 code-split
import('componentA.vue')

结合以上两点可以简单的写成:

const A = () => import('componentA.vue')

使用的时候直接使用这个定义的变量,指向该组件。
而原本的chunk定义也变得简单得多,在定义异步组件的时候通过注释来控制 chunk 的名字

const Foo = () => import(/* webpackChunkName: "group-foo" */ './Foo.vue')
const Bar = () => import(/* webpackChunkName: "group-foo" */ './Bar.vue')
const Baz = () => import(/* webpackChunkName: "group-foo" */ './Baz.vue')

vue-router官方文档
vue-router英文文档

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 牡丹传说 在一个隆冬大雪飘舞的日子,武则天在长安游后苑时,曾命百花同时开放,以助她的酒兴。下旨曰:“明早游上苑,火...
    王不懂Sir阅读 692评论 0 0
  • 1 业务受理分析 受理环节,是宅急送业务的开始,作为服务前端,客户通过电话、网络等多种方式进行委托业务受理员通过与...
    本物三十二画生阅读 277评论 0 0