张经纬,前端工程师
知乎用户、赵勇杰、知乎用户 等人赞同
其实jQuery和YUI的侧重点是不一样的。

jQuery专注于DOM的操作,他通过继承的方式给传入的对象增加了新的方法,从而使我们可以通过链式调用来操作对象,这种方法上手简单,我看到很多设计师都可以玩上一玩。其实,就像jQuery说的,write less do more!

YUI是一个大型开发工具,他提供了一套javascript以及css的类库来为交互开发提供支持,我们可以看到YUI除了主打的js框架外,还有配套的压缩工具(YUI Compressor),文档生成工具(YUI Doc),单元测试工具(YUI Test)甚至开放了PHPLOADER(YUI PHP Loader ),再较大团队开发中,这些东西是非常重要的。

从编程语法上来说,诚如前面所说,jQuery专注于DOM操作,因此必不可免的弱化了OO,相比之下YUI则更加规范。

再如,jQuery中面向DOM的设计,决定了他可以通过$.extend()或者$(elem).extend()向对象或者节点增加新的方法,而YUI在这方面就异常的笨拙。

当然,这些并不能说明谁比谁好,YUI的颗粒化决定了他的维护成本低,可以称为刀,而jQuery锋利的刀刃决定了它使用方便,游刃有余,可以称为剑。

所以,刀剑相争?谁主沉浮?嗯,只有看你是令狐冲还是李寻欢了:)

2赞同反对,不会显示你的姓名
陈根,新的跑道,新的起点
知乎用户、董航 赞同
两个框架的共同点:跨平台、跨浏览器
对于我而言,YUI更像是类似MFC这样的重型框架,里面什么都有,API非常的标准化,适合构建各种管理系统的UI,非常方便,但速度相对比较慢。 jQuery就像是一个轻骑兵,轻量级,可扩展,经典的链式调用让你的程序逻辑非常的简介明了。
建议:
(1) 企业内部管理系统可以考虑使用YUI,可以很方便地创建各种类似桌面应用体验的服务;
(2) 对速度和流量要求比较高的网站,建议使用jQuery。
13赞同反对,不会显示你的姓名
尚春,刚刚入行,需要潜修
知乎用户、知乎用户、刘超 等人赞同
我觉得有一个非常形象的比喻:jQuery就像一把万能钥匙,大部分锁都可以被你轻松打开,但有很多较为复杂的锁是无能为力的;而YUI则是一个开锁人工具箱,有很多的工具,只要你懂得配合使用就可以打开所有的锁。
 
施宏,Javascript Coder
个人喜欢YUI多一点,其实两者各有所长所短。适合于不同的情况下来使用。

jQuery (不包括jQuery UI之类的增强及插件) 更多的好象一个基本的工具类,涵盖了DOM操作,Event绑定,基本动画,Ajax封闭,以及大量的工具方式,便利的语法结构。简单的插件机制。

YUI2的时候,似乎也做了同样的事,不过Yahoo的工程师更喜欢“重”的方式,规范的类结构,名字空间,Event, Dom的封闭,然后在这个基础上也进一步集成了许多UI的控件。

到了YUI3的时候,更清楚的底层结构,Sandboxing,让你可以容易的整合其他的Javascript Library。这个时候,YUI倒更象是一个框架而不是函数库(library)。

淘宝的Kissy框架 https://github.com/kissyteam/kissy, 或者WebQQ用到的Jet框架 http://code.google.com/p/j-et/ 都或多或少的受YUI3框架结构的启发,弱化,而建立一个供自己使用的更精巧的框架。(有时候自主框架的好处是快速的Fix以及灵活的面对你的项目需求,版本控制)。

所以我的最终的建议是,如果是快速的原型开发,或者小型, UI复杂度底的时候,选择jQuery。如果是需要有自己长期维护的UI较多的多页面的项目,选择 YUI似乎是更好的决定。

