使用Vue的异步组件有下面几种形式。

工厂函数

  1. Vue.component('my-component' function(resolve, reject) {
  2. setTimeout( function() {
  3. resolve({
  4. template: `<div>hello world</div>`
  5. });
  6. }, 1000 );
  7. } )

与webpack配合

  1. Vue.component('my-component', function(resolve, reject){
  2. require(['./my-component'], resolve);
  3. } );

工厂函数返回Promise

  1. Vue.component('my-component', () => import('./my-component') );

工厂函数返回对象

  1. Vue.component('my-component', () => ({
  2. // 需要加载的组件 (应该是一个 `Promise` 对象)
  3. component: import('./MyComponent.vue'),
  4. // 异步组件加载时使用的组件
  5. loading: LoadingComponent,
  6. // 加载失败时使用的组件
  7. error: ErrorComponent,
  8. // 展示加载时组件的延时时间。默认值是 200 (毫秒)
  9. delay: 200,
  10. // 如果提供了超时时间且组件加载也超时了,
  11. // 则使用加载失败时使用的组件。默认值是:`Infinity`
  12. timeout: 3000
  13. }) );

直接使用

  1. new Vue({
  2. components: {
  3. myComponent: () => import('./my-component')
  4. }
  5. })