`
dcj3sjt126com
  • 浏览: 1868586 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    LABjs、RequireJS、SeaJS的区别

    一、LABjs 的核心是 LAB(Loading and Blocking):Loading 指异步...模块加载器也可降级为文件加载器用,因此使用 RequireJS 和 SeaJS,也可以达成 LABjs 的性能优化目的。 三、RequireJS 和 SeaJS 都是很不错的模块加

    LABjs无阻塞脚本加载工具

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

    LABjs-2.0.3

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

    Web前端模块化框架BrowserRequire.zip

    更像是LABjs requireJS的结合增强版,但打包源文件只有7kb左右; 已知兼容性 IE 5.5 (添加ieload插件,若不添加则IE10 ) Opera 10 Chrome 8 Firefox 3.6 Safari 5 其中Chrome、Firefox...

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

    在提供的"LABjs-master--js有序加载.rar"压缩包中,可能包含以下内容: 1. LAB.js的核心库文件(如`lab.min.js`或`lab.js`):这是实现脚本有序加载的关键文件,包含了LAB.js的全部功能。 2. 示例代码或HTML文件:...

    前端项目-labjs.zip

    前端项目-labjs,labjs(加载和阻塞javascript)是一个由getify解决方案支持的开源(mit许可证)项目。LabJS的核心目的是成为一个通用的、按需的JavaScript加载程序,能够随时从任何位置将任何javascript资源加载到...

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

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

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

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

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

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

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

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

    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 或者,在...

    动态加载jquery库的方法

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

    js防阻塞加载的实现方法

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

    高性能的javascript之加载顺序与执行原理篇

    比如,LABjs库被推荐用于解决JavaScript文件的加载顺序和执行的问题,并且它支持通过JavaScript来控制脚本加载的时机,从而提高页面的性能。 总结来说,为了提高JavaScript的性能,可以采取以下策略: 1. 将所有的...

    patchjs:Patch.js是用于移动Web的增量(字符级别)脚本加载器

    网站我们新的GitHub存储库关键的未来简单易用的API,例如Labjs。 支持localStorage / Web SQL数据库/ IndexedDB。 通过nginx进行实时差异计算。 通过webpack构建差异计算。装载机参考< script src =" ./patchjs-...

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

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

Global site tag (gtag.js) - Google Analytics