## 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