以一个案例为例,我想在一个页面中使用多个javascript库,如jquery,mootools,scriptalous。
这是个好主意吗?我应该这样做吗?
答案 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库会发生什么?
简单的答案:取决于。
从技术上讲,如果每个库正确“命名”其功能(并且名称空间不会发生冲突),不会声明任何全局函数,并且不覆盖/扩充任何本机对象原型,它们可以共存。但实际上,很可能存在冲突(例如,许多库定义了自己的$()
函数)。
找到最适合您需求的库并使用该库。