【问题标题】:Vue: lazy loading from library (Bootstrap-Vue) inside a componentVue:从组件内的库(Bootstrap-Vue)延迟加载
【发布时间】:2020-08-02 01:30:37
【问题描述】:

我正在探索延迟加载功能,并尝试将其用于 Bootstrap-Vue 组件,但它不起作用。

如果我“正常”导入b-card,它会正确渲染:

import { BCard } from 'bootstrap-vue';
export default {
    components: {
        BCard
    }
};

但是当我尝试“延迟加载”语法时它不起作用:

export default {
    components: {        
        BCard: () => import('bootstrap-vue').BCard
    }
};

b-card 组件未渲染,但没有引发错误,在 Chrome 的 DOM 检查工具中,我可以看到占位符 <!----> 由 Vue 放置在 b-card 组件应该在的位置。我怀疑加载的库对象没有BCard 属性,但我不知道如何使用“惰性”语法访问库组件。

是否可以从库中延迟加载模块?怎么做?

【问题讨论】:

    标签: vue.js vuejs2 lazy-loading bootstrap-vue


    【解决方案1】:

    当动态导入模块时,您使用import 关键字作为函数,它会返回一个promise。因此,要访问模块组件,您可以使用以下语法:

    export default {
      components: {
        BCard: () => import('bootstrap-vue').then(module => module.BCard)
      }
    }
    

    【讨论】:

    • 谢谢!这确实有效!我尝试记录来自then - () => import('bootstrap-vue').then(module => {console.log(module)}) 的结果,以验证 promise shennanigans 是否在这里发挥作用,但由于某种原因,它似乎不起作用。至少我很接近。再次感谢! :)
    猜你喜欢
    • 1970-01-01
    • 2021-05-20
    • 2021-10-19
    • 2020-02-17
    • 2019-03-13
    • 2017-07-10
    • 2020-08-02
    • 2018-03-15
    • 1970-01-01
    相关资源
    最近更新 更多