我的JavaScript项目中有es5-shim.js和underscore.js。
es5-shim.js只需在Internet Explorer和一些旧浏览器的数组上添加一些javascript本机函数,如reduce
和some
。 underscore.js添加相同的东西(但使用不同的语法)和更多的东西(对象和数组上的实用程序函数)。
但是,如果es5-shim添加的函数存在,则underscore.js会使用它们。
因此,在像Firefox或Chrome这样的“最近”浏览器中,underscore.js使用浏览器的本机功能。我认为它比纯粹的javascript函数更好。 但是在Internet Explorer上,underscore.js使用es5-shim函数。如果我删除es5-shim.js,则underscore.js使用自己的函数。
对此有何建议?我应该从我的项目中删除es5-shim并仅使用underscore.js吗?或者我应该让underscore.js使用es5-shim的函数?
答案 0 :(得分:10)
我不同意@ganeshi's answer。
如果你主要使用的是Underscore,那就是ES5之类的东西,比如reduce()和some(),那么我建议你删除underscore.js。
如果您现在编码为ES5方法,则可以在不再支持IE8或Firefox 3时删除ES5-shim。
如果您现在使用下划线,那么当您不再支持IE8或Firefox 3时,您仍会携带大多数浏览器已经提供的大量内容的额外副本。
答案 1 :(得分:4)
也就是说,es5-shim增加了一些函数,如Date.now,Date.toJSON,Function.bind,String.trim(以及更多),这些函数在Underscore.js中没有直接的等价物。例如,Underscore提供的_.bind和_.bindAll等同于Function.bind,但是Underscore.js不提供Date.now和Date.toJSON。
因此,如果您使用es5-shim提供的这些其他方法,您可以在应用程序中同时使用es5-shim和Underscore.js。但是,如果您不使用这些额外的方法,那么使用es5-shim只会增加应用程序的大小并浪费带宽。