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 哪个最好用?为什么?相关推荐

  1. seajs 和spm的使用简介

    说实话, 前端开发是一个令人头痛的事情. nodejs出现了很久了, 一直不是很习惯用nodejs, 当初刚出来的时候, 就下载了express, 想搭建个网站, 结果不是我的菜, 愣是用的不习惯,也 ...

  2. 前后端分离后的前端时代

    什么是前后端分离,要区分前端和后端,需要有个明确的界限.一般,用户可以直接看到的东西,都是属于前端的范畴,除了前端之外都属于后端了. 在传统的像ASP,JSP和PHP等开发模式中,前端是处在一个混沌的 ...

  3. 如何有效地提升 JavaScript 水平?

    学习js主要是一下几个方面, js语言本身的知识, 和浏览器相关的知识, 算法和设计模式还有架构等, js相关的类库, html5和css3还有es5相关的知识. js语言本身: 1. 首先要了解相关 ...

  4. 《从零构建前后分离web项目》:开篇 - 纵观WEB历史演变

    开篇 : 纵观WEB历史演变 在校学习和几年工作工作中不知不觉经历了一半的 WEB 历史演变.对近几年的发展比较了解,结合经验聊聊 WEB 发展历史. 演变不易,但也是必然,因为为人始终要进步. WE ...

  5. [04] 前端构建工具区别

    - node , 是javascript语言的环境和平台, - npm , bower 是一类,包管理, - webpack , browserify , 是一类,javascript预编译模块的方案 ...

  6. js文件的装载和执行

    1.浏览器对script引用的js文件分两步,下载,下载完毕后马上执行:这两步都会阻塞浏览器继续解析. 2.加入defer属性,<script defer type="text/jav ...

  7. 前端开发面试题总结之——JAVASCRIPT(一)

    ___________________________________________________________________________________ 相关知识点 数据类型.运算.对象 ...

  8. JavaScript内存优化

    相对C/C++ 而言,我们所用的JavaScript 在内存这一方面的处理已经让我们在开发中更注重业务逻辑的编写.但是随着业务的不断复杂化,单页面应用.移动HTML5 应用和Node.js 程序等等的 ...

  9. 网页插件学javascript还是jquery好啊?

    文章的起因,也是在群内交流是回答一个小伙的问题,一扯就停不下来,但由于个人知识面覆盖有限,自身基础又不够扎实,仅供参考: 问这个问题之前,我个人建议先搞清什么是jquery,什么是js? jquery ...

  10. 为什么vue前端项目要使用nodejs

    一.传统的JavaScript 传统的js是运行在浏览器上的,因为浏览器内核分为两个部分: 渲染引擎---渲染HTML和CSS, JavaScript 引擎---负责运行 JavaScript 随着技 ...

最新文章

  1. 14 个经典的 Linux 终端命令行,这些工具堪称神器!
  2. Android 仿微信朋友圈添加图片
  3. 这些知识点你会吗?redis的分布式布隆过滤器含答案解析
  4. [云炬python3玩转机器学习] 6-1什么是梯度下降法
  5. 浅谈String str = ““ 和 new String()的区别
  6. 关于 NODE.js 并行线程 worker_threads 的使用与详解。
  7. Linux服务器性能优化
  8. Python AES
  9. 洛谷 P3387 【模板】缩点
  10. 如何解决AttributeError: ‘DataFrame‘ object has no attribute ‘sort‘
  11. oracle数据库改语句,Oracle 惯用的修改语句
  12. JSONP原理及实现
  13. UI控件和代理为什么使用weak
  14. 操作系统虚拟存储管理实验
  15. AttributeError: module ‘hanlp.utils.rules‘ has no attribute ‘tokenize_english‘
  16. 编写README文档(Markdown)
  17. 行测-图形推理-7-相异图形类
  18. Go语言如何高效的进行字符串拼接(6种方式进行对比分析)
  19. 9.2 向量范数的三大不等式
  20. 入门设计原则C++实现五:依赖倒置原则

热门文章

  1. Jmeter(一)-使用http proxy代理录制脚本
  2. Office - Excel 01
  3. 语音信号处理1 ----- 基础知识
  4. bbs的html代码,bbs论坛源代码
  5. 形象易懂的傅里叶变换、短时傅里叶变换和小波变换
  6. 单片机交通灯设计实例
  7. 烽火计划-2020年夏-期末总结
  8. IDEA快捷生成方法
  9. Windows Server 2012 R2 打印服务器的设置与管理-深博-专题视频课程
  10. RadASM配色方案工具fix