【发布时间】:2020-09-09 10:42:39
【问题描述】:
这是我的问题:我创建了一个库以在 Chrome 扩展程序中使用。这个库导出了两个类,一个应该在后台脚本中导入,一个在内容脚本中。
后台脚本(以及扩展页面中使用的其他脚本)可以处理模块,所以我想使用 ES6 模块的原生“导入”/“导出”功能。
内容脚本不支持模块。这意味着如果我在库脚本中使用“export”关键字,则会引发错误,并且我将无法再使用该库。
目前,我根本没有实现模块,这解决了问题,但我想实现这个功能,以便在有人可以访问它时使用它。
有没有办法为这两种脚本提供我的库功能作为模块和非模块?这真的是我应该做的吗?
【问题讨论】:
-
除了How to import ES6 modules in content script for Chrome Extension 中列出的方法之外别无他法,当然也可以使用 webpack 或类似工具构建扩展。
-
感谢您的评论。我确实看到了那个线程,动态导入真的很酷,但是那里解释的方法不能应用于广泛的用户(记住这是一个库)。动态导入(在我的情况下这是唯一可用的方法)对于 chrome 版本可能有点过于严格......你怎么看?
-
"有没有办法将我的库功能作为模块和非模块提供" - 是的,当然有。但不是作为单个文件。您将需要分发 ES6 构建和脚本构建。
-
感谢@Bergi,这看起来是一个不错的折衷方案(尽管我必须想出一个好方法来为此设置开发环境)。如果没有更好的答案,我可能会这样做
标签: javascript google-chrome-extension es6-modules