【问题标题】:Webpack - Code splitting: split library into it's own fileWebpack - 代码拆分:将库拆分为自己的文件
【发布时间】:2020-01-30 19:56:31
【问题描述】:

我正在使用 webpack 分块来拆分我的组件

使用这两个库 -

  1. "babel-plugin-dynamic-import-webpack": "^1.1.0",
  2. "babel-plugin-syntax-dynamic-import": "^6.18.0",

当我对组件进行延迟加载时 -

const component1 = () => import(/* webpackChunkName: "components" */ '../components/Component1.vue');

效果很好 但是当我尝试延迟加载像 bootstrap-vue 这样的库时 -

const BootstrapVue = () => import(/* webpackChunkName: "bootstrap-vue" */ 'bootstrap-vue')
Vue.use(BootstrapVue);

它给了我一个错误,说 bootstrap-vue 组件是未知的 -

错误信息:Unknown custom element: <b-container> - did you register the component correctly?

但如果我只是正常地做import BootstrapVue from 'bootstrap-vue',它就可以正常工作。但它没有代码拆分。

使用 webpack 分块导入库并制作自己的文件的好方法是什么?

Webpack 配置。我正在使用 laravel-mix -

webpackConfig.output = {
    chunkFilename: 'js/[name].bundle.js',
    publicPath: '/',
}

【问题讨论】:

标签: javascript laravel vue.js webpack babeljs


【解决方案1】:

import 返回一个 Promise。所以这个:

const promise = import(/* webpackChunkName: "bootstrap-vue" */ 'bootstrap-vue');

promise.then(BootstrapVue => {
  Vue.use(BootstrapVue);
  new Vue({
    render: h => h(App)
  }).$mount('#app');
});

将在 Promise 解决后引导 Vue。

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 2019-08-19
    • 2017-05-31
    • 1970-01-01
    相关资源
    最近更新 更多