xiaokeqi / i-learned

1 stars 0 forks source link

vue异步组件 #32

Open xiaokeqi opened 4 years ago

xiaokeqi commented 4 years ago

通过以工厂函数的方式,定义一个组件,来做组件代码分割,从而实现按需加载

xiaokeqi commented 4 years ago

一个推荐的做法是将异步组件和 webpack 的 code-splitting 功能一起配合使用:

Vue.component('async-webpack-example', function (resolve) {
  // 这个特殊的 `require` 语法将会告诉 webpack
  // 自动将你的构建代码切割成多个包,这些包
  // 会通过 Ajax 请求加载
  require(['./my-async-component'], resolve)
})
xiaokeqi commented 4 years ago

你也可以在工厂函数中返回一个 Promise,所以把 webpack 2 和 ES2015 语法加在一起,我们可以写成这样:


Vue.component(
  'async-webpack-example',
  // 这个 `import` 函数会返回一个 `Promise` 对象。
  () => import('./my-async-component')
)
xiaokeqi commented 4 years ago

当使用局部注册的时候,你也可以直接提供一个返回 Promise 的函数:

new Vue({
  // ...
  components: {
    'my-component': () => import('./my-async-component')
  }
})