为什么jQuery如此广泛地被采用而不是其他Javascript框架?

And*_*ore 71 javascript jquery mootools frameworks

我管理着一群程序员.我非常重视员工的意见,但最近我们对于在Web项目中使用哪个框架存在分歧.

我个人赞成MooTools,但我的一些团队似乎想要迁移到jQuery,因为它被更广泛采用.这本身不足以让我允许迁移.

我使用过jQueryMooTools.这篇特别的文章倾向于反映我对这两个框架的看法.jQuery非常适合DOM操作,但似乎仅限于帮助您实现这一目标.

功能方面,jQueryMooTools都允许简单的DOM选择和操作:

// jQuery
$('#someContainer div[class~=dialog]')
    .css('border', '2px solid red')
    .addClass('critical');

// MooTools
$('#someContainer div[class~=dialog]')
    .setStyle('border', '2px solid red')
    .addClass('critical');
Run Code Online (Sandbox Code Playgroud)

双方的jQueryMooTools的允许容易AJAX:

// jQuery
$('#someContainer div[class~=dialog]')
     .load('/DialogContent.html');

// MooTools (Using shorthand notation, you can also use Request.HTML)
$('#someContainer div[class~=dialog]')
     .load('/DialogContent.html');
Run Code Online (Sandbox Code Playgroud)

双方的jQueryMooTools的允许容易DOM动画:

// jQuery
$('#someContainer div[class~=dialog]')
    .animate({opacity: 1}, 500);

// MooTools (Using shorthand notation, you can also use Fx.Tween).
$('#someContainer div[class~=dialog]')
    .set('tween', {duration: 500}) 
    .tween('opacity', 1);
Run Code Online (Sandbox Code Playgroud)

jQuery提供以下附加功能:

  • 庞大的支持者社区
  • 插件存储库
  • 与Microsoft的ASP.NET和VisualStudio集成
  • 由Microsoft,Google和其他人使用

MooTools提供以下附加功能:

  • 面向对象的框架与JS的经典OOP仿真
  • 扩展的本机对象
  • 浏览器之间更高的一致性支持本机功能.
  • 更轻松的代码重用
  • 由万维网联盟,Palm和其他人使用.

鉴于此,似乎MooTools完成了jQuery所做的一切以及更多(我在jQuery中无法做到的一些事情,我可以在MooTools中完成),但jQuery的学习曲线较小.

所以问题是,为什么你或你的团队选择jQuery而不是另一个JavaScript框架?

注意:虽然我知道并承认jQuery是一个很棒的框架,但还有其他选择,我正在尝试决定为什么jQuery应该是我们的选择而不是我们现在使用的(MooTools)?

Dim*_*off 62

这是一个奇怪的问题......我得到的印象是......

  1. 您对mootools非常熟悉,并充分利用其OOP模型,使您的代码更易于管理和支持.
  2. 你意识到jQuery的目的有点不同,并且调整了DOM操作和AJAX,而mootools确实做了jQuery所做的一切,然后是一些.
  3. 听起来好像你不需要在第三方插件中使用太多,这使得jQuery的受欢迎程度和支持点不那么重要.

一句话,是炒作吗?jQuery正在变成这些神奇的营销流行语之一,如'AJAX',.NET和Web 2.0 - 这对他们来说很棒,但为什么需要证明坚持使用适合你的框架呢?还有我想象的业务考虑因素包括:

  • 框架寿命,或者是面对不断增长的jQuery可能会消失的mootools - 非常值得怀疑,因为他们刚刚发布了1.3 beta 1并且有2.0在今年年底发布的管道中.
  • 工作人员的成本和他们的培训(我想找到mootools程序员将比在他们的简历/简历上打击jquery更困难).
  • 在给定资源的情况下,在每个框架下维护和扩展系统所花费的时间(和成本).

