LABjs、RequireJS、SeaJS的区别
一、labjs 的核心是 lab(loading and blocking):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 更简洁优雅,更贴近 commonjs modules/1.1 和 node modules 规范。
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 是好兄弟,一起努力推广模块化开发思想,这才是最重要的。
上一篇: Seajs的学习笔记
下一篇: Seajs源码详解分析
推荐阅读
-
SeaJS 与 RequireJS 的差异对比
-
requirejs.config配置paths的时候,配置目录和配置文件的区别
-
LABjs、RequireJS、SeaJS的区别
-
seaJs使用心得之exports与module.exports的区别实例分析
-
LABjs、RequireJS、SeaJS的区别_Seajs
-
SeaJS 与 RequireJS 的差异对比
-
SeaJS 与 RequireJS 的差异对比_AngularJS
-
requirejs.config配置paths的时候,配置目录和配置文件的区别
-
SeaJS 与 RequireJS 的差异对比_AngularJS
-
seaJs中关于exports和module.exports的区别详解