# 异步模块模式 异步模块模式`AMD`是当请求发出后,继续其他业务逻辑,直到模块加载完成执行后续逻辑,实现模块开发中的对模块加载完成后的引用,大名鼎鼎的`require.js`就是以它为思想的,异步模块模式不属于一般定义的`23`种设计模式的范畴,而通常将其看作广义上的架构型设计模式。 ## 概述 异步模块模式主要是用在浏览器环境中,浏览器环境不同于服务器环境,为了不阻塞渲染线程通常以异步的方式来加载外部`Js`文件,因此要使用文件中的某些模块方法必须要经历文件加载过程,而对于这种问题同步模块模式则无法适用,需要使用异步模块模式。异步模块模式不仅减少了多人开发过程中变量、方法名被覆盖的问题,而且增加了模块依赖,使开发者不必担心某些方法尚未加载或未加载完成造成的无法使用问题,异步加载部分功能也可以将更多首屏不必要的功能剥离出去,减少首屏加载成本。 ## 实现 ```javascript // dom.js F.module("./dom", function() { return { g: function(id) { return document.getElementById(id); }, html: function(id, html) { if (!html) return this.g(id).innerHTML; else this.g(id).innerHTML = html; } } }); ``` ```javascript // event.js F.module("./event", ["./dom"], function(dom) { return { on: function(id, type, fn) { dom.g(id)["on" + type] = fn; } } }); ``` ```html