AMD
一、认识
AMD
全称为Asynchronous Module Definition
使用 define
函数来定义模块。通过 require
函数来加载模块。在定义模块时显式声明其依赖。即,在定义一个模块时,你需要告知模块系统它依赖了哪些其他模块。模块及其依赖是异步加载的。这意味着模块的加载不会阻塞后续代码的执行。模块会在后台加载,当所有依赖项都加载完成后,回调函数才会执行。加载顺序由模块管理器控制,确保模块及其依赖按正确的顺序加载。
二、语法
定义模块
// utils.js
define(['dependency1', 'dependency2'], function(dep1, dep2) {
function add(a, b) {
return a + b;
}
return {
add: add
};
});
加载模块
// main.js
require(['utils'], function(utils) {
console.log(utils.add(1, 2)); // 3
});
三、问题
3.1 AMD
与 CMD
有什么区别?
AMD
使用 define
函数来定义模块。通过 require
函数来加载模块。在定义模块时显式声明其依赖。即,在定义一个模块时,你需要告知模块系统它依赖了哪些其他模块。模块及其依赖是异步加载的。这意味着模块的加载不会阻塞后续代码的执行。模块会在后台加载,当所有依赖项都加载完成后,回调函数才会执行。加载顺序由模块管理器控制,确保模块及其依赖按正确的顺序加载。
CMD
使用 define
函数来定义模块。通过 require
函数来加载模块。模块的依赖在模块内部定义。在模块文件中,使用 require
函数来加载模块依赖。这种方式使得模块的依赖在模块实际使用时才被加载。CMD
规范的模块在实际使用时同步加载即动态同步记载,即模块及其依赖在模块使用时才会被加载和执行,这意味着模块的加载可能会影响后续代码的执行。