Javascript jQuery和Prototype之间当前的区别是什么?

Javascript jQuery和Prototype之间当前的区别是什么?,javascript,jquery,ruby-on-rails,prototypejs,Javascript,Jquery,Ruby On Rails,Prototypejs,近几个月来,我一直在构建一个RubyonRails站点,只使用了少量内置JavaScript函数。然而,在接下来的几周和几个月里,我将进行更多的JavaScript开发,我正在讨论使用哪种JavaScript框架 一方面,jQuery似乎更受欢迎,但原型已经内置到Rails中。我也在网上读了几年前的一堆文章,讨论jQuery在某些方面如何更简洁,但在其他方面如何马虎,并给出了各种其他观点 因此,我的问题是向使用这两种方法的人提出的(最好是最近): 从纯JavaScript和RubyonRail

近几个月来,我一直在构建一个RubyonRails站点,只使用了少量内置JavaScript函数。然而,在接下来的几周和几个月里,我将进行更多的JavaScript开发,我正在讨论使用哪种JavaScript框架

一方面,jQuery似乎更受欢迎,但原型已经内置到Rails中。我也在网上读了几年前的一堆文章,讨论jQuery在某些方面如何更简洁,但在其他方面如何马虎,并给出了各种其他观点

因此,我的问题是向使用这两种方法的人提出的(最好是最近):

  • 从纯JavaScript和RubyonRails的角度使用Prototype和jQuery有什么区别
  • 它们之间是否存在显著差异,或者在功能和代码编写方面是否彼此非常接近
  • 就必须重新学习的内容和必须重写的代码而言,转换成本有多高

感谢之前的讨论

如果不是你所有的问题都已经讨论过的话,那就太多了。见或:

从原型切换到JQuery

我正在从原型转换到JQuery的过程中,主要是出于性能的原因(我见过太多的基准测试,原型总是排在JQuery、MooTools和Dojo的最后)。我想说转换成本并不可怕,因为大多数基本概念(选择、效果、Ajax)都非常相似。然而,每一行原型代码都必须仔细重写——特别是因为许多辅助函数和构造(
$
$$
)看起来非常相似

如果您的代码包含许多复杂的链式结构,这些结构也可以在Jquery中使用,但功能不同,那么迁移可能会成为一项非常麻烦的任务。如果您仅将其用于快速$()元素选择、效果和一点Ajax,则不需要太多


无论哪种方式,都要为紧张的学习阶段做好准备。JQuery结构小而智能,但读IMHO却很糟糕(与一块原生Javascript相比,它看起来糟透了,但这是另一种讨论)。如果您来自不同的框架或本机Javascript,那么熟悉语法和原则肯定需要时间

与原型相比,使用jQuery的方式有很大的不同,一旦习惯了框架的细微差别,就很容易在两者之间切换

一开始最大的障碍是原型会立即将自己挂接到dom中。一旦您将其包含到页面中,您查找的所有dom元素都将附加原型功能。在使用jQuery选择器$('css-class')访问一个元素之前,jQuery将保留所有元素。从该调用返回的对象将附加jQuery方法

如果您想轻松地使用jQuery,可以使用prototype保留所有内容,包括jQuery和调用
jQuery.noConflict()。这将把“$”方法返回原型,并允许您通过调用jQuery('css-class')来使用jQuery

如果您想完全跳转到jQuery,我建议您使用jRails插件()。它将替换所有rails ajax助手,并让他们使用jQuery而不是prototype。我在很多项目中都这样做过,从来没有遇到过任何问题


最后,您应该看看prototype和jQuery,看看哪一个适合您的编码风格。两个框架可以实现相同的功能,只是语法和思维方式略有不同。

jQuery对于小型智能客户端效果更为有效。prototypejs对于深度javascript开发更有效


jQuery有很多插件,可以实现健壮的UI效果。prototypejs有一个完整的用于枚举、函数和散列的库。

Pekka的答案很好,但需要补充的是Rails正朝着Javascript框架无关的方向发展。尽管Rails刚问世时,它的AJAX集成是创新的,但自那时以来Javascript的环境发生了巨大的变化,Rails集成不再符合最佳实践。因此,原型集成不应该被认为是Rails 2.3目前的主要因素,它在Rails 3.0中的作用甚至更小,Rails 3.0可能在未来几个月内发布。我最近读了一篇文章,描述了Rails多年来Javascript集成的一些最重要的变化

我当前的项目有数千行遗留原型代码,但我们最近开始使用jQuery,因为它的好处太大了,不容错过。我的印象:

Prototype是一个成熟的框架,能够很好地支持浏览器差异,并提供全面的功能。不幸的是,它对默认Javascript环境的更改有点过于苛刻,而且它没有看到快速的开发,也没有一个重要的插件生态系统


jQuery是一个较新的框架,它能够利用早期javascript框架(如Prototype)的一些经验,创建更模块化、不那么突兀、更强大和简洁的东西。我仍然喜欢Prototype,但jQuery的DOM操作和插件生态系统太好了,不能再忽视了。如果我要开始一个绿地项目,我必须使用jQuery,因为这似乎是创新的地方(至少在这两个选择之间)。

是什么让你说原型对于深度Javascript开发更有效?图书馆本身更有效