代码之家  ›  专栏  ›  技术社区  ›  Dominik Grabiec

jquery和原型之间当前的区别是什么?[关闭]

  •  8
  • Dominik Grabiec  · 技术社区  · 16 年前

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

    一方面,jquery似乎更受欢迎,但是原型已经内置到Rails中了。几年前,我还在网上阅读了一系列文章,讨论了jquery在某些方面是如何更简洁的,但在其他方面是如何马虎的,并给出了各种其他意见。

    所以我的问题是那些同时使用这两种方法的人 (最好是最近) :

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

    谢谢

    4 回复  |  直到 14 年前
        1
  •  13
  •   Community Mohan Dere    9 年前

    上一次讨论

    很多,如果不是所有的问题都已经讨论过的话。见 search 或:

    从原型切换到jquery

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

    如果您的代码包含许多复杂的链接结构,这些结构可能在jquery中也可用,但功能不同,迁移可能会成为一项非常麻烦的任务。如果您只将它用于快速的$()元素选择、效果和一点Ajax,那么就不多了。

    不管怎样,都要为紧张的学习做好准备。jquery结构小而聪明,但是读imho很糟糕(与一块本地的javascript相比,它看起来很糟糕,但这是另外一个讨论)。如果您来自不同的框架或本机JavaScript,那么您一定要花时间熟悉语法和原则。

        2
  •  9
  •   gtd    16 年前

    Pekka的回答很好,但有一点需要补充,那就是Rails正朝着JavaScript框架不可知论的方向发展。虽然当Rails首次出现时,它的Ajax集成是创新的,但从那时起,Javascript环境发生了巨大变化,而且Rails集成不再真正符合最佳实践。因此,在Rails2.3中,原型集成不应该被认为是今天的主要因素,而且它将比Rails3.0中的一个因素还要小,Rails3.0可能会在未来几个月内发布。我最近读到了 an interesting article 描述了几年来Rails Javascript集成的一些最重要的变化。

    我当前的项目有数千行遗留原型代码,但是我们最近开始使用jquery,因为它的好处太大了,无法忽略。我的印象:

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

    JQuery 是一个更新的框架,能够利用早期JavaScript框架(如原型)的一些经验教训,创建更模块化、更不引人注目、更强大和更简洁的框架。我仍然喜欢原型,但jquery的dom操作和插件生态系统太好了,不能再忽视了。如果我要启动一个绿色领域的项目,我就必须使用jquery,因为这似乎就是创新发生的地方(至少在这两个选择之间)。

        3
  •  3
  •   John Duff    16 年前

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

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

    如果您想轻松地进入jquery,可以使用原型保留所有内容,并包括jquery和call jQuery.noConflict(); http://docs.jquery.com/Core/jQuery.noConflict .这将使“$”方法返回原型,并允许您通过调用jquery(“css-class”)来使用jquery。

    如果您想完全跳转到jquery,我建议您使用jrails插件( http://github.com/aaronchi/jrails )它将替换所有的Rails Ajax助手,让它们使用jQuery而不是原型。我在很多项目中都这样做过,从来没有遇到过任何问题。

    最后,您应该看看原型和jquery,看看哪一个适合您的编码风格。您可以用两个框架完成相同的事情,这只是每个框架的语法和思维方式略有不同。

        4
  •  2
  •   Alsciende    16 年前

    jquery对于小型智能客户端效果更有效。原型对于深入的JavaScript开发更有效。

    jquery有许多插件,用于实现强大的用户界面效果。Protopejs有一个完整的可枚举、函数和哈希库。