Vue.js 中的异步组件如何实现懒加载?

Vue.js 中的异步组件可以实现懒加载,即当页面需要用到某个组件时才会去加载该组件的代码,而不是在页面初始化时就把所有组件的代码都加载进来。

要使用异步组件,需要在组件定义中使用工厂函数来返回一个 Promise 对象,当该 Promise 对象被解析时,返回一个组件对象,该组件对象就可以在页面中使用了。同时,为了避免页面加载时的空白,可以在组件定义中添加一个 loading 组件,当异步组件加载完成前,会先显示 loading 组件。

例如:

Vue.component('my-component', function (resolve, reject) {
  // 异步加载组件
  setTimeout(function () {
    // 成功时返回组件对象
    resolve({
      template: '<div>Hello World</div>'
    })
    // 失败时返回错误信息
    // reject('Load component failed')
  }, 1000)
})