八卦文章,所以标题党下,见笑。期前编写 JavaScript 框架的规则, 玉伯在他的 Blog 已有提到 。而今天看见 Ajaxian 上 收集的目前主流 JavaScript 框架占用的 全局空间变量数目 ,我也忍不住八卦下。
大家或许都知道,使用全局空间要格外的谨慎, 如果滥用全局空间会造成诸多问题 。随着 Javascript 的框架越来越多,不同的设计哲学相互碰撞,形成很有趣的局面:
其实,从上面几个图就能看出 Javascript 框架能分成几个流派,就我使用过的几个典型的框架,谈下我的看法:
YUI 看起来像是少林寺,代码调理清晰谨慎也非常容易阅读和理解,但略显庞大和臃肿。其使用全局空间的方式,也 犹如少林寺规一样 ,不敢「越雷池」半步,如数绑定到了 YAHOO 上。
jQuery 犹如丐帮,使用面广、上手容易,但要学得「降龙十八掌」和「打狗棒」并非易事。对于全局空间的态度也虽谨慎(全部绑定到 jQuery),但大家似乎更习惯使用「$」,而忘记还有个 jQuery 变量。
Mootools/Prototype 很逍遥派,代码优雅高效,但真正理解的掌握需要有高深的内功。全局空间上使用也近乎随意,甚至对浏览器内置的功能也有不同程度的扩展。Mootools 的作者也 讨论过相关的设计哲学 ,在这里就不复述。
另外还有个很有趣的现象,就是似乎大家都很喜欢使用美元符「$」变量。但这意味着如果载入不同的框架,就会造成命名空间的相互污染( 详细 )。
避免全局空间的污染,在一定程度上能避免以后自找麻烦,也更有利于代码的模块化。撇开上述框架的八卦,在编写实际代码时更应该注意全局空间的污染问题。
抢到沙发
谈到js的全局变量让我想起了css的“全局”样式。若一个小小的组件,如“日历”其中的css定义了全局的a样式,如果引用不当照样麻烦连连。所以“不在其位,不谋其职”或许是一个恰当的概括。
这些框架都听说过,也看过几行代码,但是真正自己用过的仅有jQuery而已。
博主对如此多框架的掌握是我向往的状态,对各个框架的门派评价也很有趣。
博主的截图来自哪里呢?
$不知道是谁最先开始用的……
@est 文中已经加了连接的: http://mankz.com/code/GlobalCheck.htm
YUI几个组件需要额外载入的css,入侵还是相当大的,而且权重比较高。
@macji 嗯, 就是不喜欢带UI的js框架。
@手气不错
thx
哈哈,还是丐帮好啊~~!
jQ的高效性也是值得称赞的 John Resig在jQ的效率提升上也一直精益求精
[...]面对繁杂的 JavaScript 库,其实到最后其实是设计哲学的问题。这篇文章将要介绍的是篇名为 KISSY 的 JavaScript 库。[...]