1. 程式人生 > >jQuery架構設計與實現(2.1.4版本)

jQuery架構設計與實現(2.1.4版本)

需要 引入 hasclass 8.4 uri and hub 組織 移除

市面上的jQuery書太多了,良莠不齊,看了那麽多總覺得少點什麽 對"幹貨",我不喜歡就事論事的寫代碼,我想把自己所學的知識點,代碼技巧,設計思想,代碼模式能很好的表達出來,所以考慮通過分析jQuery的源碼庫的方式來表達,盡力做最好 內容結構還在不斷的修正,歡迎給出建議

ps:寫了數萬字,因項目太忙,暫停下

https://github.com/JsAaron/jQuery

本書圍繞的幾個核心點:

  1. 設計理念
  2. 結構組織
  3. 抽象設計
  4. 模式運用
  5. 場景套用

第一章:理解架構

1.1 我們真正會使用jQuery嗎?
1.2 庫與框架的區別
1.3 jQuery對象與dom對象的區別
1.4 立即表達式與工廠模式
1.5 無沖突處理機制

第二章:核心機制(完成)

2.1 理解上下文this
    2.1.1 作為對象方法調用
    2.1.2 作為函數調用
    2.1.3 作為apply 或 call 調用
    2.1.4 作為構造函數
2.2 原型的優與弊
2.3 架構設計
    2.3.1 new操作符
    2.3.2 實例的檢測
    2.3.3 構造器
    2.3.4 此jQuery非彼jQuery
    2.3.5 合並構造器
2.4 實例對象
    2.4.1 對象結構
    2.4.2 生成原理
2.5 實例與靜態共享設計
2.6 鏈式調用的原理
2.7 回溯機制
    2.7.1 上下文切換
    2.7.2 回溯原理
2.8 插件機制
    2.8.1 枚舉屬性
    2.8.2 extend機制
2.9 叠代器模式
    2.9.1 簡單的叠代器
    2.9.2 jQuery中的each叠代器
    2.9.4 叠代器的擴展  
    2.9.3 叠代器模式總結
2.10 本章總結

第三章:回調模型(完成)

3.1 理解回調函數
3.2 同步與異步中的回調函數
3.3 回調函數與設計模式
3.6 觀察者模式
    3.6.1 模式定義
    3.6.2 適用場合
    3.6.3 簡單實現
    3.6.4 實現原理
    3.6.5 模式利與弊
    3.6.6 模式的運用
3.7 $.Callbacks
    3.7.1 簡單使用
    3.7.2 結構設計
    3.7.3 執行流程
    3.7.4 組合模式

第四章:異步編程(完成)

4.1 異步編程原理
4.2 定時器的困惑
4.3 定時器的工作原理
4.4 setTimeout和setInterval的本質區別
4.5 萬能的setTimeout(0)
    4.5.1 setTimeout(0)的作用
    4.5.2 setTimeout(0)真正意義
    4.5.3 setTimeout(0)的替代品
4.6 瀏覽器的線程機制
4.6 異步回調與Promise
    4.7.1 嵌套異步
    4.7.2 Promise異步
4.8 Promise 與Promise/A+規範
    4.8.1 Promise的世界
    4.8.2 生活中的Promise
    4.8.3 理解Promise的重點
    4.8.4 有限狀態機
    4.8.5 ECMAScript 6中的Promise
    4.8.6 PromiseA與Promise A+的主要區別
    4.8.7 jQuery中Promise?
4.9 Promise的設計路程
    4.9.1 創建Promise
    4.9.2 引入狀態機
    4.9.3 Promise職責分離
    4.9.4 串聯Promise
    4.9.5 錯誤處理
    4.9.6 融入異步
4.10 jQuery的Deferred
    4.10.1 Deferred設計的初衷
    4.10.2 Deferred與Promise
    4.10.3 Deferred.promise
    4.10.4 Deferred的接口設計
    4.10.5 Deferred的執行原理
    4.10.6 Deferred的管道設計
    4.10.7 Deferred的並歸設計

第五章:數據緩存

4.1 緩存介紹
4.2 一個簡單數據緩存實現
4.3 jQuery引入緩存中解決的問題
4.4 底層Data類的實現
    4.4.1 set處理
    4.4.2 get處理
    4.4.3 access處理
    4.4.4 remove處理
    4.4.5 hasData處理
4.5 高層API的封裝
    4.5.1 接口的設定 
    4.5.2 HTML5的data-*屬性
    4.5.3 緩存檢測
