AMD

2020-04-26  本文已影响0人  弹指一挥间_e5a3

一、AMD

AMD 是英文 Asynchronous Module Definition异步模块定义)的缩写,它是由 JavaScript 社区提出的专注于支持浏览器端模块化的标准。从名字就可以看出它与 CommonJSES6Module 最大的区别在于它加载模块的方式是异步的。下面的例子展示了如何定义一个 AMD 模块。

define('getSum', ['calculator'], function(math) {
    return function(a, b) {
        console.log('sum: ' + calculator.add(a, b));
    }
});

AMD 中使用 define 函数来定义模块,它可以接受3个参数。

CommonJS 类似,AMD 也使用 require 函数来加载模块,只不过采用异步的形式。

require(['getSum'], function(getSum) {
    getSum(2, 3);
});

通过 AMD 这种形式定义模块的好处在于其模块加载是非阻塞性的,当执行到 require 函数时并不会停下来去执行被加载的模块,而是继续执行 require 后面的代码,这使得模块加载操作并不会阻塞浏览器

尽管 AMD 的设计理念很好,但与同步加载的模块标准相比其语法要更加冗长。另外其异步加载的方式并不如同步显得清晰,并且容易造成回调地狱(callback hell)。在目前的实际应用中已经用得越来越少,大多数开发者还是会选择 CommonJSES6 Module 的形式。

上一篇下一篇

猜你喜欢

热点阅读