javascript选型问题

目前遇到了js lib选型问题,在选择widget时,我尽量选择了 0依赖的 standalone js。除此之外,我还想选择一个common js lib,用在我们自己的js里。如:
1. JQuery
2. Mootools
3. Prototype
4. Yui
这些js lib都很优秀,我实在不知道如何选择。我个人认为
1. JQuery 很方便,很小巧,很好用,就是写法很奇怪。很适合做一个装饰框架。对页面元素进行重绘。
2. Mootools 侧重UI,面向对象做的最好的一个。
3. Prototype 就像他的名字一样,给js增加了不少proptotype,用起来很惬意。我很倾向于使用它,虽然我还没用过
4. Yui 彻底不了解,不过在新闻频道看到了新版本发布,不少人喜欢。感觉和ext比较像(应该说ext比较像yui),基本被排除。
ext/ext2/dojo等 已被排除

我现在打算在 jquery、mootools、prototype之中选一个,唉,都很棒,都有些特有的东西,让人郁闷的是,底层框架之间会产生冲突,没办法共存,还有$函数,怎么都用这个命名呢。

不知道各位达人选择了什么什么js lib。

BTW:只是想讨论下大家都用什么js lib的,在海版被隐藏了,让我帖问答里来,唉~~~~~~~
[b]问题补充:[/b]
3楼的回答有些道理。

我也觉得jquery的代码写法惊奇。 不过jquery的selector做得够强。其他的框架没有。

[b]问题补充:[/b]
JQuery 已被排除在选择范围之内,因为JQuery太个性了,不过JQuery依然很优秀,但并不适合我。现在主要想在 prototype和mootools之间选择一个
[b]问题补充:[/b]
提高了悬赏,希望大家给点有价值的意见,不要光说优点,我想知道他们的缺点。

mootools,prototype 各自的缺点是什么?

我用mootools。我觉得JQuery对于下工夫学习了的人来说算得上很方便,很好用,但是就写出来的程序的可读性而言,是最差的一个。好的API设计应该能够让没学过使用该API的人不看文档也能大概猜出个意思来,但Jquery绝对是能把谁都能看得懂的程序写的鬼都看不懂。

同样的一段程序用mootools写出来,和用Jquery写出来,拿给一个没接触过这两种东西的人看,对方绝对会晕倒在Jquery的怀抱里。

再说对dom的封装,Jquery无谓的多出个get(0)来,$("#abc")不是对html element的增强而是封装,于是为了面向对象而面向对象,要用一个html element的原始方法或者属性的时候平白的多绕了一个弯子出来。

prototype太重了,不考虑。

我们用的是jquery, 正如楼主所说
[code="java"]
很方便,很小巧,很好用
[/code]
学起来也很简单

做widget要用别人的扩展的,哪个基础库的插件的功能更适合你们应用就用哪个,我相信学习曲线不会差距太大的。

我更倾向于jQuery,三楼说的似乎有点道理,对html element的封装导致了再绕一个圈子。
但实际上jQuery的设计初衷就是尽量避免使用html element,而多使用jQuery封装后的对象,其浏览器兼容性上绝对是出色的。
同样,糟糕的代码风格导致程序可读性下降。
jQuery的链式写法,如果随意将N多写法写到一行上肯定晕,适当的分行如虎添翼~~
而且jQuery上手也很快,很多方法望文生义,新手看起来绝对不难。

补充一下,jQuery的选择器实在优秀……爱不释手……强到逆天……

我只接触过jQuery和prototype,对于没有使用过js库的人来说,要从以下2个方面看
1.你的知识结构
你是否有Java或类Java的语言编程基础,如果有的话,建议使用prototype,具有面向对象语言的特性非常容易入手。
如果你以前只是了解javascript的话,那么jQuery显得相当有亲和力,只要看下hello world你就会深深喜欢上他,再也不想别的了。

2.你用她来做什么
如果你要写面向英特网的应用,建议使用jQuery,她会使你少些很多代码,却可以做不少事情,这样就相当节省带宽。
如果你要用她来写一些组件,或者较为复杂的RIA应用,建议使用prototype,可以类似面向对象语言那样有效组织代码结构,有利于后续维护。另外,现在prototype库的确挺大的,尽管把特效的代码交给script.aculo.us维护了。