一提到模块化开发,就会提到 CommonJS 规范和 AMD 规范,这些都是模块化的依据规范,
RequireJS 就是 AMD 规范的最好体实现;
NodeJS 就是 CommonJS 规范的最好体现
JavaScript 就是 ECMAScript 规范的最好体现;
实现 CommonJS 规范的API是同步加载模块的,实现 AMD 规范的API是异步加载模块的;异步加载即非阻塞加载,更适合浏览器端;
官方文档对RequireJS的描述:
RequireJS是一个JavaScript模块加载器,它非常适合在浏览器中使用,但它也可以用在其他脚本环境,就像Rhino and Node 使用RequireJS加载模块化脚本将提高代码的加载速度和质量;
JavaScript是一个强大的脚本(函数式+面向对象)语言,它有很多快速高效的解释器,然而,它并没有一个用于更广泛应用程序的标准库。
CommonJS是个规范,这个规范中定义了许多API,用于普通应用程序(主要指非浏览器的应用)使用的API,从而填补了这个空白,它的终极目标是提供一个类似Python,Ruby和Java标准库,这样的话,开发者可以使用CommonJS API 编写应用程序,然后这些应用可以运行在不同的JavaScript解释器和不同的主机环境中。
CommonJS其中就有一个Modules规范,这个Modules规范设计之初是为了server端设计的,它是一个同步的模式,这种模式并不适合浏览器端,所以AMD规范诞生了,它最大的特点就是可以异步的方式加载模块。
RequrieJS其实就是AMD现在用的最广泛,最流行的实现,其中,Require.js主要提供define和require两个方法来进行模块化编程,前者用来定义模块,后者用来调用模块。其中:requirejs和require的关系如同:jQuery和$的关系。