这是浏览器JavaScript。假设我有一个外部JavaScript库:
// feature.js
var Feature = { /* ... */ }
通常,您在HTML中引用该文件,并在全局范围内获得Feature
变量。有没有办法从ES6模块导入它,这样它就不会污染它之外的全局作用域?这样的事情(不工作):
// index.js
import "/feature.js"
// Use feature
Feature.foo(); // Feature is not available here
同样在我的特定案例中,我注意到这个库在结尾处有一个UMD语句:
"undefined"!=typeof exports&&(exports.Gmail=Gmail)
所以我可以有一个类似这样的变通方法,但现在全局范围有一个exports
变量。这是一个很好的解决办法吗?有没有更好的方法将其保存在我的模块中?
(globalThis as any).exports ??= {};
// @ts-ignore
await import("/libs/jquery.min.js");
// @ts-ignore
await import("/libs/gmail.min.js");
const Gmail = (globalThis as any).exports.Gmail;
1条答案
按热度按时间bqjvbblv1#
不需要。你需要在这个库中添加一个
export
声明,没有其他方法可以绕过它。