jQuery 和 YUI (Yahoo User Interface) 各自的优缺点有哪些?具体的使用场景是怎样的?的更多相关文章

  1. Jquery,YUI这个著名js库名称作用的理解

    看廖雪峰大神的教程,其中讲到变量作用域问题.在命名空间中,写到:因为全局变量绑到了window上,不同的js文件访问相同全局变量或者定义了相同名字的顶层函数,都会造成命名冲突,并且很难被发现. 减少冲 ...

  2. Jquery day01

    day01: 基础--选择器.属性和CSS.文档处理 day02: 高级--筛选.事件.效果.ajax jQuery介绍 JS类库 JavaScript 库封装了很多预定义的对象和实用函数.能帮助使用 ...

  3. 【简译】jQuery对象的奥秘:基础介绍

    本文翻译自此文章 你有没有遇到过类似$(".cta").click(function(){})这样的JavaScript代码并且在想“$('#x')是什么”?如果这些对你想天书一样 ...

  4. ExtJs知识点概述

    1.前言 ExtJS的前身是YUI(Yahoo User Interface).经过不断的发展与改进,ExtJS现在已经成功发布到了ExtJS 6版本,是一套目前最完整和最成熟的javascript基 ...

  5. JavaScript 框架比较

    显著增强 JavaScript 开发的框架概览 Joe Lennon, 软件开发人员, 自由职业者 简介: 现代 Web 站点和 Web 应用程序倾向于依赖大量客户端 JavaScript 来提供丰富 ...

  6. best javascript framework list -- 最好的js框架

    Javascript Framework List | Top Javascript Framework List | Best Javascript Framework List http://co ...

  7. Web开发——JavaScript基础

    参考学习: MDN JavaScript:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript ECMAScript 6入门(阮一峰):htt ...

  8. 7个常见Javascript框架介绍

    设计开发中的“框架”指一套包含工具.函数库.约定,以及尝试从常用任务中抽象出可以复用的通用模块,目标是使设计师和开发人员把重点放在任务项目所特有的方面,避免重复开发.通俗的讲,框架就是最常用的java ...

  9. js常用框架

    JS常用框架:jQuery.Prototype.MooTools 参考:w3cshool jQuery jQuery 是目前最受欢迎的 JavaScript 框架. 它使用 CSS 选择器来访问和操作 ...

随机推荐

  1. MVC初级教程(四)

      演示产品源码下载地址:http://www.jinhusns.com/Products/Download 

  2. easyUI-textbox回车获取不到正确的textbox值问题

    //要先给文本框手动赋值之后才可以获取正确的文本框内容 var t = $('#tt'); t.textbox('textbox').bind('keydown', function(e){ if ( ...

  3. MyEclipse中快速跳转到指定行号位置

    有时候我们希望能从当前编辑位置跳到指定行号的位置,可以使用Ctrl + l 快捷键. 其中 l 代表line.

  4. IDEA 2019注册码

    N757JE0KCT-eyJsaWNlbnNlSWQiOiJONzU3SkUwS0NUIiwibGljZW5zZWVOYW1lIjoid3UgYW5qdW4iLCJhc3NpZ25lZU5hbWUiO ...

  5. Storm框架:如何实现crontab定时任务

    Storm除了能对消息流进行处理,还能实现crontab定时任务. 只要在bolt中配置TOPOLOGY_TICK_TUPLE_FREQ_SECS项即可实现. @Override public Map ...

  6. 使用JSON实现分页

    使用JSON实现分页可直接用 Fenye.html <!DOCTYPE html> <html> <head> <title>JSON分页</ti ...

  7. DOM节点树和元素树--深度遍历

    我们在阅读JS高级程序设计的时候,提到了节点树的概念.比如说: elem.parentNode---找elem的父节点: elem.childNodes---找elem的所有的直接子节点: elem. ...

  8. HTML5 Boilerplate

    time: 2016-10-20 20:00 HTML5 Boilerplate(H5BP)是一个由 Paul Irish(Google Chrome 开发人员.jQuery 项目成员.Moderni ...

  9. 解决ubuntu使用命令sudo apt -get install 安装东西时出现"E: Sub-process /usr/bin/dpkg returned an error code (1) "的错误

    问题描述: 今天在使用命令 "sudo apt-get install python3-pip"安装时,总是出现如下图这样的错误,开始以为是以为自己python版本的问题,后来发现 ...

  10. python之定义函数

    1.定义函数和参数检查 通过def语句定义一个函数,自己定义的函数,当参数个数不对时,python解释器可以抛出TypeError,但是当参数类型不对时,无法抛出TypeError,为此可以通过isi ...