使用多个AJAX库的最佳策略是什么?
我们可以分享使用多个AJAX库的哪些经验?
在Prototype中有有用的功能,在jQuery,Yahoo库等中有一些有用的功能。是否可以包含所有库并使用我们想要的每个库,它们通常都与名称空间一起很好地发挥作用,等等。为了速度起见包含的库的大小/数量是否有实际限制?或者可以忽略不计?是否存在可以特别好地协同工作的对(例如,原型/脚本)或者不兼容的对?
解决方案
回答
我现在在项目中并排使用jQuery和Microsof ajax工具套件的仅javascript文件版本。
我想我将使用jQuery,并最终删除了Microsoft。我对jQuery非常陌生,但是我对它了解的越多,就越迷恋。
回答
我也是jQuery的信徒,所以请原谅我对其他人的了解不足,但是...
使得jQuery如此出色的是无冲突模式,因此,例如,我们可以这样做:
$('#foobar').whatever();
使用无冲突模式,我们可以这样做:
var jq = jQuery.noConflict(); jq('#foobar').whatever();
少一件事担心。我以为原型提供了类似的功能,雅虎也提供了类似的功能。
但是无论如何,我不想过分提倡jQuery并让人们发疯,但是无论我们选择哪种库,我都认为它们都能满足我们所需的一切。尤其要考虑不必学习三个不同的库的好处。
这三个都应该有能力。选择最喜欢的一个并扩展它。 :)
回答
Ruby on Rails默认使用原型和Scriptaculous,因为两者之间几乎没有重叠。除此以外,我还使用了yui片段,并且从未遇到过问题。加载时间是一个问题,但是库通常是缓存的,因此仅在加载的第一页上。
回答
YUI具有很强的命名空间,因此不应与其他库冲突。
如前所述,我们可以在无冲突模式下运行jQuery。
原型确实存在一些与其他库配合使用的问题,部分原因是它(或者它曾经)修改了诸如"数组"之类的核心对象。 Protosafe尝试解决这些问题。
Script.aculo.us只是一个位于Prototype顶部的小部件库,因此,这两个显然应该很好地配合使用。
所有这些意味着我们可以在应用程序中使用YUI,jQuery,Prototype和Script.aculo.us,但是我们可能会发现使用单个库使维护内容变得容易得多。
回答
我们可以使用所有这些库,但是我强烈建议我们使用它。下载并执行大量JavaScript很可能会阻塞浏览器并减慢用户的使用体验。从用户的角度来看,从开发人员的角度来看会更好。更少的上下文/体系结构切换和更少的代码维护。
就像其他答案所说的那样,大多数都不会冲突。
有关更多信息,请参见Yahoo!的卓越性能网站。
回答
我们可以使用Google AJAX库API。
它为jQuery,prototype,script.aculo.us,MooTools和dojo提供了通用的发行网络和加载架构。
回答
最好的策略是不要使用多个库。想要在一个问题上抛出更多的库很诱人,但是它效率低下,容易出错,并且使代码很难被他人维护。
在大多数情况下,我们应该能够通过了解问题域以及哪个库将最好地解决问题来避免使用多个库。所有这些库都有大量的插件和扩展。
例如,JQuery开箱即用地支持跨域JSONP调用,并且在JQueryUI中有一个不错的小部件库,而Prototype不。
$.getJSON('http://anothersite.com/mashup.json?callback=?', function(data) { });
原型具有非常好的OO支持,并且很容易遍历DOM,但是缺少创建小部件和混搭所需的一些跨域功能。
var Foo = Class.create({ initialize: function(name) { this.name = name; } }); var Bar = Class.create(Foo, { initialize: function($super, name) { $super(name); } });
Mootools具有很好的效果,良好的OO支持,非常可靠的小部件和跨域请求,但是(这可能只是我的印象),开发社区与全球社区(在mootools之外)不那么协作和社交社区(原型就是这种方式)。这可能是由于他们的主要开发人员居住在美国境外,因此无法参加那么多会议并无法参与更大的社区。我不会完全阻止,但是要牢记这一点。