`

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 是好兄弟,一起努力推广模块化开发思想,这才是最重要的。

摘自:http://www.zhihu.com/question/20342350/answer/14828786 玉伯
分享到:
评论

相关推荐

    LABjs、RequireJS、SeaJS的区别

    主要介绍了LABjs、RequireJS、SeaJS的区别、JS文件加载器、JS块加载器等知识,需要的朋友可以参考下

    LABjs无阻塞脚本加载工具

    LABjs,全称为"Load And Balance JavaScript",是一款强大的JavaScript库,专为了解决Web页面中的脚本阻塞问题而设计。在传统的HTML文档中,脚本通常按顺序执行,这意味着一个脚本的加载和执行会阻塞后续脚本的加载...

    LABjs-2.0.3

    LABjs,全称为Load And Block JavaScript,是一款前端JavaScript库,主要功能是优化页面中的脚本加载,提升网页性能。它的核心理念是异步加载,旨在解决浏览器在处理多个JavaScript文件时可能出现的阻塞问题,从而...

    LABjs-master--js有序加载.rar

    LAB.js,全称为“Loader And Booster JavaScript”,是一种专门用于优化JavaScript加载性能的库。它旨在解决在网页开发中遇到的一个常见问题:JavaScript文件的异步加载顺序无法自定义,这可能导致依赖关系混乱,...

    前端项目-labjs.zip

    前端项目-labjs,labjs(加载和阻塞javascript)是一个由getify解决方案支持的开源(mit许可证)项目。...使用labjs加载脚本可以减少页面加载过程中的资源阻塞,这是优化站点性能的一种简单有效的方法。

    Web前端模块化框架BrowserRequire.zip

    BrowserRequire 是给浏览器使用的模块化框架,并且提供灵活加载js文件(非模块化文件)的功能。 中文使用指南:点击进入! 目录介绍 dist————BrowserRequire框架压缩文件 example————示范案例 ...

    详谈LABJS按需动态加载js文件

    LABjs 是一个很小的 JavaScript 工具,用来根据需要加载 JavaScript 文件,通过使用该工具可以提升页面的性能,避免加载不需用到的 JavaScript 文件,可以实现动态并行加载脚本文件,以及管理加载脚本文件的执行顺序...

    in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案

    国外的像基于jQuery的RequireJs,YUI Loader,LabJs,RunJs,国内也有淘宝的SeaJs,豆瓣的DoJs等,这些都是一些十分优秀的模块加载器。但是本文将会向大家介绍一个新的开源的轻量级“多线程”异步模块加载器In.js,...

    使用jQuery异步加载 JavaScript脚本解决方案

    目前流行的几个加载器,像 curljs、LABjs 和 RequireJS 使用都很广泛。他们功能强大的,但有些情况下可以有更简单的方案。 如果你正在使用 jQuery,有一个内置的方法可以用来加载脚本。如果你想延迟加载插件或任何...

    labjs-downloader:一个在Rs VM中打包Ring VM的存储库,用于运行愚蠢的小Labjs脚本来解压缩SQLite实验数据

    见run_script.sh对于如何启动一个实例RScript过程,在这种情况下, sqlite_to_csv.R从labjs分布。 建立 您可以构建一个名为r.sif的本地奇点图像,但这需要root: sudo singularity build r.sif r.def 或者,在...

    自定义require函数让浏览器按需加载Js文件

    通过这种方式,我们可以实现一个基本的按需加载功能,尽管它可能没有像 LABjs、RequireJS 或 SeaJS 这样的成熟库那么强大和灵活,但对于理解模块化加载的基本原理和实践,这是一个很好的起点。当然,实际项目中,...

    移动延迟加载框架的比较测试

    本文将对几款常用的JavaScript(JS)延迟加载框架进行对比测试,包括Controljs、LABjs、Sea.js、In.js以及Do.js。 #### Controljs Controljs是一种模块化脚本加载器,允许开发者以声明的方式加载依赖项。通过`...

    动态加载jquery库的方法

    有一些第三方JavaScript库可以帮助管理页面上的脚本加载,如RequireJS或LABjs等。这些库支持按需加载和依赖管理,它们可以简化动态加载资源的过程。 例如,RequireJS通过定义模块之间的依赖关系来按需加载脚本,...

    yepnope.js使用详解及示例分享

    yepnope.js是一款高效的条件性异步资源加载器,它的主要作用是允许开发者仅加载浏览器实际使用到的CSS和JavaScript资源。这样做不仅可以提高页面的加载速度,还能提升用户的体验。 在使用yepnope.js时,你需要关注...

    JavaScript将相对地址转换为绝对地址示例代码

    在看LABjs源代码时,发现里面有个将相对地址转为绝对地址的函数,将其拿出纪录如下: 代码如下: function canonical_uri(src, base_path) { var root_page = /^[^?#]*\//.exec(location.href)[0], root_...

    js防阻塞加载的实现方法

    有一些现成的JavaScript加载库,如RequireJS、LABjs等,它们可以帮助开发者更加方便地管理脚本文件的加载顺序和依赖关系。这些加载器通常支持异步和延迟加载等功能,并且可以优化文件的合并和压缩。 6. 预加载...

    前端编码规范.docx

    - 对于需要兼容老旧浏览器的情况,可以使用脚本加载器如yepnope或labjs等来实现异步加载。 #### 八、总结 前端编码规范的制定和实施对于保证项目的长期成功至关重要。通过遵循这些规范,不仅可以提高代码质量,还...

Global site tag (gtag.js) - Google Analytics