环境修补与开源节点模块中的非环境修补webshims

时间:2014-10-16 10:12:28

标签: node-modules webshim

短版

作为网络应用程序开发人员,您是否可以使用需要一些ES5垫片(如these)的小工具或库才能在IE7& 8中使用?如果它包含这些垫片本身,从而修补您的全局JavaScript怎么样?

长版

当编写一个开源节点模块时,该模块也应该在IE7和IE8等旧浏览器中运行,我应该在哪里得到"我的ES5 Array.prototype.forEachObject.keys等等?

我应该依赖环境修补填充程序(如https://github.com/es-shims/es5-shim)或非环境修补填充程序(如https://www.npmjs.org/package/lodash.keys)吗?

原始问题is this

我提供了我自己的答案,但它没有结果。我想问一下:

  1. 这是什么标准?是否有共同政策?
  2. 是否存在有意义的性能影响?
  3. 我的答案还没有包含哪些其他好处和缺点?
  4. 是否有模块维护注意事项我没有考虑过?

1 个答案:

答案 0 :(得分:0)

环境修补垫片

像[{3}}这样的垫片“修补JavaScript上下文,以包含可以使用传统JavaScript引擎忠实模拟的所有EcmaScript 5方法”,从而允许我使用一些ES5方法编写模块。 / p>

缺点

  1. 我的模块代码更简单([1, 2, 3].forEach(function(){});)。
  2. 上升空间

    1. 如果我在那些需要它们的浏览器中进行测试,我必须在我的测试设置中包含填充程序。
    2. 我“强迫”我的模块的消费者依赖垫片。
    3. 非环境修补垫片“

      或者,可以使用https://github.com/es-shims/es5-shimlodash.keys之类的“非垫片”。

      上升空间

      1. 我的测试中不需要使用垫片。
      2. 我不强迫我的模块的消费者使用垫片。
      3. 缺点

        1. 我的模块代码不太漂亮,比如

          var forEach = require("foreach");
          forEach([1, 2, 3], function(){});
          

          我不能用作一种否定链接可能性的方法。