我不想打开另一个“又一个Js VS Js ”主题。
我想,最后Prototype和jQuery都是JS,并且具有几乎相同的方法和功能,并且需要几乎相同的代码行来完成相同的任务。
对于真正的富Internet应用程序,Prototype与jQuery中的真正的优势以及弱点是什么?
答案 0 :(得分:105)
答案 1 :(得分:45)
答案 2 :(得分:19)
我目前正在重写应用程序中的大块以从Prototype转移到jQuery。为什么?插件,插件,插件,尤其是UI小部件。原型UI元素相当分散且非常零散,而jQuery有一组非常丰富的"standard" elements。
答案 3 :(得分:13)
JQuery旨在简化页面添加奇特效果。它取得了100%的成功。
由于添加动画和偶尔的ajax调用是人们通常需要和来自Javascript库的需求,因此JQuery有一个庞大的社区。 JQuery的座右铭是“我会添加一些闪光,并且让我们摆脱困境”,这正是开发人员经常需要的。
然而Prototype在大多数其他用例中表现优异。它有一个基于类的OOP的稳定框架(统一解决继承构造函数等问题),以及一组处理数据的一般用法抽象。
答案 4 :(得分:9)
我选择了jQuery而不是Prototype,因为:
答案 5 :(得分:6)
我既使用了两者,也使用了两者。这实际上取决于您项目的要求。对我来说,似乎两个平台都来自两个不同的方向,因为有两个不同的要求。它们都是出于解决编程问题的需要而创建的,以帮助更快更好地构建网站/应用程序。
使用标准工具箱快速制作网站时,jquery及其库非常棒。重新发明轮子毫无意义。但是,当我的工具/技巧不起作用时,我会遇到奇怪的浏览器版本问题,而且总是会发生具有该特定版本的客户端。通常在发布/更新浏览器版本时发生。因此,我必须获取该jquery库文件的新版本以更新我的所有站点,即如果社区已经注意到并解决了所述问题。这是我唯一的烦恼,因为我没有时间自己解决这个问题。它不会经常发生,但确实会发生。
在处理更复杂的Web项目时,可能是支持后端API的站点网络,然后我发现原型很棒。我充分利用了服务器端OO编码,并且非常高兴我可以使用Prototype做同样的事情。我觉得我对我的应用程序有更多“控制”,并且可以像我作者一样快速解决问题。我确实听到人们对开销,DOM扩展等的评论,但我没有遇到任何专业问题(敲木头)。此外,当我可以轻松地使用.each(function(){},..)和更多控件迭代相同的变量时,没有“for each”语句的整个问题并不是一个大问题。
所以,每个人都有它的位置,你必须选择自己的药物。
喜欢,
答案 6 :(得分:4)
两者都不是“最好的”。这完全取决于。尝试两者,看看你更喜欢哪一个。我个人使用JQuery,因为易于使用而不是原型,这是相当先进的,并且具有更长的学习曲线。
看看:
答案 7 :(得分:3)
这是另一篇关于jQuery和MooTools的有趣文章(MooTools和Prototype几乎可以互换,至少在本次辩论的背景下):http://jqueryvsmootools.com/
答案 8 :(得分:3)
jQuery 使用基于CSS语法的CSS样式选择器和过滤器。从设计的角度来看,这有很多好处。我非常喜欢并且精通CSS,所以 jQuery 对我个人而言感觉就像在家一样。如果您正在寻找一种语法,那么您的全方位编码体验会更加愉快,并且您非常喜欢/熟练使用CSS,可以肯定地说,您会更喜欢 jQuery 。我参加了 Prototype 的基础课程,我很无聊。我刚刚在 Lynda的上完成了“jQuery的基本要素”,我非常喜欢它,因为它与CSS有着密切的关系。我已经用香草JavaScript编程了大约10年,我一直觉得它非常干燥;对我来说,这是代码矫枉过正(并没有太大的帮助)。虽然这些年来对我非常有用。从我到目前为止看到的, jQuery 是JavaScript应该从第一天开始就是这样。但话说回来,需要花费大量时间,测试和努力来改进。所以jQuery赢了。
答案 9 :(得分:2)
我在jQuery或Prototype方面没有经验。即将开始学习其中一个作为高级ColdFusion开发人员添加到我的工具箱中专案经理。我对此的看法最初是由新人决定的,因为这反映了行业的采用,恕我直言是关键。
基于对两者的快速浏览和一些教程读取,似乎它们各自提供相同的核心能力。然而,在查看职位委员会和其他项目时,jQuery似乎更具“需求”,而不仅仅是一种可以使用的技能。对我来说,jQuery在这里赢得了采用和需求,社区支持和文档是一个优势。没有什么可以反对Prototype,很高兴知道一个项目是否因为预先存在而需要它,因为一些开发人员选择它作为他调查的第一个。
答案 10 :(得分:1)
我使用了原型框架和jquery,至于我,我个人喜欢它的noConflict()的jquery cuz; 我更喜欢在我的js文件中使用像这样的jq noConflict
(function($){
}(jQuery));
这种方式会让你使用$作为jquery选择器每个js文件
答案 11 :(得分:1)
订阅已经签名的标记正确答案我也不想共享一个lib,它允许你使用大多数你希望在像原型这样的框架上找到的实用程序,但其优点是不扩展本机对象。因此,它为您希望在项目中使用的补充框架提供更多控制和灵活性。
Underscore是一个用于JavaScript的实用程序带库,提供了一个 很多你期望的函数式编程支持 Prototype.js(或Ruby),但没有扩展任何内置的 JavaScript对象。这是与jQuery的礼服一起使用的关系 Backbone.js的吊带。
答案 12 :(得分:0)
我是否也可以提出这样的论点:使用一种或另一种是一种虚假的困境?拥有丰富的jQuery经验,我知道它有多么有用,以及应用程序开发的速度有多快。
然而,重要的是要注意,在某些情况下,最终用户可能更不利用任何库,特别是在不需要库的情况下。虽然它对大型应用程序肯定有帮助,但由于对性能的影响,在公共网站上使用可能是违反直觉的。进行额外的HTTP请求以下载库,尽管通常在缩小时通常很小,但结果需要更多带宽。这有可能减慢移动用户可能实现的页面加载时间。
此外,在加载时,库将立即执行代码以创建全局可访问的函数和对象,从而消耗更多内存,即使您从未使用过它们。某些库也会添加函数和对象来构建-in对象原型,也增加了内存使用量。
最后,虽然jQuery和许多其他库经常被广泛测试以确保对性能的影响最小,但是您编写的代码虽然数量减少,但通常会比其他代码慢。请记住,您可以使用原始JavaScript对库执行的所有操作,因为从根本上它们是相同的。
答案 13 :(得分:-1)
使用缩写式操作符的简洁简洁代码往往也会变得神秘,所以它不一定更好。它可以消除可读性,并使理解不太清楚的事情。在我多年的编程中,我遇到了一些非常聪明的神秘代码,这些代码可以解决它何时遇到问题。我个人喜欢自我文档的代码,并针对情况的细节进行了优化。如果你的目标是在最少的代码行中做到最多,那么使用DOM扩展库(如prototype和jQuery)可能适合你。我个人认为最好是完全理解JavaScript语言本身的功能和浏览器的DOM实现,并将其用于手头的任务,无论是构建UI小部件还是其他任何东西。我偶尔使用script.aculo.us库来获得动画效果,所以我发现自己加载了原型库代码,因为scriptaculous依赖于它。我对任何使用这两个库的人的建议是在完全依赖这些库之前学习如何编写OO样式的JavaScript,然后合并一个看起来最符合你需求的库。学习OO风格的优秀书籍JavaScript是“Java设计模式”。