72

我管理着一群程序员。我确实重视我的员工的意见,但最近我们对于在 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');

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');

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);

jQuery提供以下附加功能:

  • 庞大的支持者社区
  • 插件库
  • 与 Microsoft 的 ASP.NET 和 VisualStudio 集成
  • 由 Microsoft、Google 和其他公司使用

MooTools提供以下附加功能:

  • 面向对象的框架,带有 JS 的经典 OOP 仿真
  • 扩展本机对象
  • 本机功能支持的浏览器之间更高的一致性。
  • 更容易的代码重用
  • 由万维网联盟、Palm 等使用。

鉴于此,MooTools似乎完成了jQuery所做的一切,甚至更多(有些事情我在jQuery中做不到,而我在MooTools中可以),但jQuery的学习曲线更小。

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

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

4

20 回答 20

62

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

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

归根结底,是炒作吗?jQuery 正在变成像“AJAX”、.NET 和 Web 2.0 这样的神奇营销流行语之一——这对他们来说非常棒,但是为什么需要证明继续使用对你如此有效的框架是合理的呢?还有一些我认为将涵盖的业务考虑因素:

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

这两个框架都很棒,但我相信你的兴趣最好还是留在 mootools 上。

于 2009-06-22T15:27:18.447 回答
60

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

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

  • 简单的 DOM 操作,通常在不访问服务器的情况下显示/隐藏内容。
  • 阿贾克斯打电话,纳夫说。
  • UI 特权,包括模式弹出窗口、动画、从/到隐藏/显示的淡入淡出过渡。我是一个铁杆后端编码人员,我很擅长UI 方面的东西。我真的很喜欢 jQuery 让我以编程方式制作看起来很吸引人的东西。

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

MooTools 引入了 OO 思维,这很好,但不是我需要的。我想在后端保持我的结构化,而不必将这种想法引入我的客户端代码。对我来说,客户端代码只是重点的一小部分,从类的角度考虑它是过度的,而且工作量更大。如果我使用我认为 MooToools 的最佳实践,我觉得我会构建两个应用程序而不是一个。

我认为这总结了为什么它如此受欢迎,尤其是在这里。总的来说,我们是后端代码型的人,jQuery 让我们以编程方式制作吸引人的 UI,并让我们专注于后端核心。

于 2009-06-13T06:09:08.700 回答
16

我不喜欢将经典的面向对象强加到 JavaScript 上。有很多方法可以做到这一点,一个 JavaScript 程序员可能使用 Base2 进行 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很棒。我很想有时间学习它。但是你看过道场吗?我不得不在一个项目中使用它,发现它也吸收了 jQuery 的大部分好主意。它有 pubsub 和对 Comet 的良好支持。

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

如果您最终决定使用 jQuery,请在决定是否使用 OO 库之前三思而后行。有一些很酷的(如 JS.Class 或 Joose),但采取这一步意味着将自己与大多数 JavaScript 程序员的编码方式隔离开来。

于 2009-06-13T15:53:06.347 回答
11

一段时间以来,我一直在问自己同样的问题,只是试图围绕这个论点。在我阅读过的讨论中,压倒性的反应是“更广泛地采用 - 因此更好”。

我是一个广泛使用两者的人。工作中的 JQuery(被采用是因为它被“更广泛地采用”)和个人项目中的 Mootools。结果,我经常发现自己在使用 JQuery 时感到手足无措。无论是 JSON 支持、元素创建、事件处理……等等。在工作中,我发现自己编写了长达 75 个事件的链……结果我觉得很脏。

不过,我对 JQuery 的主要总体看法是,插件和第三方开发人员缺乏一致性或实践。当插件之间在结构上或其他方面没有一致性时,传闻“有更多插件可用”真的对我没有帮助。我花了几个星期来学习“公认的”插件模型,即便如此,我还是将自己的实用风格融入其中,因为我发现当前结构中存在错误和效率低下。可以说这是一个“Pro”,任何人都可以加入并开始 JQuerying。但是,我更倾向于称其为“骗局”,因为您将看到 30 种不同的方式来完成某事,而且很难确定一个公认的标准。

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

当我在工作中不得不让我的 JS 成为黑帮时,我想念我一些 Mootools。我的意思是没有原生 JSON 支持?来吧……

对于“被广泛采用”的回应,我们都知道 OSCommerce 是最“被广泛采用”的购物车,我们都知道那是什么狗屁。我绝不会将 JQuery 与 OSCommerce 进行比较。我只是指出“广泛采用”响应的错误。

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

