八卦文章,所以标题党下,见笑。期前编写 JavaScript 框架的规则, 玉伯在他的 Blog 已有提到 。而今天看见 Ajaxian 上 收集的目前主流 JavaScript 框架占用的 全局空间变量数目 ,我也忍不住八卦下。

大家或许都知道,使用全局空间要格外的谨慎, 如果滥用全局空间会造成诸多问题 。随着 Javascript 的框架越来越多,不同的设计哲学相互碰撞,形成很有趣的局面:

https://friable.rocks/_/2009_11_05/557076d94e40.jpg

其实,从上面几个图就能看出 Javascript 框架能分成几个流派,就我使用过的几个典型的框架,谈下我的看法:

YUI 看起来像是少林寺,代码调理清晰谨慎也非常容易阅读和理解,但略显庞大和臃肿。其使用全局空间的方式,也 犹如少林寺规一样 ,不敢「越雷池」半步,如数绑定到了 YAHOO 上。

jQuery 犹如丐帮,使用面广、上手容易,但要学得「降龙十八掌」和「打狗棒」并非易事。对于全局空间的态度也虽谨慎(全部绑定到 jQuery),但大家似乎更习惯使用「$」,而忘记还有个 jQuery 变量。

Mootools/Prototype 很逍遥派,代码优雅高效,但真正理解的掌握需要有高深的内功。全局空间上使用也近乎随意,甚至对浏览器内置的功能也有不同程度的扩展。Mootools 的作者也 讨论过相关的设计哲学 ,在这里就不复述。

另外还有个很有趣的现象,就是似乎大家都很喜欢使用美元符「$」变量。但这意味着如果载入不同的框架,就会造成命名空间的相互污染( 详细 )。

避免全局空间的污染,在一定程度上能避免以后自找麻烦,也更有利于代码的模块化。撇开上述框架的八卦,在编写实际代码时更应该注意全局空间的污染问题。