LABjs、RequireJS、SeaJS 哪个最好用?为什么?

LABjs、RequireJS、SeaJS 哪个最好用?为什么?

LABjs的核心是LAB(LoadingandBlocking):Loading指异步并行加载,Blocking是指同步等待执行。LABjs通过优雅的语法(script和wait)实现了这两大特性,核心价值是性能优化。LABjs是一个文件加载器。

RequireJS和SeaJS则是模块加载器,倡导的是一种模块化开发理念,核心价值是让JavaScript的模块化开发变得更简单自然。

模块加载器一般可降级为文件加载器用,因此使用RequireJS和SeaJS,也可以达成LABjs的性能优化目的。

RequireJS和SeaJS都是很不错的模块加载器,两者区别如下:

1.两者定位有差异。RequireJS想成为浏览器端的模块加载器,同时也想成为Rhino/Node等环境的模块加载器。SeaJS则专注于Web浏览器端,同时通过Node扩展的方式可以很方便跑在Node服务器端

2.两者遵循的标准有差异。RequireJS遵循的是AMD(异步模块定义)规范,SeaJS遵循的是CMD(通用模块定义)规范。规范的不同,导致了两者API的不同。SeaJS更简洁优雅,更贴近CommonJSModules/1.1和NodeModules规范。

3.两者社区理念有差异。RequireJS在尝试让第三方类库修改自身来支持RequireJS,目前只有少数社区采纳。SeaJS不强推,而采用自主封装的方式来“海纳百川”,目前已有较成熟的封装策略。

4.两者代码质量有差异。RequireJS是没有明显的bug,SeaJS是明显没有bug。

5.两者对调试等的支持有差异。SeaJS通过插件,可以实现Fiddler中自动映射的功能,还可以实现自动combo等功能,非常方便便捷。RequireJS无这方面的支持。

6.两者的插件机制有差异。RequireJS采取的是在源码中预留接口的形式,源码中留有为插件而写的代码。SeaJS采取的插件机制则与Node的方式一致:开放自身,让插件开发者可直接访问或修改,从而非常灵活,可以实现各种类型的插件。

还有不少细节差异就不多说了。

总之,SeaJS从API到实现,都比RequireJS更简洁优雅。如果说RequireJS是Prototype类库的话,则SeaJS是jQuery类库。

最后,向RequireJS致敬!RequireJS和SeaJS是好兄弟,一起努力推广模块化开发思想,这才是最重要的。

相关推荐