4.6 jQuery.data與data的區別
4.7 jQuery.data是實現
4.8 .data的實現
4.9 緩存的清理
    4.9.1 removeData
    4.9.2 jQuery.removeData
    4.9.3 jQuery.cleanData

第六章:隊列操作

6.1 數據結構中的定義
6.2 Queue隊列
6.3 為什麽要引入隊列
6.4 $.queue
6.5 $.dequeue
6.6 promise接口的處理
6.7 jQuery動畫隊列的依賴

第七章:模塊加載

7.1 AMD與CMD規範
7.2 設計剖析
    7.2.1 關於require
    7.2.2 關於define
7.3 構建輕巧的aaronRequire管理器
    7.3.1依賴管理的設計
    7.3.2模塊化管理的設計
    7.3.3預加載與懶加載的共存

第八章:選擇器引擎

8.1 CSS選擇器
8.1.1 認識CSS選擇器
8.1.2 選擇器的種類
8.2 瀏覽器提供的接口與兼容問題
    8.2.1 瀏覽器提供的六大接口
    8.2.2 querySelectorAll的兼容及處理
    8.2.3 getElementById的兼容及處理
    8.2.4 getElementsByTagName的兼容處理
    8.2.5 getElementsByClassName處理
    8.2.6 getAttribute和getAttributeNode的處理
8.3 正則表達式
    8.4.1 理解正則
    8.4.2 選擇分組與引用
    8.4.3 分析jQuery中的正則
8.4 jQuery選擇器的概況
8.5 選擇器引擎設計的思路與知識點 
    8.5.1 瀏覽器的從右向左的解析
8.5.2 設計的思路
8.5.3 需要處理的一些問題
8.5.4 抽象出的概念
8.6 詳解sizzle引擎
    8.6.1 詞法解析器
    8.6.2 解析原理
    8.6.3 編譯函數
    8.6.4 超級匹配
    8.6.6 基礎選擇器
    8.6.7 層級選擇器
    8.6.8 屬性選擇器
    8.6.9 偽類選擇器
    8.6.10 過濾器
    8.6.11 表單選擇器
8.7 jQuery選擇器的優化

第九章:節點遍歷

9.1 節點的關系處理
9.2 設計思路
9.3 整體結構
9.4 抽象的底層處理
     9.4.1 jQuery.dir
     9.4.2 jQuery.sibling
9.5 .find與.children
9.6 .prev,.prevAll,prveUntil
9.7 .next與.nextAll
9.8 .cloest與parents

第十章:文檔處理

10.1 節點層次關系的理解
10.2 DOM的CRUD操作技術
     10.2.1 創建節點
     10.2.2 插入節點
     10.2.3 刪除節點
     10.2.4 替換節點
10.3 忽略的細節
     10.3.1 Document.body與DocumentElement區別
     10.3.2 contentWindow、contentDocument、document區別
     10.3.3 DocumentFragment存在的問題
     10.3.4 iframe存在的問題
     10.3.5 HTML5引入的高級API
10.4 jQuery文檔整體思路
     10.4.1 參數傳遞的抽象
     10.4.2 文檔碎片的優化
     10.4.3 註入script 處理
10.5 jQuery 內部插入
     10.5.1 .append與appendTo
10.5.2 .prepend與.prependTo
     10.5.3 .html與.text
10.6 jQuery 外部插入
     10.6.1 .before與insertBefore
     10.6.2 .after與insertAfter
10.7 jQuery 包裹
     10.7.1 .warp
     10.7.2 .warpAll
     10.7.3 .warpInner
10.8 jQuery 移除
     10.8.1 .empty
     10.8.2 .unwrap
     10.8.3 .detach與.remove
10.9 jQuery 拷貝
     10.9.1 .clone
10.10 jQuery 替換 
     10.10.1 .replaceAll和.replaceWith

第十一章:樣式操作

11.1 盒子模型
     11.1 padding
     11.2 border
     11.3 margin
11.2 樣式操作的規則
     11.2.1 樣式訪問接口
     11.2.2 不同瀏覽下的兼容性
11.3 樣式表操作
11.4 元素的位置
11.5 元素的尺寸
11.6 jQuery樣式解析流程
11.7 jQuery的樣式鉤子
11.8 jQuery的css接口
     11.8.1 addClass與hasClass
     11.8.2 removeClass與.toggleClass
11.9 jQuery的尺寸操作
     11.9.1 .width與.hieght
     11.9.2 .innerWidth與.innerHieght
     11.9.3 .outWidth與.outHieght
