为什么会有jQuery、Dojo、Ext、Prototype、YUI、Zepto这么多JS包?
目前流行的JS框架很多Dojo 、Scriptaculous 、Prototype 、yui-ext 、Jquery 、Mochikit、mootools 、moo.fx 等。当然还有很多我都不熟悉的框架,就没有列举。
很多人会在坛子里问,到底哪个框架好呢?哪个框架更牛x呢? 哪个框架OO 更舒服呢?
个人觉得,这是一个新手很容易犯的错误逻辑。 世界上任何东西,任何工具,都没有最好的这一个说法,只有适合和不适合。
我们要根据我们项目的真实需要来选择具有相关特性的框架。
一、JQuery
推荐级别:五星级
使用场景:任意
下载地址:jQuery 或google搜 jquery下载
推荐原因:目前来说我使用最多的框架,也是我个人最推荐的一个。具体好在哪呢? 1.小 2.简单. (学习成本低,但成效高,手册有足够清晰的例子让你从0到项目完成) 3.内部结构好,开源,侧重逻辑 4.对DOM选择强大(其实,JS大多时候是在处理DOM)5.UI扩展好 (这里要提到的就是 Jquery tools和 Jquery UI,大家可以去搜搜看这两个Jquery的扩展UI,你会发现ui原来如此简单,也是因为ui的可扩展性,所以他相对于其他框架毫不逊色)。
二、Extjs
下载地址:HTML5 App Development for Desktop and Mobile. JavaScript Frameworks and Dev Tools from Sencha.
使用场景:内部系统、后台系统、管理系统等。
推荐级别:四星
推荐理由:Extjs有着非常牛逼的UI设计。设计思想:100%面向对象和组件化的思想,推进RIA(Rich Internet Application)的应用。所以当你做像后台管理,企业内部流程,或其他管理系统的时候,这个东西无疑是你的最佳选择。为什么呢? 因为它几行代码就可以生成非常漂亮的全界面UI,功能强大,样式可选。 做过一个CMS的后台和一个企业内部的系统都是用这个做的,节省了很多人力和时间,而且广受好评。但是有缺点:在一个页面加载很多tab的时候,js可能会要同时下载若干个文件。简单说就是js会比较大!稍复杂,为重量级的框架(包含大量UI),体积大。如果导入ext-all.js,压缩后也有近500k。 但对于后台管理和企业内部系统来说,这个会成为瓶颈。
三、YUI
下载地址:YUI Library
推荐级别:4星
推荐理由:YUI这个框架我只研究过,但没用在项目中独立使用过。大多是进入项目后,前辈们使用了YUI,然后我们在后续开发中延续了之前的角色而已。很久以前版本的QQ硬盘、mop的某些模块使用过的,但现在就是很清楚哪些人还在用了。YUI和Extjs有点相似,UI方面有很多优势。
使用场景:拆分YUI的各个模块,对不同需求采用yui中的某部分来填充到自己的模块中。或者是类似于网盘应用这种东东。
四、Dojo
下载地址:Unbeatable JavaScript Tools
推荐级别:四星
推荐理由:Dojo是功能最为强大的javascript框架,刻意提醒一下:功能最强大。所以它几乎包含了所有你可能想要用到的东西。 Dojo更适合企业应用和产品开发的需要,因为离线存储、DataGrid、2D、3D图形、Chart、Comet等组件对于企业应用来说都是很重要的(当然这些组件还要等一段时间才能稳定下来)。例如,BEA基于Mashup技术开发的产品中已经使用了Dojo。优点:背后强大的支持,IBM、Sun、BEA等,这是非常重要的优势;面向对象的设计、统一的命名空间、包管理机制、可扩展性。但是但是,我们是否需要这些功能?做 web2.0产品是有要这么大的东东? 这个按照你自己的需求来。 而且Dojo缺点很明显,太大,功能太多,复杂,学习曲线太陡;文档的极端不全,API很多不稳定,这是很大的问题;侵入性太大,页面中大量使用Dojo属性,例如<button dojoType="dijit.form.Button" id="helloButton">,如果将来dojo升级或者换一个框架时,负担会很大;性能问题,由于dojo加载采用了同步的机制,会暂时锁定浏览器,导致CPU使用率达到100%,另外,很多组件(Widget)的速度很慢。 但是它做企业应用的话,那简直是如鱼得水。这也是IBM等公司招聘的时候,把Dojo和学习Dojo放在第一位的原因。
五、Prototype
最成熟的。但个人认为可以被Jquery取代。两者相似度也比较高。这里就不多说。
六、Mootools
下载地址:MooTools - a compact javascript framework
推荐级别:4星
推荐理由:OO(面向对象)设计思想。模块化强,耦合度比较低。优点:模块化,各模块代码非常独立,最小的核心只有8k,最大的优点是可以选择使用哪些模块,用的时候只要导入模块就行,完整的补刀180k,压缩后补刀70k;语法简洁直观;特效(effects)比jQuery稍强,现在也在开发Mootools UI。缺点:修改了底层的一些类,如Array、String等,这也是设计思想的不同;在DOM和css selector上不如jQuery强大。
总结
轻量级的选择:
主要是mootools和jquery,
由于它们的设计思想的不同,jQuery是追求简洁和高效,Mootools除了追求这些目标以外,其核心在于面向对象,
所以jQuery适合于快速开发,Mootools适合于稍大型和复杂的项目,其中需要面向对象的支持;
另外,在Ajax的支持上,jQuery稍强一些;在Comet的支持上,jQuery有相关的插件,
Mootools目前没有,但是Comet的核心在于服务器的支持,浏览器端的接口很简单,开发相关的插件很简单。
在面向对象的Javascript Library中,mootools逐渐战胜了prototype(体积大,面向对象的设计不合理等),也包括script.acul.ous(基于prototype,实际上就是prototype上的UI库)。
面向RIA的框架
考虑纯JavaScripty库,目前主要是Dojo和ExtJS(还有YUI)。
Dojo更适合企业应用和产品开发的需要,因为离线存储、DataGrid、2D、3D图形、Chart、Comet等组件对于企业应用来说都是很重要的(当然这些组件还要等一段时间才能稳定下来)。例如,BEA基于Mashup技术开发的产品中已经使用了Dojo。
ExtJS:美观和"易用",并且足够强大。在对UI有比较大的需求时,是首选。
参考文献:
http://blog.csdn.net/eyetee/article/details/7861741
为什么会有jQuery、Dojo、Ext、Prototype、YUI、Zepto这么多JS包?的更多相关文章
- 几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比
AJAX是web2.0的基石,现在网上流行几种开源的AJAX框架,比如:jQuery,Mootools,Dojo,Ext JS等等,那么我们到底在什么情况下该使用那个框架? 让我们来想想选择AJAX框 ...
- jQuery 源码分析 8: 回头看jQuery的构造器(jQuery.fn,jQury.prototype,jQuery.fn.init.prototype的分析)
在第一篇jQuery源码分析中,简单分析了jQuery对象的构造过程,里面提到了jQuery.fn.jQuery.prototype.jQuery.fn.init.prototype的关系. 从代码中 ...
- JQuery是继prototype之后又一个优秀的Javascript库
JQuery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Oper ...
- jquery源码'jQuery.fn.init.prototype'
一般我们在创建构造函数即使用的时候会这样写,使用的时候会使用new 关键字,先实例化,然后使用. function test(name, age) { this.name = name; this.a ...
- jquery input 搜索自动补全、typeahead.js
最近做个一个功能需要用到自动补全,然后在网上找了很久,踩了各种的坑 最后用typeahead.js这个插件,经过自己的测试完美实现 使用方法:在页面中引入jquery.jquery.typeahead ...
- jquery ajax中支持哪些返回类型以及js中判断一个类型常用的方法?
1 jquery ajax中支持哪些返回类型在JQuery中,AJAX有三种实现方式:$.ajax() , $.post , $.get(). 预期服务器返回的数据类型.如果不指定,jQuery 将自 ...
- jQuery 源码分析和使用心得 - core.js
core是jQuery的核心内容, 包含了最基础的方法, 比如我们常用的 $(selector, context), 用于遍历操作的 each, map, eq, first 识别变量类型的 isAr ...
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...
- Asp.Net使用Yahoo.Yui.Compressor.dll压缩Js|Css
网上压缩css和js工具很多,但在我们的系统中总有特殊的地方.也许你会觉得用第三方的压缩工具很麻烦.我就遇到了这样问题,我不想在本地压缩,只想更新到服务器上去压缩,服务器压缩也不用备份之类的操作.于是 ...
随机推荐
- JAVA并发-对象方法wait
最简单的东西,往往包含了最复杂的实现,因为需要为上层的存在提供一个稳定的基础,Object作为java中所有对象的基类,其存在的价值不言而喻,其中wait和notify方法的实现多线程协作提供了保证. ...
- JLOI 2009 二叉树问题
洛谷 P3884 [JLOI2009]二叉树问题 洛谷传送门 JDOJ 2024: [JLOI2009]二叉树问题 JDOJ传送门 Description 如下图所示的一棵二叉树的深度.宽度及结点间距 ...
- Comet OJ 夏季欢乐赛 篮球校赛
Comet OJ 夏季欢乐赛 篮球校赛 题目传送门 题目描述 JWJU注重培养学生的"唱,跳,rap,篮球"能力.于是每年JWJU都会举办篮球校赛,来给同学们一个切磋篮球技术的平台 ...
- go安装及使用
一.安装 Windows直接使用 MSI installer . 默认安装目录为 C:\Go,回自动配置好环境变量. 并默认设置工作目录为:C:\Users\用户名\go 二.使用 在默认的工作目录下 ...
- 【java异常】Unexpected error occurred in scheduled task. java.lang.StackOverflowError: null
可能是栈溢出(StackOverFlow) 背景:我用定时器new东西 原因:频率太快了好像!
- BZOJ 4826: [Hnoi2017]影魔 单调栈+可持久化线段树
Description 影魔,奈文摩尔,据说有着一个诗人的灵魂.事实上,他吞噬的诗人灵魂早已成千上万.千百年来,他收集了各式各样 的灵魂,包括诗人.牧师.帝王.乞丐.奴隶.罪人,当然,还有英雄.每一个 ...
- 修改了celery任务老是执行失败,跟shell中调试的结果不同
因为没有重启celery,没有删除celerybeat-schedule,导致使用的task任务一直是原来缓存的,所以代码一直无法生效,也是日了狗了
- adb--环境安装
前戏 我们在做Android自动化的时候,adb命令是必不可少的,比如我们要获取一个包名,使用adb往手机上安装软件,获取activity等等,都要用到adb命令.而模拟器在我们没有手机测试的时候,可 ...
- UNIX网络编程卷1 - >环境搭建(ubuntu16.04)
学习unp网络编程,树上的例子均存在#include“unp.h”,故需要对环境进行配置. 1.到资源页下载www.unpbook.com 2.解压并将unpv13e移动到相应的文件夹下 (因为我 ...
- A 题解————2019.10.16
[题目描述] 对于给定的一个正整数n, 判断n是否能分成若干个正整数之和 (可以重复) ,其中每个正整数都能表示成两个质数乘积. [输入描述]第一行一个正整数 q,表示询问组数.接下来 q 行,每行一 ...