原型VS jQuery - 优点和缺点?

Luc*_*ofi 64 jquery ria prototypejs

我不想打开另一个" 又一个Js VS Js "主题.

我想,最后Prototype和jQuery都是JS,并且具有几乎相同的方法和功能,并且需要几乎相同的代码行来完成相同的任务.

对于真正的富Internet应用程序,Prototype与jQuery 的真正优势缺点是什么?

Gra*_*aza 105

我最初喜欢用新的或修改过的方法扩展Prototype的想法.

但是,我发现了一些不好的原因(TM)

做一些谷歌搜索,你可能会发现一些其他原因,但主要原因是Prototype不能保证与其他框架或库"玩得很好",因为其他库期望元素和方法的行为是"标准的",并且由于Prototype所做的事情,你可能会发现许多被它破坏的东西.

我发现的最新例子是原型与JSON和stringify拧紧.我使用的是EasyXDM,在某些加载prototype.js库的情况下它根本不起作用.当我编写一个供他人使用的框架,因此无法控制页面的内容时,我需要在IFRAME中创建并执行所有操作,以确保诸如prototype.js之类的内容不会对其造成严重破坏.我想做什么.

...所以jQuery赢得了我的帮助,因为我只是不认为它适合框架自动搞砸DOM和javascript的标准行为.你应该控制这些东西,Prototype从你身上取下一些控制权....

  • 我应该补充说,在有限的情况下,你完全控制页面,不依赖于其他库等,有些东西Prototype可以做得很好,简单易用(我特别喜欢`absolutize() `方法).*但是*我不认为这是你一直使用的"默认"框架的一个好选择,而jQuery和其他侵入性较小的库是非常安全的(我特别喜欢`.noConflict()`方法 - 使用`window.$ j = jQuery.noConflict();`我所​​有的jQuery东西都用`$ j`而不是`$`来完成. (13认同)

Nic*_*ver 45

我也使用jQuery而不是原型,只需查看本页顶部的原因:

jquery已标记问题:531,752
原型标记的问题:2,465
更新于2014年9月22日,在12/14/2011 jQuery - 135,641/prototype - 2,327

jQuery是非常简洁,简洁的代码.原型我发现更加冗长,但在功能上的许多方面通常都是等同的.但是,如果您需要帮助入门,您需要更大的社区.更多支持,更多相同的问题,你已经在那里回答和容易谷歌,和更多的插件,代码,你可能正在寻找做某事......已经写好了.

出于同样的原因,社区越大,代码越多,代码越复杂,意味着编写了简单的东西,并且解决了许多复杂的情况,如果你正在编写一个非常丰富的应用程序,你可能会去遇到一些非常复杂的问题或情况......有更多的资源可以帮助你解决这个问题.

再次......出于同样的社区规模原因,已经发现框架中存在更多缺陷并填补了空白,因为更大的社区正在仔细审查它.这意味着当你遇到一个问题时,其他人也可能会这样做,并且添加了一些方法或选项以保持移动,而不是因为你遇到框架无法做到的事情而卡住了.

  • @Alsciende - 给我**关于SO的任何**主题,差不多**三十次**社区不大的活动数量......它直接与问题有关,jQuery有更多的答案vs原型.社区规模很重要,问题只是一个直接的例子.如果原型有一个更大的社区,他们的发布时间表不会花那么长时间......而且由于他们通过整个模型的工作原理引入了DOM问题,因此2.0改变了他们的语法......我会说jQuery只是选择了更好的路径,它因使用而飙升. (25认同)
  • 问题的数量并不意味着什么.这可能意味着jQuery*需要*更多的问题需要理解/使用,或者jQuery主要用于未经验/不熟练的人......总而言之,它并不意味着与问题相关的任何问题. (24认同)
  • 嗯...... php也有一个很大的社区:P (8认同)
  • @Alsciende - "永不回头"......我完全不同意,主要是因为Prototype核心团队的成员也反驳了这一点,这是其中一个回顾,并讨论2.0:http://perfectionkills.com/whats-错与延伸的最DOM / (2认同)
  • 看一下框架问了多少问题,没有任何关于框架质量的指示 - 实际上它可能是相反的,因为更复杂或设计糟糕的框架文档很差会导致更多的问题! (2认同)

Mar*_*ark 19

我正在重写一个应用程序的大块,从Prototype转移到jQuery.为什么?插件,插件,插件,尤其是UI小部件.原型UI元素相当分散且非常零碎,而jQuery有一组非常丰富的"标准"元素.


fdr*_*ger 13

构建JQuery是为了简化页面添加奇特效果.它取得了100%的成功.

由于添加动画和偶尔的ajax调用是人们通常需要和来自Javascript库的需求,因此JQuery有一个庞大的社区.JQuery的座右铭是"我会添加一些闪光,并且让我们放弃",这正是开发人员经常需要的.

然而Prototype在大多数其他用例中表现优异.它有一个基于类的OOP的稳定框架(统一解决诸如继承构造函数之类的问题),以及一组用于处理数据的一般用法抽象.

  • @aSeptik :? 您询问了Prototype和jQuery在制作RIA时的真实体验.你没有提到重点是赞美jQuery并批评Prototype.通常Javascript用于操作DOM,添加效果,执行一些ajax(更多读取,更少写入).这是jQuery闪耀的地方,它的设计非常适合这种情况.但是在更大的RIA中,您可能需要生成复杂的JSON,通过构建类来模块化您的代码(可能使用继承?)等等.jQuery将不会帮助您和Prototype.这就是你想投票给我的原因吗?PS:"不要做坏事". (10认同)
  • +1 - 我读过的第一个答案提到原型在OOP中的优势;) (2认同)

Mic*_*kel 9

我选择了jQuery而不是Prototype,因为:

  • "多做,少写......"
  • jQuery社区更大(因此,更多的插件和资源)


小智 6

我既使用了两者,也使用了两者.这实际上取决于您项目的要求.对我来说,似乎两个平台都来自两个不同的方向,因为有两个不同的要求.它们都是出于解决编程问题的需要而创建的,以帮助更快更好地构建网站/应用程序.

在使用标准工具箱快速制作网站时,jquery及其库非常棒.重新发明轮子毫无意义.但是,当我的工具/技巧不起作用时,我会遇到奇怪的浏览器版本问题,而且总是会发生具有该特定版本的客户端.通常在发布/更新浏览器版本时发生.因此,我必须获取该jquery库文件的新版本以更新我的所有站点,即如果社区已经注意到并解决了所述问题.这是我唯一的烦恼,因为我没有时间自己解决这个问题.它不会经常发生,但确实会发生.

在处理更复杂的Web项目时,可能是支持后端API的站点网络,然后我发现原型很棒.我充分利用了服务器端OO编码,并且非常高兴我可以使用Prototype做同样的事情.我觉得我对我的应用程序有更多"控制",并且可以像我作者一样快速解决问题.我确实听到人们对开销,DOM扩展等的评论,但我没有遇到任何专业问题(敲木头).此外,当我可以轻松地使用.each(function(){},..)和更多控件迭代相同的变量时,没有"for each"语句的整个问题并不是一个大问题.

所以,每个人都有自己的位置,你必须选择自己的药物.

喜欢,