我的理解是这样的:
首先,JavaScript是一个强大的脚本(函数式+面向对象)语言,它有很多快速高效的解释器,然而,它并没有一个用于更广泛应用程序的标准库。
CommonJS是个规范,这个规范中定义了许多API,用于普通应用程序(主要指非浏览器的应用)使用的API,从而填补了这个空白。它的终极目标是提供一个类似Python,Ruby和Java标准库。这样的话,开发者可以使用CommonJS API编写应用程序,然后这些应用可以运行在不同的JavaScript解释器和不同的主机环境中。
NodeJS就是CommonJS这个规范的实现者。
CommonJS其中就有一个Modules规范,这个Modules规范设计之初是为了server端设计的,它是一个同步的模式,这种模式并不适合浏览器端,所以AMD规范诞生了,它最大的特点就是可以异步的方式加载模块。
RequrieJS其实就是AMD现在用的最广泛,最流行的实现,其中,Require.js主要提供define和require两个方法来进行模块化编程,前者用来定义模块,后者用来调用模块。