作 者:劉博文 著
定 價:79
出 版 社:人民郵電出版社
出版日期:2019年03月01日
頁 數:282
裝 幀:平裝
ISBN:9787115509055
深入講解Vue.js實現原理和思想360奇舞團團長月影和《JavaScript高級程序設計》譯者李松峰作序推薦360前端工程師精心打造,帶你深入了解Vue.js的源碼
●第 1章 Vue.js簡介11.1 什麼是Vue.js 11.2 Vue.js簡史 2第 一篇 變化偵測第 2章 Object的變化偵測 62.1 什麼是變化偵測 62.2 如何追蹤變化 72.3 如何收集依賴 72.4 依賴收集在哪裡 82.5 依賴是誰 102.6 什麼是Watcher 102.7 遞歸偵測所有key 122.8 關於Object的問題 132.9 總結 14第3章 Array的變化偵測 163.1 如何追蹤變化 163.2 173.3 使用覆蓋Array原型 183.4 將方法掛載到數組的屬性上 193.5 如何收集依賴 213.6 依賴列表存在哪兒 223.7 收集依賴 233.8 在中獲取Observer實例 243.9 向數組的依賴發送通知 253.10 偵測素的變化 263.11 偵素的變化 273.11.1 獲素 273.11.2 使用Observer偵素 283.12 關於Array的問題 293.13 總結 29第4章 變化偵測相關的API實現原理 314.1 vm.$watch 314.1.1 用法 314.1.2 watch的內部原理 324.1.3 deep參數的實現原理 364.2 vm.$set 384.2.1 用法 384.2.2 Array的處理 394.2.3 key已經存在於target中 404.2.4 處理新增的屬性 404.3 vm.$delete 414.3.1 用法 424.3.2 實現原理 424.4 總結 45第二篇 虛擬DOM第5章 虛擬DOM簡介 485.1 什麼是虛擬DOM 485.2 為什麼要引入虛擬DOM 515.3 Vue.js中的虛擬DOM 515.4 總結 53第6章 VNode 546.1 什麼是VNode 546.2 VNode的作用 556.3 VNode的類型 566.3.1 注釋節點 576.3.2 文本節點 576.3.3 克隆節點 576.3.4 &nb素節點 586.3.5 組件節點 596.3.6 函數式組件 596.4 總結 59第7章 patch 607.1 patch介紹 607.1.1 新增節點 617.1.2 刪除節點 627.1.3 更新節點 637.1.4 小結 637.2 創建節點 647.3 刪除節點 677.4 更新節點 687.4.1 靜態節點 687.4.2 新虛擬節點有文本屬性 697.4.3 新虛擬節點無文本屬性 697.4.4 小結 707.5 更新子節點 727.5.1 更新策略 727.5.2 優化策略 777.5.3 哪些節點是未處理過的 827.5.4 小結 837.6 總結 86第三篇 模板編譯原理第8章 模板編譯 888.1 概念 888.2 將模板編譯成渲染函數 898.2.1 解析器 908.2.2 優化器 918.2.3 代碼生成器 918.3 總結 92第9章 解析器 939.1 解析器的作用 939.2 解析器內部運行原理 949.3 HTML解析器 999.3.1 運行原理 1009.3.2 截取開始標簽 1019.3.3 截取結束標簽 1079.3.4 截取注釋 1089.3.5 截取條件注釋 1089.3.6 截取DOCTYPE 1099.3.7 截取文本 1099.3.8 純文素的處理 1129.3.9 使用棧維護DOM層級 1149.3.10 整體邏輯 1149.4 文本解析器 1179.5 總結 121第 10章 優化器 12210.1 找出所有靜態節點並標記 12510.2 找出所有靜態根節點並標記 12710.3 總結 129第 11章 代碼生成器 13011.1 通過AST生成代碼字符串 13111.2 代碼生成器的原理 13411.2.1 &nb素節點 13411.2.2 文本節點 13611.2.3 注釋節點 13711.3 總結 137第四篇 整體流程第 12章 架構設計與項目結構 14012.1 目錄結構 14012.2 架構設計 14312.3 總結 145第 13章 實例方法與全局API的實現原理 14613.1 數據相關的實例方法 14713.2 事件相關的實例方法 14713.2.1 vm.$on 14813.2.2 vm.$off 14913.2.3 vm.$once 15213.2.4 vm.$emit 15313.3 生命周期相關的實例方法 15413.3.1 vm.$forceUpdate 15413.3.2 vm.$destroy 15513.3.3 vm.$nextTick 15913.3.4 vm.$mount 16913.4 全局API的實現原理 17813.4.1 Vue.extend 17813.4.2 Vue.nextTick 18213.4.3 Vue.set 18313.4.4 Vue.delete 18313.4.5 Vue.directive 18413.4.6 Vue.filter 18513.4.7 Vue.component 18613.4.8 Vue.use 18813.4.9 Vue.mixin 18913.4.10 Vue.compile 19013.4.11 Vue.version 19013.5 總結 191第 14章 生命周期 19214.1 生命周期圖示 19214.1.1 初始化階段 19314.1.2 模板編譯階段 19414.1.3 掛載階段 19414.1.4 卸載階段 19414.1.5 小結 19414.2 從源碼角度了解生命周期 19514.3 errorCaptured與錯誤處理 19914.4 初始化實例屬性 20314.5 初始化事件 20414.6 初始化inject 20814.6.1 provide/inject的使用方式 20814.6.2 inject的內部原理 21014.7 初始化狀態 21514.7.1 初始化props 21614.7.2 初始化methods 22414.7.3 初始化data 22514.7.4 初始化computed 22814.7.5 初始化watch 23814.8 初始化provide 24114.9 總結 241第 15章 指令的奧秘 24215.1 指令原理概述 24215.1.1 v-if指令的原理概述 24315.1.2 v-for指令的原理概述 24315.1.3 v-on指令 24415.2 自定義指令的內部原理 24615.3 虛擬DOM鉤子函數 25015.4 總結 251第 16章 過濾器的奧秘 25216.1 過濾器原理概述 25316.1.1 串聯過濾器 25416.1.2 濾器接收參數 25416.1.3 resolveFilter的內部原理 25516.2 解析過濾器 25616.3 總結 258第 17章 很好實踐 25917.1 為列表渲染設置屬性key 25917.2 在v-if/v-if-else/v-else中使用key 25917.3 路由切換組件不變 26017.3.1 路由導航守衛beforeRouteUpdate 26117.3.2 觀察 $route對像的變化 26117.3.3 為router-view組件添加屬性key 26217.4 為所有路由統一添加query 26217.4.1 使用全局守衛beforeEach 26317.4.2 使用函數劫持 26317.5 區分Vuex與props的使用邊界 26417.6 避免v-if和v-for一起使用 26417.7 為組件樣式設置作用域 26617.8 避免在scoped素選擇器 26717.9 避免隱性的父子組件通信 26817.10 單文件組件如何命名 26817.10.1 單文件組件的文件名的大小寫 26817.10.2 基礎組件名 26917.10.3 單例組件名 27017.10.4 緊密耦合的組件名 27017.10.5 組件名中的單詞順序 27117.10.6 完整單詞的組件名 27217.10.7 組件名為多個單詞 27317.10.8 模板中的組件名大小寫 27317.10.9 JS/JSX中的組件名大小寫 27417.11 自閉合組件 27517.12 prop名的大小寫 27617.13 多個素 27617.14 模板中簡單的表達式 27617.15 簡單的計算屬性 27717.16 指令縮寫 27817.17 良好的代碼順序 27817.17.1 組件/實例的選項的順序 27817.17.2 &nb素特性的順序 28017.17.3 單文件組素的順序 28117.18 總結 282
本書從源碼層面分析了Vue.js。首先,簡要介紹了Vue.js;然後詳細講解了其內部核心技術“變化偵測”,這裡帶領大家從0到1實現一個簡單的“變化偵測”繫統;接著詳細介紹了虛擬DOM技術,其中包括虛擬DOM的原理及其patching算法;緊接著詳細討論了模板編譯技術,其中包括模板解析器的實現原理、優化器的原理以及代碼生成器的原理;最後詳細介紹了其整體架構以及提供給我們使用的各種API的內部原理,同時還介紹了生命周期、錯誤處理、指令繫統與模板過濾器等功能的原理。本書適合前端開發人員閱讀。
劉博文 著
劉博文,網名Berwin,95後,從事Web前端工作5年,2015年加入360奇舞團,現任360導航事業部前端工程師,負責360導航首頁及二級頁創新項目等億級PV站點的設計與優化,推動Vue.js成為部門內廣泛使用的核心技術棧,獨立研發相關開發工具與技術解決方案並使之成功落地。W3C性能工作組成員,在Web性能領域有深入研究。熱愛開源,熱愛技術,夢想是用技術改變世界。個人GitHub地址:https://github.com/berwin。