UMD javascript模块也可以在严格模式下工作

时间:2015-08-14 14:34:07

标签: node.js requirejs umd

我在重写这项工作时遇到了麻烦,无法在“严格”的情况下工作。模式。因为'这个'未明确定义我在编译时遇到jshint错误。我认为我的大脑不是在抽象地思考,而是找不到创造性的解决方案。任何帮助,将不胜感激。代码改编自通用模块定义Github回购:https://github.com/umdjs/umd/blob/master/returnExports.js

(function (root, factory) {
    if (typeof define === 'function' && define.amd) {
    // AMD Module
        define([], factory);
    } else if (typeof module === 'object' && module.exports) {
    // Node Module
        module.exports = factory();
    } else {
    // Browser Global
        root.returnExports = factory();
  }
}(this, function () {
    return {};
}));

1 个答案:

答案 0 :(得分:1)

查看您的代码,我发现root仅用于您在浏览器中的情况,这简化了事情。

这意味着我们可以使用以下表达式替换this

typeof window !== "undefined" ? window : undefined

这在严格模式下有效(我在Node中尝试过它,它返回undefined,没有错误),并且JSHint.com允许它。

如果在其他情况下也需要全局对象,则可以链接三元表达式。