xiaohan-123
xiaohan-123
**1、CommonJS** CommonJS 规范概述了同步声明依赖的模块定义。这个规范主要用于在服务器端实现模块化代码组 织,但也可用于定义在浏览器中使用的模块依赖。CommonJS 模块语法不能在浏览器中直接运行。 CommonJS 模块定义需要使用 require()指定依赖,而使用 exports 对象定义自己的公共 API。如下例:  无论一个模块在 require()中被引用多少次,模块永远是单例。模块第一次加载后会被缓存,后续加载会取得缓存的模块。 如下例,moduleA只会被打印一次,这是因为无论请求多少次,ModuleA只会被加载一次。  module.exports 对象非常灵活,有多种使用方式。如下例:   只导出一个实体,也可以到处多个对象。 **2、异步模块定义(AMD)**:由于CommonJS以服务器端为目标环境,能够一次性把所有模块都加载到内存,而异步模块定义(AMD)的模块定义系统则以浏览器为目标执行环境,这需要考虑网络延迟的问题。 AMD的一般策略:让模块声明自己的依赖,而运行在浏览器中的模块系统会按需获取依赖,并在依赖加载完成后立即执行依赖它们的模块。 AMD模块实现的核心是用函数包装模块定义:这样可以防止声明全局变量,并允许加载器库控制何时加载模块。 与CommonJS不同,AMD支持可选的为模块指定字符串标识符。 例子:  AMD 也支持 require...