11.10 jQuery的位置操作
      11.10.1 .offset與.offsetParent
      11.10.2 .position
      11.10.3 .scrollLeft與.scrollTop

第十二章:屬性操作

12.1 屬性與特性
12.2 瀏覽器的API
12.3 關於jQuery屬性鉤子
12.4 屬性鉤子處理的兼容問題
     12.4.1 保留值屬性名字修正
     12.4.2 與表單操作相關
12.5 .attr與.prop
12.6 .removeAttr與removeProp
12.7 .val

第十三章:事件體系

13.1 冒泡與捕獲
13.2 事件的異步
13.3 事件兼容問題及處理
13.4 事件對象
13.5 事件引發的循環引用
13.6 jQuery事件體系結構   
13.7 jQuery中bind/live/delegate/on的區別
13.8 jQuery事件對象
     13.8.1 jQuery.Event統一事件對象構件
     13.8.2 jQuery.event.fix修正事件屬性
13.9 jQuery綁定設計
     13.9.1 底層on的設計
     13.9.2 jQuery.event.add
13.10 jQuery事件移除
      13.10.1 .off
      13.10.2 jQuery.event.remove
13.11 jQuery委托設計
      13.11.1 涉及的處理
      13.11.2 引入的處理方案
      13.11.3 適配器的運用
13.12 jQuery自定義事件設計
      13.12.1 了解自定義事件的概念
      13.12.2 jQuery.trigger 與 document.dispatchEvent 區分
      13.12.3 jQuery自定義事件原理
13.13 trigger的幾種常見用法
      13.13.1 常用模擬
      13.13.2 觸發自定義事件
      13.13.3 傳遞數據
      13.13.4 執行默認操作
      13.14.5 trigger需要處理的問題
13.14 trigger源碼解讀
      13.14.1 命名空間的過濾
      13.14.2 模擬事件對象
      13.14.3 返回的事件數據合集
      13.14.4 jQuery.event.special
      13.14.5 模擬事件冒泡
      13.14.6 處理事件  
13.15 jQuery模擬事件 
      13.15.1 焦點事件
      13.15.2 事件的兼容性支持
      13.15.3 jQuery.event.special方法
      13.15.4 jQuery.event 事件機制 focusin/ focusout 事件
      13.15.5 為什麽用捕獲?
      13.15.6 jQuery.event.simulate方法

第十四章:AJAX交互

14.1 關於XMLHttpRequest對象
     14.1.1 關於post
     14.1.2 關於get
14.2 http協議
14.3 數據處理
14.4 實現一個完整的Ajax
14.5 jQuery.ajax做了那些事?
14.6 jQuery針對ajax的全新設計
     14.6.1 整體的結構設計
     14.6.2 引入的機制與實現
     14.6.3 抽象的接口
14.7 jQuery.ajax三種事件消息機制
     14.7.1 ajax的參數回調
     14.7.2基於deferred方式的done回調
     14.7.3全局的的自定義事件的回調
14.8 Deferred與Callback的改造
     14.8.1 Callback
     14.8.2 Ajax deferred實現
14.9 前置過濾器
     14.9.1 引入的作用
     14.9.2 針對script的預處理
     14.9.3 針對json,jsonp的預處理
14.10 請求分發器
      14.10.1 XHR對象的封裝
14.11 jsonp的跨域
14.12 jsonp的原理與實現
14.13 類型轉化器
14.14 小結

第十五章:動畫引擎

15.1 常見動畫手段
     15.1.1 定時器動畫
     15.1.2 CSS3動畫
     15.1.3 transition動畫
15.2 動畫原理
15.3 關於緩動公式
15.4 實現一個簡單的動畫設計
15.5 jQuery動畫的引擎
15.6 jQuery動畫隊列
15.7 基於隊列動畫調用
15.8 動畫的底層實現類
     15.8.1 基於deferred的設計
     15.8.2 動畫的開始
     15.8.3 動畫的停止
15.9 jQuery基本動畫效果  
     15.9.1 show
     15.9.2 hide
     15.9.3 toogle
15.10 jQuery動畫的漸變
      15.10.1 .fadeIn和fadeOut
      15.10.2 .fadeTo和fadeToggle
15.11 jQuery動畫的滑動
      15.11.1 .slideDown
      15.11.2 .slideToggle
      15.11.3 .slideUp

jQuery架構設計與實現(2.1.4版本)