如果我在一个页面中组合多个Javascript库,会发生什么?

时间:2010-08-23 18:20:39

标签: javascript

以一个案例为例,我想在一个页面中使用多个javascript库,如jquery,mootools,scriptalous。

这是个好主意吗?我应该这样做吗?

4 个答案:

答案 0 :(得分:3)

这取决于图书馆。像YUI或jQuery这样的库使用严格的命名空间系统,这意味着它们可以一起愉快地运行。例如。模块模式http://www.yuiblog.com/blog/2007/06/12/module-pattern/

然而,使用原型模型的库(如MooTools或Prototype)要复杂得多。他们使用原型继承来修改本机对象,例如Array,Number和String。

虽然这提供了一些非常优雅的解决方案,并使图书馆开发人员能够“修复”JavaScript的一些固有问题,但这确实意味着他们很少能很好地一起玩。

同样,由于库可能看起来运行得很好,直到以某种模糊的方式使用特定的本机,你可能会出现间歇性的,并且非常难以解决,错误。

答案 1 :(得分:2)

  

这是个好主意吗?我应该这样做吗?

不,不。

有些情况下需要使用多个库 - 例如当使用大量需要库A的遗留代码时,其他部分使用库B - 但即使像jQuery的noConflict这样的插件可以带走一些痛苦,让它们一起工作通常很难。

由于这些库在内部处理DOM对象的方式,也存在大量内部参数反对同时使用多个DOM处理库。用户Bobince曾写过一篇关于此事的精彩帖子,遗憾的是我现在找不到它。

如果您没有迫切需要使用多个库,请坚持使用。

答案 2 :(得分:1)

您可能希望使用noConflict模式。像这样:http://api.jquery.com/jQuery.noConflict/

至于“你应该这样做吗?”......我会说不。在具有多个框架的冲突之外意味着更长的加载时间。

答案 3 :(得分:1)

  

如果我在一个页面中组合多个Javascript库会发生什么?

简单的答案:取决于。

从技术上讲,如果每个库正确“命名”其功能(并且名称空间不会发生冲突),不会声明任何全局函数,并且不覆盖/扩充任何本机对象原型,它们可以共存。但实际上,很可能存在冲突(例如,许多库定义了自己的$()函数)。

找到最适合您需求的库并使用该库。