这两个框架都很棒,但我相信你的兴趣最好是与mootools一起使用.

  • 这也是我的决定.我终于和Mootools说了几句.事实是,我已经看到许多开发人员通过将jQuery放在他们的简历上,并且完全不知道document.getElementById()做了什么,事实上并没有提到jQuery除了'之外是什么之外的其他东西. $ sign'.这是流行语技术的危险.人们开始把它放在简历中,即使他们对它的含义只是模糊不清. (30认同)
  • 根据最近的发展,你也可以拥有两全其美.看看魔术mootools核心开发人员Ryan Florence实施了一段时间的精彩片段:http://ryanflorence.com/object-oriented-jquery-with-mootools-pigs-take-flight/ (2认同)

Jos*_*dan 60

就个人而言,jQuery正是我所需要的.

我尝试在我的服务器端代码中完成大部分工作,这些代码结构良好:它具有适当的OOP,层和MVC架构.当我需要用Javascript做一些事情时,我发现(到目前为止)jQuery有我需要的东西.坦率地说,这分为三类:

  • 简单的DOM操作,通常显示/隐藏东西而不会命中服务器.
  • Ajff说,阿贾克斯打电话.
  • UI特权,包括模态弹出窗口,动画,从/到隐藏/显示的渐变过渡.我是一个硬核后端编码人,我吮吸 UI的东西.我真的很喜欢jQuery让我以编程方式制作看起来很吸引人的东西.

最重要的是,jQuery插件库非常庞大,我发现了很多可以简化客户端工作的库.好东西.

MooTools引入了OO思维,这很好,但不是我需要的.我希望将结构性保留在后端,而不必将这种思想引入我的客户端代码.对我来说,客户端代码是一个非常小的重点,从类的角度思考它是一种过度的方式,而且更多的工作.如果我想使用我认为最适合MooToools的做法,我觉得我要构建两个应用程序而不是一个应用程序.

我认为这总结了为什么它如此受欢迎,特别是在这里.总的来说,我们是后端代码类型的人,jQuery让我们以编程方式创建一个吸引人的UI,让我们专注于我们的后端核心.

  • 自我注意:自以为是的线程中的建设性答案仍然让你失望:/ (9认同)
  • 关于简单的UI特权点+1 - 我讨厌UI编程,并且能够包含一两个插件,添加几行JS,并将带有表单的简单div转换为模态弹出窗口只是*真棒* (6认同)
  • 我最热烈的答案也是迄今为止最受欢迎的答案.它的余额仍为14票.有些人只是在你赞美他们不喜欢的技术时会讨厌,或者在他们所做的事情中提到缺陷,并且他们通过投票让他们讨厌. (5认同)
  • 一个简单的问题:显示/隐藏元素与服务器有什么关系(参见"简单DOM操作")? (3认同)
  • @Andrew Moore:赞赏:)我很惊讶在这里得到了3个downvotes - 我希望人们会发布他们的推理,这样我就可以更好地充实答案了.我希望这有所帮助,我肯定会有兴趣阅读你对我发布的内容的看法.对占主导地位(甚至不是主导)范式的批评是一件好事! (2认同)
  • 好的,如果你的应用程序不是非常交互式,jquery就可以,因为你可以在服务器上保持复杂的逻辑,并且客户端上的结构化方法足够好并且易于遵循.但是,如果没有适当的OO/MVC结构,任何大型客户端项目都会很快变得无法忍受.如果你想要像树木,网格,菜单这样的小部件,我说雇用真正的客户端开发人员并分离你的编码,以便客户端和服务器代码可以互相不可知.这样做的一大好处是,您的客户将通过Web服务与服务器通信,这些服务可以提供给客户! (2认同)

Nos*_*dna 16

我不喜欢将经典的面向对象强加到JavaScript上.有很多方法可以让一个JavaScript程序员使用Base2 for OO,而另一个使用Prototype或Moo或JS.Class或Joose.Resig故意决定不向jQuery添加类,这鼓励人们找到更多本地JavaScript方法来解决问题.

因此,我更容易阅读其他jQuery编写器编写的JavaScript,并编写更容易让其他人阅读的jQuery代码.我通常不会尝试在JavaScript中模拟类OOP.相反,我动态创建对象并传递它们,我有很多对象数组.这很容易理解,我甚至发现自己把这种思想带到了OOP语言!

据我所知,Moo很可能已经赶上了jQuery或者超越了它.但我无法花时间跟踪6或7个优秀的JavaScript库,看看哪匹马领先.

