有时我想将mootools用于某些事物,而将 Prototype &script.aculo.us
用于其他事物,但在同一个站点内。我什至考虑过添加其他人,但担心冲突。任何人都有经验,还是我只是想让事情对自己来说太复杂了?
7 回答
如果您真的非常想这样做,那么您将能够没有太多问题 - 主库被设计为在它们自己的命名空间内表现良好,但有几个值得注意的例外 - 来自将 JQuery 与其他框架一起使用:
jQuery 库及其几乎所有插件都被限制在 jQuery 命名空间内。作为一般规则,“全局”对象也存储在 jQuery 命名空间内,因此您不应该在 jQuery 和任何其他库(如 Prototype、MooTools 或 YUI)之间发生冲突。
也就是说,有一个警告:默认情况下,jQuery 使用“$”作为“jQuery”的快捷方式,您可以覆盖它。
所以,是的,你可以做到,但你可能会为自己制造更麻烦的维护问题 - 框架功能之间的细微差别今天对你来说可能很明显,但在 6 个月后回来,它可能会完全不同故事!因此,我建议尽可能保持简单,并在代码库中尽可能少地使用不同的框架(最好是 1 个!)。
AFAIK,所有流行的框架都旨在与其他框架相结合。我不认为将它们结合起来有那么大的问题。但是,我不鼓励纯粹从带宽需求的情况下组合它们。与更复杂的开发体验相比,缓慢的网站体验更不可原谅。
最近的一个问题:jQuery 和原型冲突
Prototype.js 库曾经非常令人反感,并且与许多其他库/代码发生冲突。然而,据我所知,他们最近放弃了一些非常核心的工作人员,例如更换 Element 对象等。
你最好坚持每个应用程序使用一个框架。否则您的客户将花费太多时间/带宽下载 javascript。
话虽如此,Prototype 和 JQuery 可以一起工作。信息在 JQuery 网站上。
我的建议是很好地学习一个(或多个!)框架,以便您能够复制您需要的功能,而不会增加多个框架的开销。
请记住,您向客户端推送的代码越多,一切都会变得越慢。
根据我的经验,我可以说一些 javascript 库与浏览器冲突,而不是彼此冲突。我的意思是:有时针对某些库编写的代码与针对浏览器 DOM 编写的代码不能很好地共存。
我的 Framework Scanner 工具可用于查找库之间的 JS/CSS 冲突: