使用多个 AJAX 库的最佳策略是什么?
-
09-06-2019 - |
题
关于使用多个 AJAX 库,您可以分享哪些经验?
Prototype 中有一些有用的功能,jQuery、Yahoo 库等也有一些有用的功能。是否可以包含所有库并使用每个库中您想要的内容,它们通常都可以与名称空间很好地配合使用吗?为了速度的缘故,要包含的库的大小/数量是否有实际限制,或者可以忽略不计?是否有一些组合特别适合一起工作(例如原型/Scriptaculous)还是没有的配对?
解决方案
您可以使用所有这些库,但我强烈建议不要使用它。下载并执行这么多 JavaScript 很可能会阻塞浏览器并降低用户体验。从用户和开发人员的角度来看,选择一个会更好。上下文/架构切换更少,需要维护的代码也更少。
正如其他答案所说,大多数并不冲突。
参见雅虎的 卓越的性能 网站了解更多信息。
其他提示
你可以使用 Google AJAX 库 API。它为 jQuery、prototype、script.aculo.us、MooTools 和 dojo 提供通用的分发网络和加载架构
YUI 的命名空间非常强大,因此不应与其他库发生冲突。
如前所述,您可以在无冲突模式下运行 jQuery。
原型 做 在与其他库配合良好时存在一些问题,部分原因是它(或它曾经)修改了核心对象,例如 Array
. 原型安全 尝试解决这些问题。
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,但缺乏创建小部件和混搭所需的一些跨域功能。
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 默认同时使用prototype 和Scriptaculous,因为两者之间几乎没有重叠。除此之外我还使用了 yui snippets 并且从未遇到过问题。加载时间是一个问题,但库通常会被缓存,因此仅在加载的第一页上。