编辑:这不是关于胖箭头。这也是不是通过这一个IIFE。这是一个与转译器相关的问题。
所以我为我正在开发的一个小应用程序创建了一个简单的 pub-sub。我在 ES6 中编写它以使用传播/休息并省去一些麻烦。我用 npm 和 gulp 设置它来转译它,但它让我发疯。
我把它变成了一个浏览器库,但意识到它可以在任何地方使用,所以我决定让它兼容 Commonjs 和 AMD。
这是我的代码的精简版本:
(function(root, factory) {
if(typeof define === 'function' && define.amd) {
define([], function() {
return (root.simplePubSub = factory())
});
} else if(typeof module === 'object' && module.exports) {
module.exports = (root.simplePubSub = factory())
} else {
root.simplePubSub = root.SPS = factory()
}
}(this, function() {
// return SimplePubSub
});
但是,不管我什么(如使这个变量和传递),将其设置到未定义。
}(undefined, function() {
这可能与 Babel 不知道这将是什么并将其转译有关,但是我可以采取其他任何方法吗?
更新:通过}((window || module || {}), function() {
而不是这个似乎有效。我不确定这是最好的方法。