Vue.js的异步组件是什么?如何使用异步组件?

Vue.js 的异步组件是指在渲染组件时,异步获取组件的定义。这可以用于缩减打包文件大小,以及在用户访问路由时加载组件。

使用异步组件的三种方式:

  1. 工厂函数:
js
Vue.component('async-example', () => {
  // 该函数会接收一个 resolve callback
  // 在组件定义好之后,利用 resolve 执行回调
  setTimeout(() => {
    resolve({
      template: '<div>I am async!</div>'
    })
  }, 1000)  
})
  1. Promise:
js
Vue.component(
  'async-example',
  () => new Promise(resolve => {
    setTimeout(() => {
      resolve({
        template: '<div>I am async!</div>'
      })
    }, 1000)
  })
)  
  1. 异步导入:
js
Vue.component(
  'async-example',
  () => import('./components/async-example')
)

无论采取何种方式,组件的实例都会被创建为一个普通组件,用户看不出任何差异。

使用异步组件的好处:

  1. 按需加载:只有在需要渲染异步组件时才会加在其依赖,可以显著加快应用的初始渲染速度。
  2. 解耦部署与构建:异步组件不会打包进最终的捆绑文件中,而是作为单独的 JavaScript 文件进行加载。这允许我们在构建之后动态加载新的组件。

使用注意点:

  1. 异步组件确保在组件成功解析前调用 Vue.component() 注册该组件。
  2. 异步组件工厂函数应该返回 Promise 对象或一个回调接收 resolve 作为参数。
  3. 异步组件也可以使用在路由配置中,处理按需加载的路由组件。