【问题标题】:MooTools and JQuery Side by SideMooTools 和 JQuery 并排
【发布时间】:2009-10-02 15:13:52
【问题描述】:

我刚刚继承了一些使用 MooTools 的网页。我从未使用过 MooTools。现在我需要在页面上添加一些功能,不知道在同一个页面上使用jquery和mooTools是不是一个好主意?

基本上,我有 3 个选项,

  1. 将页面转换为 JQuery,我必须学习 MooTools 才能做到这一点。
  2. 在 MooTools 中编写新函数。我必须学习更多 MooTools 才能实现这一目标。
  3. 在页面上同时使用两者。

您的意见将不胜感激。

【问题讨论】:

    标签: javascript jquery mootools


    【解决方案1】:

    意见:学习 MooTools,然后继续学习。听起来是一个学习新东西的好机会。如果不需要的话,为什么要引入一个带有额外 js 膨胀的全新库。如果它能解决问题,那你就是金子。

    【讨论】:

    • 要么用 JS 膨胀玷污项目,要么学习 MooTools。无论如何,MooTools 很有趣。
    【解决方案2】:

    MooTools 是一个完全可靠且可接受的 Javascript 库,我建议您将其添加到您的已知技术列表中,而不是将其删除并替换为 JQuery。将两者混合并不是一个好主意,因为您可能会遇到难以调试的冲突。

    JQuery 近来受到了所有媒体的关注,但它绝不是简单粗暴地击败其他所有库。离得很远。你甚至可能会发现你更喜欢 MooTools :-)

    添加:值得我个人体验的是,MooTools 似乎比 jQuery 更好地与其他 javascript 代码一起使用。我最近一直在处理几个站点,这些站点在 MooTools 中与各种其他 Javascript 片段混合用于不同的效果/功能,并且它们似乎都与最小的问题一起玩。使用 jQuery 的 OTOH 页面倾向于使用 jQuery 版本的所有内容。当然是 YMMV。

    【讨论】:

    • 评论我自己的答案,虽然我认为 10 月 9 日确实如此,但 jQuery 的持续快速发展和它作为标准库在过去 18 个月中被广泛接受,现在已经打破了平衡而且我更倾向于重写,具体取决于项目的大小。但在任何情况下我都不会同时使用这两种方法。
    • 感谢您的首字母缩略词。 *yoink
    【解决方案3】:

    就个人而言,我建议不要同时使用两者,因为会有奇怪的冲突,即使使用 jQuery.noConflict()。选择其中一个。

    如果您最终同时使用两者,请务必使用 jQuery.noConflict() 以确保使用 $ 不会冲突。

    Using jQuery with Other Libraries

    【讨论】:

    • 您能否详细说明冲突,即使使用.noConflict()
    • 我发现在将加载事件附加到层次结构中较高的元素时最常发生冲突。例如窗口或文档加载事件。如果你在 MooTools 中有一些,在 jQuery 中有一些,你会从两者中得到意想不到的行为。
    • Marco 的例子很好地说明了可能发生的冲突。附加来自两个库的事件可能会导致奇怪的问题,其中一个库的事件会触发而另一个不会。
    • Mootools 也有 $ 冲突问题的解决方案(我忘记了细节)。不过,不要将 jQuery 添加到网站。只需学习 Mootools。很有趣。
    【解决方案4】:

    我会说,取决于代码的结构以及您需要做什么。 mootools 确实使自己易于重构和扩展(这毕竟是它存在的部分原因),但需要一段时间来确定最佳实践等等。

    但是,您从 vanilla javascript 或 jquery 的学习曲线不会太陡峭,尤其是如果您只关心 DOM 操作、事件处理和效果。当您决定编写/扩展 mootools 类并冒险进行原型设计时,事情会变得更加有趣 - 但您可能不必这样做......

    有一些关于大多数事情的非常好的教程,以及一些关于通过 jquery 和 mootools 做事情的演示(等效的)。 http://jqueryvsmootools.com/ 是一个很好的例子,说明如何通过任何一个来完成相同的任务,我建议在决定之前阅读它。

    无论你决定什么, 使用两个框架是一种不好的做法(当你可以不用时)。

    【讨论】:

      【解决方案5】:

      这取决于转换为 jQuery 的项目有多大,维护这些页面(与其他已经使用 jQuery 的页面相比)的工作量,第一组更改的紧迫性等。 ..

      归结为成本比较:您的企业将它们转换为 jQuery 的成本与您学习 mooTools 的企业成本相比如何(并且可能同时将 mootools 和 jquery 放在您的脑海中) )。

      我唯一可以肯定的是不要做选项 3。这不一定是因为你无法让它发挥作用(并且会有挑战),而是因为你必须学习 mootools无论如何要正确维护页面。一旦你这样做了,你最好只保留它们 mootools 而不是重写所有内容或尝试混合框架。

      我个人倾向于将其转换为 jQuery,因为我相信 jQuery is eventually going to corner the market。这意味着它在某个时候转换为 jQuery,因此通过尽早进行转换可能最好地优化业务的长期成本,而转换的次数更少,并且 mootools 仍然相关,所以你可以轻松获得转换帮助。但这当然是有争议的。

      【讨论】:

      • 我喜欢 Joel 对此的想法 - 不要执行选项 3,如果您对 jQuery 感到满意并且有时间/预算进行转换,请使用 jQuery。如果这会很痛苦,我建议学习 MooTools,因为很有可能有一天你会再次遇到这种情况 - 你将成为一个了解 MooTools 和 jQuery 基础知识的更强大的开发人员。
      • jquery 垄断市场?可能是这样,但它与 mootools 不在同一个市场中——它在 vanilla javascript 之上确实没有提供任何东西来处理基于类的继承。 mootools 不会去任何地方 - 它会一直存在,随着 1.3 和 2.0 版本的临​​近,它只会变得更强大......
      • @Dimitar Christoff:我对基于“类”的大型 javascript 程序的经验表明这是一种错误的方法。
      【解决方案6】:

      jQuery 和 Mootools 的基础非常接近,因此从一个移动到另一个并不令人头疼。

      每当我在两者之间进行选择时,我都会倾向于 Mootools - 特别是如果我打算制作任何类型的效果或动画。根据我的经验,Mootools 的基础 FX 库更加健壮,并且可以跨浏览器生成更好的结果。

      就像其他人建议的那样,您可以借此机会学习。如果您对 jQuery 感到满意并且觉得不需要学习其他框架,请将代码移植过来。最后,你不会真的出错。

      【讨论】:

        【解决方案7】:

        由于您对 jQuery 更熟悉,我会先调用jQuery.noConflict();,然后用 jQuery 编写函数。当然,如果时间是一个因素的话。

        【讨论】:

          【解决方案8】:

          a project 扭曲并刺激 Mootools 使其看起来像 JQuery(披着羊皮的狼……或涂成看起来像银的金币……)

          我当然认为你应该学习 Mootools,但这可能会有所帮助。

          【讨论】:

            【解决方案9】:

            我同意那些支持学习 mootools 的人的观点,但我认为如果你做出这个决定会更好,因为你最终认为学习 mootools 是值得的。

            所以我认为对 mootools 功能进行一些研究会很好。

            我喜欢这篇关于这个主题的文章。而且我认为它对阅读此主题的人很有用。

            http://jqueryvsmootools.com/index.html

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-03-15
              • 1970-01-01
              相关资源
              最近更新 更多