我认为这主要是时间问题.当大量程序员加入AJAX时,jQuery是解决他们问题的热门新东西.

其他图书馆基本上已经赶上了.YUI,ExtJS,Dojo,Moo - 他们都很棒.但我不能全部使用它们.

我够努力试图找出我的图书馆的新功能所带来的后果使用.例如,jQuery在1.3版本中添加了Live事件.这实际上让我从许多页面切割代码.Moo现在也提供这个,如果它发生了,我怎么知道它发生了?

我相信Moo太棒了.我很乐意有时间学习它.但你看过Dojo了吗?我必须在一个项目中使用它,并发现它已经从jQuery中引入了大多数伟大的想法.它有pubsub和对Comet的良好支持.

我很同情你.但是你的程序员正在说话.学习jQuery对他们的职业生涯有好处,如果他们使用jQuery,还有更多的书籍,示例和程序员可以寻求帮助.

如果你决定去jQuery,那么在决定是否要使用OO库之前要先考虑一下.有一些很酷的(如JS.Class或Joose),但采取这一步意味着将自己与大多数JavaScript程序员编码的方式隔离开来.

  • 我的首要任务不是我的员工职业生涯,而是客户满意度.我们目前正在三(3)个项目中使用jQuery,与同样复杂的MooTools项目相比,这些项目上的javascript似乎更难维护. (7认同)
  • 此外,MooTools不会将经典的OO强加给JavaScript.这是您可以使用或完全解散的功能.实际上,MooTools OO实现将原型继承和经典继承的最佳结合在一起! (3认同)

Cha*_*son 11

我一直在问这个同样的问题一段时间,只是试图绕过争论.在我读过的讨论中,压倒性的反应是"更广泛地采用 - 因此更好".

我是广泛使用这两者的人.JQuery在工作中(因为它被"更广泛采用"而被采用)和Mootools在个人项目中.结果,我经常发现自己在使用JQuery时感到瘫痪; 无论是JSON支持,元素创建,事件处理......等等.在工作中,我发现自己写了很长一段时间的链条......结果我觉得很脏.

然而,我对JQuery的主要优势在于插件和第三方开发人员关注的缺乏一致性或实践.当插件在结构上或其他方面没有一致性时,轶事"更多插件可用"确实无法帮助我.我花了几个星期的时间来学习"接受"的插件模型,即使在那时,我已经将自己的实用风格融入其中,因为我发现当前结构中存在错误和低效.可以说任何人都可以跳入并开始JQuerying它是'Pro'.但是,我更倾向于称之为'Con',因为你会看到30种不同的方法来完成某些事情,并且很难确定一个公认的标准.

那么"知道JQuery"是什么意思,这是否意味着你知道如何摇滚一点.hide().show().fadeIn().fadeOut()?

当我不得不在工作中使用我的JS时,我想念一些Mootools.我的意思是没有Native JSON支持?来吧......

为了回应"广泛采用"的回应,我们都知道OSCommerce是最" 广泛采用 "的购物车,我们都知道这是一堆狗屎.我无法将JQuery与OSCommerce进行比较.我只是指出了"广泛采用"的错误.

至于插件,苹果的App商店有什么... 100k应用程序?50,000是屁应用程序.当然有很多JQuery的插件,但垃圾与价值的比例很大.


And*_*mer 7

jQuery使您可以访问清晰简洁的函数式编程方法.自从C#3.0中的(LINQ)方法链接发布以来,这对.NET程序员来说非常有效.因此,从一种语言到下一种语言的流程很容易.为了能够在DOM中查询对象或对象列表,对我们来说效果更好.jQuery的选择能力首先使它具有吸引力,然后是它的可扩展性,当然所有内置的功能都很好.此外,背后的社区非常精彩,因为我首先想看看是否其他人做了什么,然后在没有找到解决方案的情况下尝试自己做.最后......但同样重要的是......微软将在Visual Studio 10中加入并支持它的事实很棒.Moo Tools,Prototype等只是无法与上述所有竞争对手.

  • 我承认,jQuery背后的社区很棒(而且它也集成在VS中),但MooTools具有与jQuery相同的选择功能. (3认同)

