有条件地加载 polyfills & bundles

问题描述

我正在编写一个使用 Resize Observer API 的小型库(这是第一次)。但是,我想为不支持它的浏览器包含 polyfill,并且仅在需要时才将其加载到最终构建中,尽管我不确定将 API 检查/模块加载放在哪里,或者如果此方法是正确的方法

假设我有我的索引文件,它是与库一起导出的主文件,我是否应该在函数定义之外添加此语句,如下所示:

// index.js
(async () => {
    if (!ResizeObserver in window) {
        const module = await import('resize-observer-polyfill');
        window.ResizeObserver = module.ResizeObserver
    }
}();

// main function exported
export default () => {
    function loadResizeObserver() {
        const ro = new ResizeObserver((entries) => {
            // ...
        })
    }
}

有没有更好的方法来编写这样的东西?如果消费者安装了软件包(有和没有原生 RO 支持?),这将如何影响构建以及包含的内容? 第一次发布,发现我对此一无所知。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)