跳到主要内容

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 AMDCMD 有什么区别?

AMD 使用 define 函数来定义模块。通过 require 函数来加载模块。在定义模块时显式声明其依赖。即,在定义一个模块时,你需要告知模块系统它依赖了哪些其他模块。模块及其依赖是异步加载的。这意味着模块的加载不会阻塞后续代码的执行。模块会在后台加载,当所有依赖项都加载完成后,回调函数才会执行。加载顺序由模块管理器控制,确保模块及其依赖按正确的顺序加载。

CMD 使用 define 函数来定义模块。通过 require 函数来加载模块。模块的依赖在模块内部定义。在模块文件中,使用 require 函数来加载模块依赖。这种方式使得模块的依赖在模块实际使用时才被加载。CMD 规范的模块在实际使用时同步加载即动态同步记载,即模块及其依赖在模块使用时才会被加载和执行,这意味着模块的加载可能会影响后续代码的执行。