JS模块化规范之AMD
模块规范
AMD(Asynchronous Module Definition)
概念
Asynchronous Module Defintion
CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操作。AMD规范则是非同步加载模块,允许指定回调函数。由于Node.js主要用于服务器编程,模块文件一般都已经存在于于本地硬盘,所以加载起来比较快,不用考虑非同步加载的方式,所以CommonJS规范比较适用,但是,如果是浏览器环境,要从服务器端加载模块,这时就必须采用非同步模式,因此浏览器端一般采用AMD规范,此外AMD规范比CommonJS规范在浏览器端实现要来着早。
基本语法
定义暴露模块:
//定义没有依赖的模块
define(function(){
return 模块
})
//定义有依赖的模块
define(['module1','module2'],function(m1,m2){
return 模块
})
引入使用模块:
require(['module1','module2'],function(m1,m2){
使用m1,m2
});
AMD实现
通过比较是否使用AMD,来说明使用AMD实际使用的效果。
未使用AMD规范
//dataService.js文件
(function (window){
let msg = 'www.baidu.com';
function getMsg(){
return msg.toUpperCase()
}
window.dataService = {
getMsg }
})(window);
//alerter.js文件
(function (window,dataService){
let name = 'huaxue'