你有使用多个 AJAX 库的经验吗?
Prototype、jQuery、Yahoo 等库都有一些有用的特性。是否可以包含所有库并从中选择你想要的部分,它们是否通常可以在命名空间方面完美地协作?为了速度考虑,包含的库的大小/数量是否存在实际限制,还是这些限制可以忽略不计?是否有特别适合配对使用的库(例如 Prototype/Scriptaculous),或者有一些库是不兼容的?
你有使用多个 AJAX 库的经验吗?
Prototype、jQuery、Yahoo 等库都有一些有用的特性。是否可以包含所有库并从中选择你想要的部分,它们是否通常可以在命名空间方面完美地协作?为了速度考虑,包含的库的大小/数量是否存在实际限制,还是这些限制可以忽略不计?是否有特别适合配对使用的库(例如 Prototype/Scriptaculous),或者有一些库是不兼容的?
YUI的命名空间很强,因此不会与其他库冲突。
如前所述,您可以在jQuery中运行无冲突模式。
Prototype确实存在一些问题,部分原因是它(或者它曾经)修改了核心对象,例如Array
。Protosafe试图解决这些问题。
Script.aculo.us只是一个小部件库,位于Prototype之上,因此这两个库应该可以很好地配合使用。
所有这些意味着您可以在应用程序中使用YUI、jQuery、Prototype和Script.aculo.us,但您可能会发现仅使用一个库使维护事项变得更加容易。
$('#foobar').whatever();
var jq = jQuery.noConflict();
jq('#foobar').whatever();
少了一件要担心的事情。我想原型提供了类似的功能,雅虎也是如此。
但无论如何,我不想过度推崇jQuery并让人们生气,但无论选择哪个库,我认为它们都可以满足你所需的几乎所有功能。特别是考虑到不需要学习三个不同的库的好处。
这三个库都应该有能力。选择你最喜欢的一个并扩展它。 :)
最好的策略是不要使用多个库。虽然想要在问题上投入更多的库很诱人,但这是低效、容易出错的,并且会让代码难以被他人维护。
在大多数情况下,您应该能够通过了解您的问题域和哪个库将帮助您最好地解决它来避免使用多个库。同时,所有这些库都有大量的插件和扩展程序。
例如,JQuery支持跨域JSONP调用,并且在JQueryUI中具有漂亮的小部件库,而Prototype则没有。
$.getJSON('http://anothersite.com/mashup.json?callback=?', function(data) { });
Prototype具有非常好的面向对象支持,并且遍历DOM很容易,但缺少创建小部件和混搭所需的跨域功能。
var Foo = Class.create({
initialize: function(name) {
this.name = name;
}
});
var Bar = Class.create(Foo, {
initialize: function($super, name) {
$super(name);
}
});
我目前正在项目中同时使用jQuery和仅javascript文件版本的Microsoft ajax工具包。
我想我会选择jQuery并最终删除Microsoft。我对jQuery非常陌生,但是越了解它,越喜欢它。
Ruby on Rails 默认同时使用 prototype 和 Scriptaculous,因为两者之间几乎没有重叠。我还额外使用了 yui 片段,并且从未遇到过问题。加载时间是一个问题,但这些库通常会被缓存,所以只在第一页加载时才会有影响。