于 2010-01-02T10:17:11.523 回答
7

jQuery 让您可以访问清晰简洁的函数式编程方法。由于在 C# 3.0 中 (LINQ) 中方法链接的发布,这对于 .NET 程序员来说非常有效。因此,从一种语言到另一种语言的流程很容易。为了能够在 DOM 中查询一个对象或对象列表,对我们来说工作得更好。首先是 jQuery 的选择能力使它如此吸引人,然后是它的可扩展性,当然,它附带的所有内置功能都很好。此外,背后的社区很棒,因为我首先查看其他人是否做了某事,然后如果没有找到解决方案,我会尝试自己做。最后……但同样重要的是……Microsoft 将包含在 Visual Studio 10 中并对其提供支持的事实非常棒。Moo Tools、Prototype 等无法与上述所有产品竞争。

于 2009-06-13T06:04:27.870 回答
7

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

在我看来,mootools 更适合高级 javascript 程序员,而 jquery 更适合非 javascript 程序员。这就是我在阅读这两个文档后的想法,请注意,我没有使用它们中的任何一个。jQuery 缺乏对 javascript 核心、函数绑定、对象克隆、线程堆栈等的支持。

于 2009-06-16T13:39:10.193 回答
5

jQuery,像任何框架一样,做它做的事情,如果它不符合你的需要,你应该使用别的东西。我不使用 jQuery 在 javascript 中进行复杂的编程,我使用它是因为它使 DOM 操作和 CSS3 样式的东西变得简单,而且 95% 的时间都是我需要的。

于 2009-06-13T06:08:14.630 回答
5

我也有一段时间没有看过 MooTools 了。但这是我对 JQuery 的看法:

  1. 一致的编程模型(有一种 JQuery 方式有效)
  2. 优秀的文档。当我开始使用 JQuery 时,那里有最好的文档。
  3. 广泛的第 3 方插件
  4. Microsoft 支持——我是一名 asp.net 开发人员,这有助于减轻客户的顾虑。另外,它现在随我的工具一起提供。
  5. 很多入门指南。
  6. JQuery 的网站看起来比 MooTool 的网站好。对不起,这很重要,但确实如此。请记住,其中许多工具需要吸引设计师和开发人员。
于 2009-06-13T15:28:06.283 回答
5

雅尼。

是的,这里有点不合适,但这是 jQuery 拥有比 MooTools 更大的基础的主要原因。MooTools 带来的所有这些额外功能都很好,但是 YAGNI。

这不是关于最好,而是关于满足——为手头的问题找到适当的解决方案。jQuery 易于使用,它的主要目的是 DOM 操作。由于 95% 的人使用 javascript 只是为了操作 DOM,因此经历更长的 MooTools 学习曲线是没有意义的。MooTools 并没有为他们带来任何 jQuery 不费吹灰之力就能提供的东西。

MooTools 在你使用它之前对你有更多的要求,jQuery 让你可以快速地将一些东西放在一起。如果您开始编写大型、重型 js 应用程序,您可能会遇到这种方法的一些缺点,但同样 95% 的编写 js 的人不会这样做,所以这些事情对他们来说并不重要。他们使用服务器端语言处理繁重的任务,使用 javascript 处理 DOM。

就此而言,它们对您的团队也可能无关紧要。逐点介绍列表(首先是 jQuery):

庞大的支持者社区——仅与项目略微相关。与团队个人更相关,因为它与您之后的生活有关。如果不幸发生了(拜托,上帝,不),你的公司倒闭了,jQuery 比 MooTools 为他们提供了更多的工作。

插件存储库——非常相关,因为它有助于避免重新发明轮子。

与 Microsoft 的 ASP.NET 和 VisualStudio 集成——如果您是 .NET 商店,则非常相关。事实上,如果您使用 .NET,仅此一项就应该是切换的原因。

被微软、谷歌和其他公司使用——谁在乎?

现在查看 MooTools 列表:

带有经典 OOP 模拟的面向对象的 JS 框架——无关紧要,除非你的项目的性质使它成为一个加号。我不知道您在构建什么,但对于网上商店,这很少相关。大多数网上商店没有足够的代码来使它成为一个加号。

扩展的原生对象——同样与大多数网上商店无关

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

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

