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