jQuery和Prototype目前有什么区别?

时间:2010-01-14 13:27:10

标签: javascript jquery ruby-on-rails prototypejs

最近几个月我一直在构建一个Ruby on Rails网站,我只使用了少量内置的JavaScript函数。但是,我将在未来几周和几个月内进行更多的JavaScript开发,我正在讨论要使用哪个JavaScript框架。

一方面,jQuery似乎更受欢迎,但是再次将Prototype内置到Rails中。几年前我还在网上阅读了一些文章,讨论jQuery在某些方面是如何更简洁,但在其他方面更加简洁,并提出各种其他意见。

所以我的问题是那些同时使用(最近最近)的人:

  • 从纯JavaScript和Ruby on Rails角度使用Prototype和jQuery有什么不同?
  • 它们之间是否存在显着差异,或者它们在功能和代码编写方面现在彼此非常接近?
  • 就必须重新制作的事物和必须重写的代码而言,转换成本有多高?

由于

4 个答案:

答案 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库。