0

精简版

作为 Web 应用程序开发人员,您是否会接受需要一些ES5 垫片才能在 IE7 和 8 中工作的小工具或库?如果它包含这些 shims 本身,从而修补您的全局 JavaScript 怎么样?

长版

在编写一个也可以在 IE7 和 IE8 等旧浏览器中运行的开源节点模块时,我应该在哪里“获取”我的 ES5Array.prototype.forEachObject.keys

我应该依赖环境修补垫片(例如https://github.com/es-shims/es5-shim)还是非环境修补垫片(例如https://www.npmjs.org/package/lodash.键)?

原来的问题是这个

我对此提供了自己的答案,但尚无定论。我想问一下:

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

1 回答 1

0

环境修补垫片

https://github.com/es-shims/es5-shim “monkey-patch a JavaScript context to contain all EcmaScript 5 methods that can be compatible with a legacy JavaScript engine”之类的 Shims,因此允许我用一些 ES5 方法。

缺点

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

好处

  1. 如果我在需要它们的浏览器中进行测试,我必须在我的测试设置中包含垫片。
  2. 我“强迫”我的模块的消费者依赖垫片。

非环境修补垫片"

或者,可以使用类似lodash.keysor的“非垫片” 。foreach

好处

  1. 我不需要在测试中使用垫片。
  2. 我不会“强迫”我的模块的消费者使用垫片。

缺点

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

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

    而且我不能用作一种方法,它否定了链接的可能性。

于 2014-10-16T10:12:27.560 回答