【问题标题】:shall I move from prototype to jquery?我应该从原型转移到 jquery 吗?
【发布时间】:2011-02-03 10:05:58
【问题描述】:

最后我感觉jQuery 正在慢慢成为 JS 库中的事实标准(我可能错了!),或者至少它比其他框架更活跃。

例如,我一直在寻找类似 Componente 的优秀开源日历,并找到了基于 jQuery 的 http://fullcalendar.vinsol.com/

我们一直在用 Prototype 做一些很小的事情,比如它的选择器功能(主要是 $ 函数作为 document.getElementById 的快捷方式),在页面加载时执行一些 JS 并发出一些非常简单的Ajax 调用。

所以我想迁移应该很简单,但我想知道从 Prototype 迁移到 jQuery 的利弊。

另一方面,我想将它们两个放在一起并不是一个好的选择,特别是考虑到迁移应该非常简单。我说的对吗?

编辑:一些有用的资源:

【问题讨论】:

    标签: jquery migration prototypejs javascript-framework


    【解决方案1】:

    Prototype 和 JQuery 涵盖非常相似的领域。多年来,我一直使用 Prototype 作为我的主要 JS 框架,并且我正在迁移到 JQuery。原因如下:

    • JQuery 更快。在我见过的所有性能比较中,原型排在最后(随机选择here)。我也有一个长期的主观印象,即 Prototype 的效果总体上较慢,尤其是在旧机器上。

    • JQuery 似乎更受欢迎,不仅如此,而且在 Stack Overflow 上也是如此。这意味着更容易获得支持,并且可用插件和现成代码的数量要多得多。这不是我的核心原因,但加上 jQuery 是技术上更完善的平台的总体印象,选择变得显而易见。

    我唯一不喜欢的是:

    • JQuery 代码看起来很糟糕。我非常喜欢 JQuery 及其哲学非常,但我经常讨厌查看代码。如果有人想出一种 JQuery 方言,它看起来像普通的 JavaScript 一样漂亮和结构化,我很乐意加入。 :)

    关于 cmets: 补充说明我不喜欢 jQuery 的编码风格。

    一句话:括号。成千上万的人:)

    说真的。我意识到很多被认为是“jQuery 风格”的东西是完全可选的快捷方式和速记。尽管如此,从代码可读性和可维护性的角度来看,我发现大量的 jQuery 代码非常更难以阅读和使用。是的,随着 jQuery 经验的增长,这将变得更加容易,但是,我希望我的代码即使是外人也能阅读。在这方面,jQuery 并没有朝着 IMO 的正确方向发展。大部分代码都很简单丑陋。这是迄今为止我对这个伟大框架的唯一主要批评。

    尽管方法链,@noah,以及像新的 .delay() 或它的名字这样的东西,我认为完全是摇滚。我并没有反对。

    【讨论】:

    • 不争论,只是好奇代码的哪些方面你不喜欢?
    • 也不争辩:但我和 Paul 看起来一样惊讶 :)
    • 您的意思是您不喜欢使用 jQuery 编写的代码?例如,方法链之类的?
    • 刚刚看到您提出的另一点 - 您希望您的代码即使完全是局外人也可以阅读。根据上下文,我假设您的意思是对您使用的语言/平台没有经验的人,对吗?如果是这样,那是完全不切实际的愿望。不了解一种语言的人不太可能在不学习语法的情况下理解该语言中的任何重要代码。
    • @Charles 不,我不是那种极端的意思。我的意思是 .. 需要一个更好的词,physical,即代码的即时清晰度、可读性和结构,与原生 JS IMO 相比,在 jQuery 中被削弱了。其中大部分是由速记引起的。正如我所说,我知道我抱怨的大部分内容是一组完全可选的约定,但实际上,它仍然使代码通常比原生 JS、C、 或 i> 爪哇。我在这里有一些来自 SO 的极端例子,但我需要一些时间才能找到它们。
    【解决方案2】:

    据我所知,Prototype 和 jQuery 大部分是重叠的,只是 jQuery 主要关注 DOM 操作、ajax、事件等,并没有真正具有 Prototype 的一些功能,如类、继承等但是,如果你不需要这些东西,而只想要一个跨浏览器的 DOM manip、ajax、事件等框架,那么我认为 jQuery 是要走的路。

    【讨论】:

    • 但同时,我不认为你可以用 Prototype 做任何你不能用 jQuery 做的事情(在实践中)。是的,有些细节不能直接翻译,但我还没有遇到任何让我回到 Prototype 的问题。
    • 同意,只是说如果你只需要一个 js lib 是跨浏览器的 DOM manip 和 ajax,jquery 是(恕我直言)最好的选择。
    【解决方案3】:

    您可以同时使用它们。只需在 jQuery 加载后调用jQuery.noConflict();。然后你必须写jQuery("whatever") 而不是$("whatever")。 Prototype 提供了很多 jQuery 没有的功能。

    不过,Prototype 即将退出市场。 jQuery 现在是王者,并且有一些很好的理由。如果你想要最新的插件和小部件,jQuery 将会拥有它们。

    Underscore.js 提供了与 Prototype 大部分相同的功能,同时又不与对象原型和全局命名空间混淆。下划线加上 jQuery 应该可以非常直接地从 Prototype 迁移。

    【讨论】:

      【解决方案4】:

      直接回答您的问题:是的,您应该切换。是的,你是对的。

      我知道你说过你不喜欢括号...你能提供一个你认为漂亮的原型代码的 sn-p 吗(我会用 jQuery-itize 进行比较)?

      【讨论】:

        【解决方案5】:

        我从 2006 年开始使用 Prototype,我赞同 Pekka 对丑陋代码的看法。原型更优雅。

        我一直是 Prototype (+Scriptaculous) 社区的坚定支持者,但遗憾的是,Prototype 正在失去思想份额和市场份额。 职业生涯可以建立在了解 jQuery 之上,而不是 Prototype。

        似乎 jQuery 人似乎更喜欢使用插件,但不知道它们是如何工作的,而 Prototype 人似乎是更铁杆的程序员,倾向于自己构建他们需要的东西。

        话虽如此,我向 jQuery 的过渡并没有那么痛苦。功能大致相同,只是名称不同。有更多可用的文档和示例代码,更容易上手。

        框架是移动的目标,有时会在速度和功能方面相互跳跃。一切都在不断改进。说 X 比 Y 好会随着时间而改变

        我认为 Prototype 的可取之处可能是 Scripty2。这是一个使用 Prototype 的惊人的新动画引擎。如果它流行起来(并进入市场,它甚至还不是 Beta 版),那么对 Prototype 的兴趣可能会重新抬头。除此之外,我认为它总会有它的支持者,但会逐渐淡出主流。

        【讨论】:

        • 我使用原型已经有一段时间了,我真的很喜欢它,但是其他框架(如 jquery 和 dojo)的小部件和插件正在推动我的公司放弃原型,转而使用其他框架之一.
        【解决方案6】:

        如果您关心获得另一份工作,可能会转到 JQuery。如果您关心漂亮、直观的 JavaScript,请坚持使用 prototoype - 它不会消失!

        【讨论】:

          【解决方案7】:

          我认为Microsoft has integrated it into the ASP.NET Ajax Framework 代表了 jQuery 的世界。我现在的雇主去年对它进行了标准化,我可以找到更多专门要求 jQuery 和任何其他库的职位发布。

          【讨论】:

            【解决方案8】:

            我认为你应该这样做。我虔诚地使用 jquery,而且我不是 Javascript Pro。我认为它的易用性是它最强大的功能之一。

            【讨论】:

              猜你喜欢
              • 2011-05-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-09-15
              • 1970-01-01
              • 1970-01-01
              • 2020-03-17
              • 2013-12-05
              相关资源
              最近更新 更多