|
-- 會員 / 註冊 --
|
|
|
|
深入淺出Vue.js ( 簡體 字) |
作者:劉博文 | 類別:1. -> 程式設計 -> 網路編程 -> Vue.js |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 50872 詢問書籍請說出此書號!【缺書】 NT售價: 395 元 |
出版日:3/1/2019 |
頁數:282 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787115509055 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:本書從源碼層面分析了Vue.js。首先,簡要介紹了Vue.js;然后詳細講解了其內部核心技術“變化偵測”,這里帶領大家從0到1實現一個簡單的“變化偵測”系統;接著詳細介紹了虛擬DOM技術,其中包括虛擬DOM的原理及其patching算法;緊接著詳細討論了模板編譯技術,其中包括模板解析器的實現原理、優化器的原理以及代碼生成器的原理;最后詳細介紹了其整體架構以及提供給我們使用的各種API的內部原理,同時還介紹了生命周期、錯誤處理、指令系統與模板過濾器等功能的原理。 本書適合前端開發人員閱讀。 |
目錄:第 1章 Vue.js簡介 1 1.1 什么是Vue.js 1 1.2 Vue.js簡史 2 第 一篇 變化偵測 第 2章 Object的變化偵測 6 2.1 什么是變化偵測 6 2.2 如何追蹤變化 7 2.3 如何收集依賴 7 2.4 依賴收集在哪里 8 2.5 依賴是誰 10 2.6 什么是Watcher 10 2.7 遞歸偵測所有key 12 2.8 關于Object的問題 13 2.9 總結 14 第3章 Array的變化偵測 16 3.1 如何追蹤變化 16 3.2 攔截器 17 3.3 使用攔截器覆蓋Array原型 18 3.4 將攔截器方法掛載到數組的屬性上 19 3.5 如何收集依賴 21 3.6 依賴列表存在哪兒 22 3.7 收集依賴 23 3.8 在攔截器中獲取Observer實例 24 3.9 向數組的依賴發送通知 25 3.10 偵測數組中元素的變化 26 3.11 偵測新增元素的變化 27 3.11.1 獲取新增元素 27 3.11.2 使用Observer偵測新增元素 28 3.12 關于Array的問題 29 3.13 總結 29 第4章 變化偵測相關的API實現原理 31 4.1 vm.$watch 31 4.1.1 用法 31 4.1.2 watch的內部原理 32 4.1.3 deep參數的實現原理 36 4.2 vm.$set 38 4.2.1 用法 38 4.2.2 Array的處理 39 4.2.3 key已經存在于target中 40 4.2.4 處理新增的屬性 40 4.3 vm.$delete 41 4.3.1 用法 42 4.3.2 實現原理 42 4.4 總結 45 第二篇 虛擬DOM 第5章 虛擬DOM簡介 48 5.1 什么是虛擬DOM 48 5.2 為什么要引入虛擬DOM 51 5.3 Vue.js中的虛擬DOM 51 5.4 總結 53 第6章 VNode 54 6.1 什么是VNode 54 6.2 VNode的作用 55 6.3 VNode的類型 56 6.3.1 注釋節點 57 6.3.2 文本節點 57 6.3.3 克隆節點 57 6.3.4 元素節點 58 6.3.5 組件節點 59 6.3.6 函數式組件 59 6.4 總結 59 第7章 patch 60 7.1 patch介紹 60 7.1.1 新增節點 61 7.1.2 刪除節點 62 7.1.3 更新節點 63 7.1.4 小結 63 7.2 創建節點 64 7.3 刪除節點 67 7.4 更新節點 68 7.4.1 靜態節點 68 7.4.2 新虛擬節點有文本屬性 69 7.4.3 新虛擬節點無文本屬性 69 7.4.4 小結 70 7.5 更新子節點 72 7.5.1 更新策略 72 7.5.2 優化策略 77 7.5.3 哪些節點是未處理過的 82 7.5.4 小結 83 7.6 總結 86 第三篇 模板編譯原理 第8章 模板編譯 88 8.1 概念 88 8.2 將模板編譯成渲染函數 89 8.2.1 解析器 90 8.2.2 優化器 91 8.2.3 代碼生成器 91 8.3 總結 92 第9章 解析器 93 9.1 解析器的作用 93 9.2 解析器內部運行原理 94 9.3 HTML解析器 99 9.3.1 運行原理 100 9.3.2 截取開始標簽 101 9.3.3 截取結束標簽 107 9.3.4 截取注釋 108 9.3.5 截取條件注釋 108 9.3.6 截取DOCTYPE 109 9.3.7 截取文本 109 9.3.8 純文本內容元素的處理 112 9.3.9 使用棧維護DOM層級 114 9.3.10 整體邏輯 114 9.4 文本解析器 117 9.5 總結 121 第 10章 優化器 122 10.1 找出所有靜態節點并標記 125 10.2 找出所有靜態根節點并標記 127 10.3 總結 129 第 11章 代碼生成器 130 11.1 通過AST生成代碼字符串 131 11.2 代碼生成器的原理 134 11.2.1 元素節點 134 11.2.2 文本節點 136 11.2.3 注釋節點 137 11.3 總結 137 第四篇 整體流程 第 12章 架構設計與項目結構 140 12.1 目錄結構 140 12.2 架構設計 143 12.3 總結 145 第 13章 實例方法與全局API的 實現原理 146 13.1 數據相關的實例方法 147 13.2 事件相關的實例方法 147 13.2.1 vm.$on 148 13.2.2 vm.$off 149 13.2.3 vm.$once 152 13.2.4 vm.$emit 153 13.3 生命周期相關的實例方法 154 13.3.1 vm.$forceUpdate 154 13.3.2 vm.$destroy 155 13.3.3 vm.$nextTick 159 13.3.4 vm.$mount 169 13.4 全局API的實現原理 178 13.4.1 Vue.extend 178 13.4.2 Vue.nextTick 182 13.4.3 Vue.set 183 13.4.4 Vue.delete 183 13.4.5 Vue.directive 184 13.4.6 Vue.filter 185 13.4.7 Vue.component 186 13.4.8 Vue.use 188 13.4.9 Vue.mixin 189 13.4.10 Vue.compile 190 13.4.11 Vue.version 190 13.5 總結 191 第 14章 生命周期 192 14.1 生命周期圖示 192 14.1.1 初始化階段 193 14.1.2 模板編譯階段 194 14.1.3 掛載階段 194 14.1.4 卸載階段 194 14.1.5 小結 194 14.2 從源碼角度了解生命周期 195 14.3 errorCaptured與錯誤處理 199 14.4 初始化實例屬性 203 14.5 初始化事件 204 14.6 初始化inject 208 14.6.1 provide/inject的使用方式 208 14.6.2 inject的內部原理 210 14.7 初始化狀態 215 14.7.1 初始化props 216 14.7.2 初始化methods 224 14.7.3 初始化data 225 14.7.4 初始化computed 228 14.7.5 初始化watch 238 14.8 初始化provide 241 14.9 總結 241 第 15章 指令的奧秘 242 15.1 指令原理概述 242 15.1.1 v-if指令的原理概述 243 15.1.2 v-for指令的原理概述 243 15.1.3 v-on指令 244 15.2 自定義指令的內部原理 246 15.3 虛擬DOM鉤子函數 250 15.4 總結 251 第 16章 過濾器的奧秘 252 16.1 過濾器原理概述 253 16.1.1 串聯過濾器 254 16.1.2 濾器接收參數 254 16.1.3 resolveFilter的內部原理 255 16.2 解析過濾器 256 16.3 總結 258 第 17章 最佳實踐 259 17.1 為列表渲染設置屬性key 259 17.2 在v-if/v-if-else/v-else中使用key 259 17.3 路由切換組件不變 260 17.3.1 路由導航守衛beforeRouteUpdate 261 17.3.2 觀察 $route對象的變化 261 17.3.3 為router-view組件添加屬性key 262 17.4 為所有路由統一添加query 262 17.4.1 使用全局守衛beforeEach 263 17.4.2 使用函數劫持 263 17.5 區分Vuex與props的使用邊界 264 17.6 避免v-if和v-for一起使用 264 17.7 為組件樣式設置作用域 266 17.8 避免在scoped中使用元素選擇器 267 17.9 避免隱性的父子組件通信 268 17.10 單文件組件如何命名 268 17.10.1 單文件組件的文件名的大小寫 268 17.10.2 基礎組件名 269 17.10.3 單例組件名 270 17.10.4 緊密耦合的組件名 270 17.10.5 組件名中的單詞順序 271 17.10.6 完整單詞的組件名 272 17.10.7 組件名為多個單詞 273 17.10.8 模板中的組件名大小寫 273 17.10.9 JS/JSX中的組件名大小寫 274 17.11 自閉合組件 275 17.12 prop名的大小寫 276 17.13 多個特性的元素 276 17.14 模板中簡單的表達式 276 17.15 簡單的計算屬性 277 17.16 指令縮寫 278 17.17 良好的代碼順序 278 17.17.1 組件/實例的選項的順序 278 17.17.2 元素特性的順序 280 17.17.3 單文件組件頂級元素的順序 281 17.18 總結 282 |
序: |
|