0

众所周知,Internet Explorer(至少 <= 8)不支持多个 javascript 数组函数(indexOffilter等)。 这个 stackoverflow 答案为这些缺失的 Array 函数中的大多数提供了一些不错的实现。

我的问题是:最好是为您的网站提供类似答案中的实现,还是仅仅依赖外部库(jQuery 等)

有最佳实践吗?在这种情况下,我正在寻找比我更有实践经验的人的见解。

不依赖外部库总是一个优点(尽管它们在大多数情况下普遍存在)。但是不能保证任何自定义实现都会涵盖所有边缘情况,并且它引入了一些需要维护的东西。

4

2 回答 2

1

最佳实践可能是使用es5-shim,它可以让您在所有浏览器中使用 javascript,就好像它完全兼容 ECMAScript 5(有一些限制,例如Object.create无法模拟的第二个参数)。

这样做的绝对优势是它只作用于缺少此类扩展的浏览器,因此现代浏览器将使用内置优化版本的代码。

此外,您避免利用定义自己规范的外部库,如果 jQuery 有点损坏,就像$.each将参数与规范所说的相反Array.prototype.forEach,或者奇怪的命名约定,比如$.proxy做什么Function.prototype.bind

于 2012-06-15T20:19:25.133 回答
0

其他人很难回答什么是可取的和不可取的,但这是我更喜欢的:

如果它只是少数几个功能,那么我可能会自己实现它们。但是,就像您说的那样,您可能无法考虑所有边缘情况(至少不能立即考虑),并且您添加了更多需要维护的内容。流行的库(如Underscore.js这对您的情况很有用)由许多人(通常)制作和维护,他们的主要关注点是该库的功能和性能。因此,他们更有可能比您更快地找到并解决任何问题。随着项目的进展,您可能会发现图书馆可以为您做的事情越来越多。很有可能存在他们已经考虑并考虑到的跨浏览器问题,而您直到测试很长时间才会注意到,或者更糟糕的是,客户抱怨。

了解一个流行的库也可以为未来的项目节省时间。对您和/或任何雇主/客户来说,对一个好的图书馆更有信心还有好处。

话虽如此 - 这是一个权衡,因为大多数库包含的功能比您最终使用的要多,因此浪费的空间会导致消耗更多的带宽和使用不必要的内存。带宽问题主要通过适当的缓存来解决。

此外,那里有大量优秀的库,几乎可以用于任何事情 - 因此,如果您使用太多库并使用太多库,您很容易最终不得不包含许多 100 千字节甚至更多的 Javascript。

所以总结一下:我更愿意将实用功能的创建和维护外包给那些想要免费做这些事情的人,而不是将我的时间和精力花在更直接为最终用户创造价值的事情上。

于 2012-06-15T20:36:37.763 回答