最近几个月我一直在构建一个Ruby on Rails网站,我只使用了少量内置的JavaScript函数。但是,我将在未来几周和几个月内进行更多的JavaScript开发,我正在讨论要使用哪个JavaScript框架。
一方面,jQuery似乎更受欢迎,但是再次将Prototype内置到Rails中。几年前我还在网上阅读了一些文章,讨论jQuery在某些方面是如何更简洁,但在其他方面更加简洁,并提出各种其他意见。
所以我的问题是那些同时使用(最近最近)的人:
由于
答案 0 :(得分:13)
之前的讨论
很多,如果不是你的所有问题都已经讨论过了。请参阅search或:
从Prototype切换到JQuery
我正在从Protoype切换到JQuery,主要是出于性能原因(我看到过很多基准测试,Prototype总是最后出现在JQuery,MooTools和Dojo中。)我会说切换成本并不可怕,因为大多数基本概念(Selection,Effects,Ajax)非常相似。但是,每一行Prototype代码都必须仔细重写 - 特别是因为许多辅助函数和结构($
$$
)看起来很相似。
如果您的代码包含许多可能在Jquery中可用的复杂链式构造,但功能不同,迁移可能会变得非常麻烦。如果你只使用它来快速$()元素选择,效果和一些Ajax,而不是那么多。
无论哪种方式,都要为激烈学习的阶段做好准备。 JQuery构造虽然小而且聪明,但是阅读恕我直言是很糟糕的(与一个原生Javascript块相比看起来很糟糕,但这是一个不同的讨论)。如果您来自不同的框架或本机Javascript,那么熟悉语法和原则肯定需要时间。
答案 1 :(得分:9)
Pekka的答案很棒,但有一点需要补充的是,Rails正朝着Javascript框架无关的方向发展。虽然当Rails第一次出现时,它的AJAX集成是创新的,Javascript格局从那时起发生了巨大的变化,而Rails集成并没有真正实现最佳实践。因此,原型集成不应该被认为是Rails 2.3的主要因素,而且它将在未来几个月内发布的Rails 3.0中更少。我最近阅读了an interesting article,描述了多年来Rails的Javascript集成的一些最重要的变化。
我目前的项目有数千行遗留原型代码,但我们最近开始使用jQuery,因为它的好处太大了,无法通过。我的印象:
Prototype 是一个成熟的框架,可以很好地支持浏览器差异并提供非常全面的功能。不幸的是,它对默认Javascript环境的改变有点笨拙,并且它没有看到快速开发并且没有重要的插件生态系统。
jQuery 是一个较新的框架,它能够利用早期javascript框架(如Prototype)的一些课程来创建更模块化,更少突兀,更强大和简洁的东西。我仍然喜欢Prototype,但jQuery的DOM操作和插件生态系统太好了,不能再忽视了。如果我开始一个绿地项目,我必须使用jQuery,因为这似乎是创新发生的地方(至少在这两个选择之间)。
答案 2 :(得分:3)
与原型相比,使用jQuery的方式有很大差异,一旦你习惯了框架的细微差别,就可以很容易地在它们之间切换。
一开始最大的障碍就是Prototype立刻将自己挂在了dom上。只要将其包含在页面中,您查找的所有dom元素都将附加原型功能。使用jQuery,它会保留所有元素,直到您使用jQuery选择器$('css-class')访问它。从该调用中返回的对象将附加jQuery方法。
如果你想让自己轻松进入jQuery,你可以使用原型保留所有内容并包含jQuery并调用jQuery.noConflict();
http://docs.jquery.com/Core/jQuery.noConflict。这将使'$'方法回到原型,让你通过调用jQuery('css-class')来使用jQuery。
如果你想完全跳转到jQuery,我建议使用jRails插件(http://github.com/aaronchi/jrails)。它将取代所有的轨道ajax助手,让他们使用jQuery而不是原型。我已经在很多项目中完成了这项工作,从未遇到任何问题。
最后你应该看看原型和jQuery,看看哪一个适合你的编码风格。你可以用两个框架完成同样的事情,它只是一种略有不同的语法和思维方式。
答案 3 :(得分:2)
jQuery对小型智能客户端效果更有效。 prototypejs对于深度javascript开发更有效。
jQuery有很多用于强大UI效果的插件。 prototypejs有一个完整的Enumerables,Functions,Hashes库。