labjs,requirejs和sea.js哪个最好?为什么

LABjs的核心是Lab(加载和阻塞):加载是指异步并行加载,阻塞是指同步等待执行。LABjs通过优雅的语法(脚本和等待)实现了这两个特性,其核心价值是性能优化。LABjs是一个文件加载器。

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

模块加载器一般可以退化为文件加载器,所以LABjs的性能优化也可以通过使用RequireJS和SeaJS来实现。

RequireJS和SeaJS都是非常好的模块加载器,它们之间的区别如下:

1.两者有区别。RequireJS想做浏览器端的模块加载器,也想做Rhino/Node等环境的模块加载器。SeaJS侧重于Web浏览器,通过Node的扩展可以方便的运行在节点服务器上。

2.这两个标准是有区别的。RequireJS遵循AMD(异步模块定义)规范,SeaJS遵循CMD(通用模块定义)规范。规格的不同导致了两者API的不同。SeaJS更简洁优雅,更接近CommonJS模块/1.1和节点模块。

3.两者在社群观念上有差异。RequireJS正在尝试让第三方类库修改自己来支持RequireJS,目前只有少数社区采用了它。SeaJS不硬推,而是采取独立包装的方式“海纳百川”。目前有成熟的包装策略。

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

5.它们在支持调试方面有所不同。SeaJS可以通过插件实现Fiddler中的自动映射和自动组合的功能,非常方便。RequireJS在这方面没有支持。

6.两者在插件机制上存在差异。RequireJS采取在源代码中预留接口的形式,为插件编写的代码留在源代码中。SeaJS采用的插件机制和Node一样:对插件开发者开放,可以直接访问或修改,因此非常灵活,可以实现各种类型的插件。

还有很多细节和区别,就不多说了。

总之,SeaJS从API到实现都比RequireJS简洁优雅。如果说RequireJS是原型类库,SeaJS就是jQuery类库。

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