代码之家  ›  专栏  ›  技术社区  ›  Andrew Moore

为什么jQuery相对于其他Javascript框架被如此广泛地采用?[闭门]

  •  71
  • Andrew Moore  · 技术社区  · 16 年前

    我管理一组程序员。我很重视我的员工的意见,但最近我们在web项目上使用哪种框架上存在分歧。

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

    我两者都用过 jQuery 框架 . This particular essay 倾向于反映我对这两个框架的感觉。 jQuery 对于DOM操作来说是很好的,但似乎仅限于帮助您实现这一点。

    就功能而言,两者都是 jQuery 框架 考虑到容易 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');
    

    二者都 jQuery 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');
    

    jQuery 框架 考虑到容易 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集成
    • 被微软、谷歌和其他公司使用

    提供以下额外服务:

    • 扩展本机对象
    • 更容易的代码重用
    • 由万维网联盟、Palm和其他公司使用。

    鉴于此,似乎 什么都做 jQuery jQuery 我可以进去 框架 )但是 jQuery

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

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

    20 回复  |  直到 16 年前
        1
  •  62
  •   Elnur Abdurrakhimov Jon Skeet    12 年前

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

    说到底,这是炒作吗?jQuery正在成为“AJAX”、.NET和Web2.0等神奇的营销流行语之一,这对他们来说很好,但为什么呢

    • 框架寿命,或者说,面对不断增长的jQuery,mootools可能会消失,这一点非常值得怀疑,因为它们刚刚发布了1.3 beta 1,而have 2.0将在年底发布。
    • 员工及其培训的成本(我想找到mootools程序员比那些在简历上贴上jquery的程序员要困难得多)。
    • 在给定资源的情况下,在每个框架下维护和扩展系统所需的时间(和成本)。

        2
  •  60
  •   JoshJordan    16 年前

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

    我试着用我的服务器端代码来完成我的大部分工作,这是一个结构良好的代码:它有适当的OOP、层和MVC架构。当我 需要 为了使用Javascript,我发现(到目前为止)jQuery具备了我所需要的功能。坦率地说,这可分为三类:

    • 简单的DOM操作 ,通常在不点击服务器的情况下显示/隐藏内容。
    • 努夫说。
    • 用户界面特权 ,包括模式弹出窗口、动画、从/到隐藏/显示的淡入淡出过渡。我是一个硬核后端编码的家伙,我 在用户界面的东西。我真的很喜欢jQuery让我 以编程方式 做一些看起来有吸引力的东西。

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

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

    我想这就是为什么它如此受欢迎的原因,尤其是在这里。总的来说,我们是后端代码y型的人,jQuery让我们能够以编程方式创建一个吸引人的UI,并让我们专注于后端核心。

        3
  •  16
  •   Elnur Abdurrakhimov Jon Skeet    12 年前

    我不喜欢将经典的面向对象应用于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对他们的职业生涯有好处,如果他们使用jQuery,会有更多的书籍、示例和其他程序员向他们寻求帮助。

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

        4
  •  11
  •   Chase Wilson    15 年前

    我问自己这个问题已经有一段时间了,我只是想把我的头绕在这个论点上。在我读到的讨论中,压倒性的反应是“被更广泛地采用——因此更好”。

    不过,我对JQuery的主要不满是,插件和第三方开发人员缺乏一致性或实践。当插件之间在结构上或其他方面没有一致性时,“有更多插件可用”的轶事真的对我没有帮助。我花了几周的时间才学会了“公认的”插件模型,即便如此,我还是将自己的实用风格融入其中,因为我发现了当前结构中的错误和低效。可以说,这是一个“专业”,任何人都可以跳进去,并开始它。然而,我更倾向于称之为“骗局”,因为你会看到30种不同的方式来完成某件事,很难确定一个公认的标准。

    那么,“了解JQuery”意味着什么呢?它意味着你知道如何摇摆一点。hide().show().fadeIn().fadeOut()?

    当我在工作中不得不在我的JS上使用gangster时,我会想念一些Mootools。我是说没有本地JSON支持?拜托。。。。。。

    对于“广泛采用”的回应,我们都知道OSCommerce是最受欢迎的 Widely Adopted “购物车,我们都知道那是一堆狗屎。我根本没有把JQuery和OSCommerce相比较。我只是指出了“被广泛采用”的回答的错误。

    至于插件,苹果应用商店有什么。。。10万个应用程序?50000个是屁应用。当然JQuery有很多插件,但是垃圾与价值的比率非常高。

        5
  •  7
  •   Andrew Siemer    16 年前

        6
  •  7
  •   Alsciende    16 年前

    无论如何,JS框架非常相似。如果您已经使用mootools一段时间了,请坚持使用它。了解您的框架比为此选择一个更重要。

        7
  •  5
  •   Jarrett Widman    16 年前

    与任何框架一样,jQuery做它所做的事情,如果它不适合您的需要,您应该使用其他东西。我不使用jQuery在javascript中进行复杂的编程,我使用它是因为它使DOM操作和CSS3风格的东西变得简单,95%的时间是我所需要的。

        8
  •  5
  •   Chris Brandsma    16 年前

    我也有一段时间没看MooTools了。但以下是我对JQuery的观点:

    1. 优秀的文档 . 当我开始使用JQuery时,它拥有最好的文档。
    2. 广阔的 3rd party plugings
    3. Microsoft支持--我是一名asp.net开发人员,这有助于减轻客户的负担。加上它现在和我的工具一起运送。
    4. 很多入门指南。
    5. JQuery的网站看起来比MooTool的网站更好。很抱歉,这很重要,但确实重要。记住,这些工具中的许多都需要吸引设计师和开发人员。
        9
  •  5
  •   Arlen    16 年前

    雅格尼。

    这不是关于最好的,而是关于满足感——为手头的问题找到适当的解决方案。jQuery易于使用,其主要目标是DOM操作。由于95%的人学习javascript只是为了操作DOM,因此没有必要经历更长的MooTools学习过程。MooTools根本没有为他们带来jQuery不需要付出更少努力就能提供的任何东西。

    MooTools在使用它之前对您的要求更高,jQuery可以让您快速组合一些东西。如果您开始编写大型、重载的js应用程序,您可能会遇到这种方法的一些缺点,但同样95%的js编写人员不会这样做,因此这些事情对他们来说并不重要。他们使用服务器端语言来完成繁重的工作,使用javascript来完成DOM。

    庞大的支持者群体——与该项目关系不大。与团队个人更相关,因为这关系到你之后的生活。如果不幸降临(上帝啊,请不要),而你的公司倒闭了,jQuery会给他们带来比MooTools更多的工作。

    与Microsoft的ASP.NET和VisualStudio的集成--如果您是.NET商店,这一点非常重要。事实上,如果你使用.NET,这本身就是切换的原因。

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

    现在查看MooTools列表:

    面向对象框架和经典的面向对象JS仿真——不相关,除非项目的性质使其成为一个加号。我不知道你在建什么,但对于网络商店来说,这很少有关系。大多数网络商店没有足够的代码使其成为加号。

    扩展本机对象——同样与大多数web商店无关

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

    由万维网联盟、Palm和其他公司使用。-无关的如果你想在那里找到工作,唯一与其他人相关的就是使用现有的东西。有多少商店使用它比任何特定的商店使用它更具相关性。

    没有一种真正的方法可以实现javascript编码。消除你的偏见,和你的团队坐下来,消除他们的偏见。深入讨论您正在进行(以及想要进行)的项目的具体类型,以及每个库应用于这些案例的优势。(他们可能如何处理其他案例并不重要,因为这些其他案例并不存在。)你应该就此达成共识。

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

        10
  •  4
  •   Wyatt Barnett    16 年前

    我选择使用jQuery作为我们的默认UI库,这正是因为它不扩展或不扩展monkeypatch原生对象,这与prototype.js或mootools不同。从文档的角度来看,使用哪种框架是毫无疑问的。

        11
  •  2
  •   Keith    16 年前

    你可以自己说:

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

        12
  •  1
  •   Sergei    16 年前

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

    上次我检查MooTools时(可能是1,5年前:-),它与浏览器不兼容,无法处理多个选择。

    所以jQuery在我看来完全没问题。

        13
  •  1
  •   Powerlord    16 年前

    jQuery不仅是一个很好的库,而且它的创建者John Resig,作为 Pro Javascript Techniques

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

        14
  •  1
  •   Martin Schuhfuß    16 年前

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

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

        15
  •  1
  •   Brian Lacy    16 年前

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

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

    我也很喜欢他们强调保持一个小的核心和通过插件增加功能。防止核心库变得非常大和笨拙。

    我从未亲自使用过MooTools,但我毫不怀疑,它是一个非常棒的库,提供了一些与大多数jQuery功能或概念相当的可接受的功能,但第1点为我做了蛋糕。

        16
  •  1
  •   chris    16 年前

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

        17
  •  0
  •   Matthew Flaschen    16 年前

    few other features as well . 另一方面,并不是每个人都使用它。但我不想打断一句好话。

        18
  •  0
  •   ScottE    16 年前

    我不得不附和很多答案…优秀的文档和社区支持是至关重要的。我过去讨厌js编程,并会像plauge一样避免它,但现在我完全接受了它,因为jquery和快速学习曲线。

        19
  •  0
  •   Dheer Dheer    16 年前

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

        20
  •  0
  •   Scott    15 年前

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