Common js和 AMD规范
AMD: 异步模块定义
AMD也采用require()语句加载模块,但是不同于CommonJS,它要求两个参数
require([module], callback);
第一个参数[module],是一个数组,里面的成员就是要加载的模块;第二个参数callback,则是加载成功之后的回调函数。
Node模块采用了CommonJS规范
根据CommonJS规范,一个单独的文件就是一个模块。每一个模块都是一个单独的作用域,也就是说,在一个文件定义的变量(还包括函数和类),都是私有的,对其他文件是不可见的。
CommonJS规定,每个文件的对外接口是
module.exports
对象。这个对象的所有属性和方法,都可以被其他文件导入。
module.exports
对象是可以被其他文件导入的,它其实就是文件内部与外部通信的桥梁。require
方法用于在其他文件加载这个接口。
CommonJS模块的特点如下:
1.所有代码都运行在模块作用域,不会污染全局作用域。
2.模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。要想让模块再次运行,必须清除缓存。
3.模块加载的顺序,按照其在代码中出现的顺序。
CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操作。
AMD规范则是非同步加载模块,允许指定回调函数。由于Node.js主要用于服务器编程,模块文件一般都已经存在于本地硬盘,所以加载起来比较快,不用考虑非同步加载的方式,所以CommonJS规范比较适用。
但是,如果是浏览器环境,要从服务器端加载模块,这时就必须采用非同步模式,因此浏览器端一般采用AMD规范
来源:https://www.cnblogs.com/queff/p/6638410.html