由万维网联盟、Palm 等使用。——无关紧要。关于其他人在使用什么的唯一相关性是如果你想在那里找到一份工作。与使用它的任何特定商店相比,有多少商店使用它具有更大的相关性。

没有一种真正的方法来处理 javascript 编码。消除您的偏见,并与您的团队坐下来,并消除他们的偏见。谈谈您正在开展(并希望开展)的具体项目类型以及每个图书馆在这些案例中的优势。(他们如何处理其他案件并不重要,因为那些其他案件不存在。)您应该从中达成共识。

(YAGNI = 你不需要它,如果我需要解释的话。)

于 2009-06-24T20:05:56.183 回答
4

我选择使用 jQuery 作为我们的默认 UI 库正是因为它不像prototype.js 或mootools 那样扩展或以其他方式猴子补丁原生对象。进入文档角度,确实没有关于使用哪个框架的问题。

于 2009-06-13T16:23:14.620 回答
2

你自己这么说:

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

MooTools 所做的大部分额外工作都是我们不需要的。

正如您自己所说,jQuery 更容易学习,这对于大多数人来说实际上在选择框架时更为重要。

于 2009-06-24T12:07:28.180 回答
1

我在 JavaScript 中不需要的是绝对 OOP 和一些丑陋的对象模拟。

上次我检查 MooTools 时(可能是 1.5 年前 :-),它在操作多选时存在浏览器不兼容问题。

所以 jQuery 对我来说完全没问题。

于 2009-06-13T15:17:42.220 回答
1

jQuery 不仅是一个不错的库,而且它的创建者 John Resig 作为Pro Javascript Techniques的作者也有一些街头信誉。

我们办公室周围有 2-3 本这本书。

jQuery 很小(故意如此),但可以通过插件添加功能。

于 2009-06-16T13:40:27.100 回答
1

让我对 mootools 的体验相当不愉快的是文档和 API 的稳定性:我根本无法找到与正在使用的 mootools-Version 相关的文档。如果定义的 API 是稳定的,那么问题就不大了。但是由于某些功能在较新的版本中消失了(经过数小时的搜索发现了 ChangeLog),因此也无法进行迁移。在那之后,mootools 就退出了我的竞争。

像许多其他人一样,我不想将基于类的 OOP 引入简单的用户界面操作。这就是我使用 jQuery 的目的:不是那么复杂的用户界面。当我必须构建丰富的浏览器端应用程序时,我总是会切换到提供各种即用型小部件的大型解决方案(ExtJS、YUI、qooxdoo)。

于 2009-06-16T13:48:54.633 回答
1

在比较提供类似功能和概念的工具/库时,更大的用户社区和更广泛的采用会产生很大的不同。更大的社区意味着更多的支持、更多的示例、更多的好想法和更多可重用的代码片段,这在您处理罕见场景时尤其重要——其他人以前可能遇到过这种情况。

其次,在我见过的基准测试中,jQuery 比 MooTools 更快。

我也很喜欢他们强调保持小核心并通过插件添加功能。防止核心库变得非常庞大和笨重。

我个人从未使用过 MooTools,但我毫不怀疑它是一个很棒的库,它提供了与大多数 jQuery 功能或概念相当的可接受的等价物,但第 1 点对我来说很重要。

于 2009-06-17T23:11:48.217 回答
1

另一个原因:将 jquery 出售给管理层更容易。在企业环境中进行基于 asp.net 的内部开发,神奇的词是“它由 Visual Studio 支持”。

于 2009-08-07T13:49:23.357 回答
0

一方面,这还不是全部。还有很多 其他 功能_ _ 另一方面,不是每个人都使用它。但我不想打断一个好的咆哮。

于 2009-06-13T06:04:38.540 回答
0

我必须支持很多答案……出色的文档和社区支持至关重要。我以前讨厌 js 编程,会像瘟疫一样避免它,但现在我完全接受了它,因为 jquery 和快速的学习曲线。

这并不总是关于谁拥有最好的技术!

于 2009-06-13T22:29:49.827 回答
0

Mootools,在使用 jquery 原型等时无法正常运行或根本无法运行。同意绝对没有理由同时使用它们,但偶尔它们会出现在同一页面上(例如插件、幻灯片、小部件等),事情停止工作。

这本身就是不可接受的。所以 jquery 的所有道具都不会造成不必要的头痛!

于 2009-07-25T01:08:51.690 回答
0

人们为什么开始使用传真机?在某一点上,收益呈指数增长。

于 2010-03-18T16:07:33.493 回答