## AMD
异步模块定义(Asynchronous Module Definition,简称AMD)已经引领了前端潮流,[`RequireJS`](http://requirejs.org/docs/) 已经是最流行的实现方式。
### requireJS
官方API : http://requirejs.org/docs/api.html
RequireJs 很好的解决了两个问题及其优势:
1. 实现js文件的异步加载,避免网页失去响应;
2. 管理模块之间的依赖性,便于代码的编写和维护。
3. 基于AMD模块化机制,让前端代码也能实现模块化。
一个导出模块的例子 :
`foo.js`
```js
define(['jquery', 'underscore'], function ($, _) {
// methods
function a(){}; // private because it's not returned (see below)
function b(){}; // public because it's returned
function c(){}; // public because it's returned
// exposed public methods
return {
b: b,
c: c
}
});
```
定义的第一部分是依赖的数组,而第二部分基本上是仅在第一部分声明好才能执行的回调函数。(像 RequireJS 这种脚本加载器才会关心这部分,包括找出依赖文件的位置)
注意:定义中的依赖顺序很重要!
还要注意的是,我们可以映射依赖到我们想要的变量上。如果我们将上面代码中的`$`改为`$$`,那我们下面代码的函数块中引用到 `jQuery` 时都得用 `$$` 代替 `$` 。
最重要的一点是:你绝对不能在上述代码外的函数中引用变量 `$` 和 `_` ,因为它对于外面来说就是一个不透明的沙箱。这就是那些规范想要达到的目标!
引用脚本 :
```js
require(['jquery'], function(a){
a('body').css({'background-color':'#f00'});
});
```
注意,这里引入 jquery,并没有使用默认名称 $ ,而是将之更名为 a,再进行调用。
- Web 开发笔记
- 从输入 URL 到页面加载完成的过程中都发生了什么事情?
- 从浏览器接收url到开启网络请求线程
- 开启网络线程到发出一个完整的http请求
- 从服务器接收到请求到对应后台接收到请求
- 后台和前台的http交互
- http的缓存
- 解析页面流程
- HTML解析,构建DOM
- CSS解析,构建CSSOM
- 资源外链的下载
- CSS的可视化格式模型
- 包含块(Containing Block)
- 控制框(Controlling Box)
- BFC(Block Formatting Context)
- IFC(Inline Formatting Context)
- 其它
- JS引擎解析过程
- JS的解释阶段
- JS的预处理阶段
- JS的执行阶段
- 回收机制
- 参考资料
- JavaScript模块化编程
- AMD
- requireJS
- CommonJS
- UMD
- ES6模块
- 参考资料
- 使用 JavaScript 实现一门编程语言
- 如何使用 JavaScript 实现一门编程语言(1) —— 前言
- 如何使用 JavaScript 实现一门编程语言(2) —— 编写一个解析器
- 如何使用 JavaScript 实现一门编程语言(3) —— Input stream
- 如何使用 JavaScript 实现一门编程语言(4) —— Token stream
- 如何使用 JavaScript 实现一门编程语言(5) —— AST
- 如何使用 JavaScript 实现一门编程语言(6) —— Interpreter
- 完整代码
- 参考资料
- 前端布局概论
- 参考资料
- Windows 笔记
- 错误解决
- win10应用商店无法登录提示0x80070426解决方法
- 使用技巧
- 设置 Hyper-V 和 VMware 共存
- Powershell
- WSL