Als*_*nde 7

无论如何,JS框架非常相似.如果你已经使用mootools一段时间了,坚持下去.因为这个或那个,了解你的框架比选择一个框架要重要得多.

在我看来,mootools对于高级javascript程序员来说更好,而jquery对于非javascript程序员来说更好.这是我在阅读两份文件后的想法,请注意,我没有使用其中任何一种.jQuery缺乏对javascript核心,函数绑定,对象克隆,线程堆栈的支持,仅举几例.


Jar*_*man 5

与任何框架一样,jQuery可以完成它所做的工作,如果它不符合您的需求,您应该使用其他东西.我不使用jQuery在javascript中进行复杂的编程,我使用它因为它使DOM操作和CSS3样式的东西变得简单,95%的时间就是我需要的东西.


Chr*_*sma 5

我也没有在一段时间内看过MooTools.但这是我对JQuery的观点:

  1. 一致的编程模型(有一种JQuery方式可行)
  2. 优秀的文档.当我开始时,JQuery有最好的文档.
  3. 广泛的第三方插件
  4. Microsoft支持 - 我是一名asp.net开发人员,这有助于缓解客户的想法.此外,它现在附带我的工具.
  5. 很多入门指南.
  6. JQuery的网站看起来比MooTool的网站更好.对不起,我很抱歉,但确实如此.请记住,许多这些工具需要吸引设计师和开发人员.


小智 5

YAGNI.

是的,它在这里有点不合适,但这是jQuery比MooTools更大的主要原因.MooTools带来的所有额外功能都很好,但是YAGNI.

这不是最好的,而是关于满足 - 找到适合解决问题的方法.jQuery易于使用,其主要目标是DOM操作.由于95%的人正在这样做只是为了操纵DOM,所以没有必要经历更长的MooTools学习曲线.MooTools并没有为他们带来任何东西,因为jQuery不会用更少的努力来提供.

在使用之前,MooTools会向您提出更多要求,jQuery允许您快速拼凑一些东西.如果你开始编写大型的,重型的js应用程序,你可能会遇到这种方法的一些缺点,但是再次写入js的人中有95%没有这样做,所以那些事情对他们来说并不重要.他们使用服务器端语言来为DOM提供繁重的工作和javascript.

就此而言,他们对您的团队也无关紧要.逐点(jQuery优先)带您浏览列表:

庞大的支持者社区 - 仅与项目略有关联.与团队有关的更多相关性,因为它与你的生活息息相关.如果遭遇不幸(拜托,上帝,不),你的公司就不见了,jQuery会让他们获得比MooTools更多的工作.

插件存储库 - 非常相关,因为它有助于防止重新发明轮子.

与Microsoft的ASP.NET和VisualStudio集成 - 如果您是.NET商店,则非常相关.事实上,如果你使用.NET,这就应该是切换的原因.

由微软,谷歌和其他人使用 - 谁在乎呢?

现在为MooTools列表:

面向对象的框架与JS的经典OOP仿真 - 无关,除非您的项目的性质使其成为一个优势.我不知道你在建造什么,但对于网上商店来说,这只是很少相关.大多数网上商店没有足够的代码来使这个加分.

扩展的原生对象 - 再次与大多数网店无关

浏览器之间更高的一致性支持本机功能. - 相关

更容易的代码重用 - 这与大型存储库的jQuery优势有点冲突.一个大型存储库本身就是在重用代码.我怀疑你在使用一个狭窄的代码重用定义,这里可能不相关.我重用了很多我构建的jQuery代码,以及MT代码.

由万维网联盟,Palm和其他人使用. - 不相关.如果你想在那里工作,唯一的关键是谁还在使用什么.有多少商店使用它比使用它的任何特定商店更有意义.

没有一种真正的方式来处理javascript编码.让您的偏见不受影响,并与您的团队坐下来,并让他们的偏见不受影响.谈谈你正在进行(并且想要承担)的具体项目类型的火鸡,以及适用于这些案例的每个图书馆的优势.(他们如何处理其他案件无关紧要,因为其他案件不存在.)你应该从中达成共识.

(YAGNI =你不需要它,如果我需要解释它.)