MooTools将在接下来的几年内像jQuery一样迅速窜红
而jQuery则会慢慢销声匿迹
YUI将不尴不尬的活着,YUI 3.x将成为小部分人的玩物,大部分人的忽视物
Ext将在web app应用中有一番作为
理由:
- jQuery最大的特点是简洁易用,强大的CSS选择器和简洁易用的API,可以说是以用户为中心的理念在 JS框架里的一次完胜。但jQuery终究只是个人英雄主义的一个产物,其内部的基本架构、代码的可维护性等方面已渐渐散发出腐败的气息。jQuery像 是一个一夜走红的神童,如今已渐渐的江郎才尽,感觉很难再有大的突破。
- YUI则带着浓厚的“官方、团队”js库的气息。其严谨的代码组织风格,以及对web开发思想(指 Unobtrusive, Progressive Enhancement等)的融入,让YUI成为不少开发团队的选择。但YUI 2.x缓慢的更新速度,以及对新思想的接纳程度,很多时候让人恨得牙痒痒,太慢了,和其它新生代框架相比,YUI 2.x像是一个步履蹒跚的老年人,让人很无奈。YUI 3.x目前还处于preview阶段,可以将其看成一个全新的JS库(底层代码全重写了,组织风格做了极大的调整)。YUI 3.x里最明显的一个改变是,将jQuery等框架里的CSS选择器、基本元素(jQuery里jQuery对象,MooTools里的Element对 象)等概念正式化,成为框架最基本的组成部分(在YUI 2.5.x里也有CSS Selector和Element,但一直处于beta阶段,功能很鸡肋)。YUI 3.x自赞的动态加载,在新生代框架里也是早就有了的。仔细比较后,YUI 3.x并没有带来什么新东西,更多的只是吸收接纳了新生代框架的许多理念。对YUI的前景,就如对Yahoo!的期待的一样,我相信它会存活着,但也许仅仅就是这样活着下去。
- MooTools是开源社区形式下发展起来的一个js框架。在它的早期代码里,能感觉到Prototype, jQuery等框架的痕迹,但它一直保持着开放的心态,小步前进,快速更新。 其代码组织风格、对无侵入等Web思想的理解,各个方面都呈现出少年新贵、武林新秀的姿态来。不仅仅是对其它框架优点的吸收,MooTools每次更新经 常给人惊喜:比如lambda表达式,比如Swiff, 还有非常小但很nice的chain操作的改进等等,一点一滴中能看出MooTools的开发者们开放的心态和极其活跃的思路。jQuery是个人英雄,YUI是官僚体系,MooTools是开放团队,对我来说,一个开放的、活跃的团队下的产物是最让我放心的。
- Ext最早叫做YUI-Ext. 一个使用YUI的牛人Jack Slocum, 用YUI用得不大爽,给YUI官方提意见,无奈YUI更新速度忒慢了,于是Slocum叫了声nnd,挽着袖子便自己干了起来。这一干不得了,Ext迅速 流行,噼里啪啦的如今已成立公司,过得很滋润。Ext我用得不多,直觉里感觉Ext过于庞大繁复,也许会在web app的应用里有一番作为,但对于占据互联网上大部分web page来说,Ext的应用并不乐观。
欢迎讨论。
-
1.
cssrain said:
September 21st, 2008 on 19:51首先声明我是jquery的fans、
所以不说其他的,就说jquery吧。反驳1:jQuery 终究只是个人英雄主义的一个产物?
不知道这个从何说起?反驳2:其内部的基本架构、代码的可维护性等方面已渐渐散发出腐败的气息?
这个怎么看处的?反驳3:如今已渐渐的江郎才尽,感觉很难再有大的突破。
这个又怎么看出来的?愿听分析详情。前辈。
-
2.
lifesinger said:
September 21st, 2008 on 23:45to cssrain:
1. 从googlecode上看,目前的owners有六个人,但看1.2.6的源码,绝大部分代码依旧是John Resig写的,个人风格很明显。可以说没有John Resig,就没有jQuery. 我说的个人英雄主义就是这个意思,没有任何贬义。我很佩服这些牛人,好莱坞的大片也靠此才经久不衰啊。Ext早期也是个人英雄主义,后来成立团队,发展成 公司,才有了今日的成就。jQuery暂时还没看到团队开发,我担心的是John Resig一个人扛到底,那就实在不乐观了。(或许我的担心是多余的:()2. jQuery的核心是jQuery对象,大量方法直接绑定在jQuery对象上。疯狂的$和chain, 这是jQuery的优点也是缺点。优点不必多说,缺点是这使得jQuery很难应用于复杂场景。比如要对一千个元素添加class时,一不小心就会创建一 千个jQuery对象(
return new jQuery.fn.init(selector, context);
),链式操作更是很容易造成看似很酷其实很糟糕的代码,比如$('a.ok').addClass('good').attr('href', '#').text('some text')
, 假设class为ok的a有1000个,上面的操作需要3000个循环,并且从语义上讲,上面三个操作的顺序是没什么意义的。还有它的事件模型,fx的处 理等,细究都不是那么美妙。jQuery让用户简洁易用的同时也“纵容”了用户。写写小应用可以,真要复杂起来,感觉很难。jQuery UI的质量一直感觉不是很好,我觉得就是jQuery本身的原因。
可维护性指的是代码的可维护性,代码的个人风格是很恼人的。3. 对MooTools的欣赏,是感觉它一直有新东西出来,比如IFrame对象,比如lambda表达式的增强等。jQuery的插件虽然如雨后春笋一般, 从数量上讲确实很多,但质量上,我用过的几个jQuery插件都还得自己hack一把才敢用。jQuery本身的核心已趋于稳定,基本就是一些bug fix和性能增强,没什么新特性出现。这种感觉有点江郎才尽……
我期待jQuery的突破,我几个月前也是jQuery的忠实fans,对它的感情,既爱又恨……
- 3.
-
4.
lifesinger said:
September 22nd, 2008 on 10:13明城发现的一篇文章:
http://www.mootorial.com/wiki/mootorial/00a-mootoolsvsothers作者的核心观点是:各个框架各有各的好处,选择适合自己的就好。
对于MooTools直接暴露$等全局方法,这个MooTools社区也有很多讨论,但大部分情况下,并不会出现多个框架混用的情景。jQuery 解决这个问题的办法是引入了noConflict, MooTools想解决也很简单,直接将这些$方法挂到MooTools命名空间下也就行了。并不是不为,而且不想增加使用者的麻烦(YUI里,频繁的 var Dom = YAHOO.util.Dom实在是恼人)。
JavaScript有自己的继承机制,MooTools老想着class的确让人有点恼火,但反过来来想,精通js原型的人并不多,精通经典OO 的开发人员则很多。引入class,搞OO,是为了js能被更多的人学会如何使用,同时提高了代码的resuable. Google Chrome中的V8引擎中,据说也引入了class…
-
5.
Yok said:
September 22nd, 2008 on 11:59jquery的性能确实不怎么样,但是“假设class为ok的a有1000个”实在是多虑了,网易首页里html元素总数都不到2k个,实际应用中要同时处理的元素一般<10个。所以还是代码简洁来得重要。
另外jQuery代码风格一个很好的地方是,function一层一层套,需要用到的变量只存在于自己的闭包里,根本不需要用命名空间这么麻烦的手段去避免变量名冲突,我觉得它是一个最能体现functional programming的框架 -
6.
Jason Lee said:
September 23rd, 2008 on 9:45jQuery最大的问题在于UI组件方面,虽然他们自已有在做jQuery UI这个东西,但实际上效果不怎么样。另外三方的jQuery也是很大的问题,如同 lifesinger 所说,我基本上在实际使用中,每个插件都有修改过。
-
7.
Jason Lee said:
September 23rd, 2008 on 9:51嘿嘿,这里网络发消息有字数限制.
我认为jQuery如果失败,很有可以因为UI组件,目前Ext虽然很强大,但入门难,过于复杂,不适合前端页面使用,而jQuery却是相反。 -
8.
guitarpoet said:
September 24th, 2008 on 20:54楼主似乎忽略掉了dojo toolkit、Prototype和Scriptaculious。
对于js框架而言,开源是唯一合适的出路。如果dojo foundation能够更高效一点儿的话。我更看好dojo。
而且,目前绝大多数的js框架,都太初级了。仅仅是在对Web应用开发的基础设施进行修补。还没有起到辅助Web应用的程度。
所以,目前Web应用的发挥着,还要取决于浏览器的发展,而不是框架的发展。
这一点的重任,又是Google挑起来的,现在还要看Google的表现了。
- 9.
-
10.
Tin said:
September 26th, 2008 on 17:47完全不同意的说法:
1、JQuery会走的比较远。因为Django会走的比较远。而且JQuery的内部设计很好,如果说它不好估计是没有理解它的核心理念。而且John Resig的确是个勤奋的福音传播者,它的js使用理念很好,所以这个库会随着它的plugins库的数量质量的双重提高,占重要位置。同时浏览器效率的 的提高也会给它注上强心剂。
2、YUI的api设计不好。作为oo的库它不好,作为fp的库它更不好,所以它不会有多好。不过在widget类库里面它肯定继续占重要地位,因为YUI的widget的确兼容性很好。
3、moo我很喜欢,但是它的演化保持了小众的特点,小步前进,api设计上比较偏设计师的想法。做大型项目的时候你回发现moo没有对如何组织你的项目给很好的“风格”上的建议,所以它也就会在大型项目上哑火。
4、Ext,我看没什么大的希望了。因为它的授权问题,基本上它已经不在是开源社区友好的(它也许可以做自由软件社区友好吧)。而且作为一个UI Widget库,它并没有把可访问性放在重要的地方来重视,所以随着UI的可访问性要求的上升,它的默认皮肤带来的eyecandy估计就没法盖过 usability的缺失了。
你没有提到Prototype,它目前还是js lib的第一名,随着活跃的RoR社区的继续推进,它应该还会持续足够的市场份额。而且它和JQuery同属于有强烈“风格”的库,所以即使项目很大,它还可以保证代码的可读性与可维护性,这对于很多项目来说是至关重要的。 -
11.
关于javascript库的一个回复 | Tin's Blog said:
September 26th, 2008 on 17:58[...] 我以前写过一篇说说我对moo、prototype、JQuery的看法在我的blogjava博客里面(现在我已经不更新了,完全使用这个 wordpress的博客)。今天也是在Google Reader里面看到JavaEye的另外一个朋友lifesinger的一篇文章:大胆预测下几个JS框架的走势,我个人不是非常同意,所以写了如下回 复,也发在我的blog吧。 [...]
-
12.
对JS框架的再思考 - 岁月如歌 said:
October 6th, 2008 on 14:57[...] 各个框架的关注点不同,适用的场景和范围也不同。也许本就不存在竞争,争论孰优孰劣实在有点无聊。在《大胆预测下几个JS框架的走势》一文中,我可能伤了 部分jQuery fans的感情,在此表示歉意,以后我不会再参与这种话题的讨论。凭借John Resig的能力,我相信jQuery近两三年是不会没落的。在web page的应用中,jQuery会继续红火。期待jQuery UI的质量能上一个档次,等到那时,再来和YUI、Ext比较,可能会更有意思一些。 [...]
- 13.
- 14.
-
15.
meteoric_cry said:
February 17th, 2009 on 18:28过度的放纵就是溺爱 所谓权利是在指定的规则里面才能享有
没一个框架是十全十美的,但他们都有很值得去学习的地方,prototype很多人不喜欢,确实有时候用for(var i in ..)的时候比较混乱,但里面的一些思想还是值得去学习的
重要的是学习的, - 16.
-
17.
周裕波 said:
April 9th, 2009 on 9:01喜新厌旧的家伙。
js库,故名思意,他都是建立在js基础上的,不管js库如何发展,不管是那一种库,他必然有自己的优点和缺点。要想玩转他们,最重要的还是把原生的js学好,好好的把oop这个玩意给玩明白。 - 18.
转自:http://lifesinger.org/blog/?p=147