1. 渲染函式
渲染函式(render函式)
渲染函式解析
2.認識節點、樹及虛擬dom概念
vnode物件原始碼
每個dom元素或元件都對應乙個vnode物件,具體含義見**所示
路徑:src/core/vdom/vnode.js
this
.tag = tag // 當前節點標籤名
this
.data = data // 當前節點資料(vnodedata型別)
this
.children = children // 當前節點子節點
this
.text = text // 當前節點文字
this
.elm = elm // 當前節點對應的真實dom節點
this
.ns = undefined // 當前節點命名空間
this
.context = context // 當前節點上下文
this
.fncontext = undefined // 函式化元件上下文
this
.fnoptions = undefined // 函式化元件配置項
this
.fnscopeid = undefined // 函式化元件scopeid
this
.key = data && data.key // 子節點key屬性
this
.componentoptions = componentoptions // 元件配置項
this
.componentinstance = undefined // 元件例項
this
.parent = undefined // 當前節點父節點
this
.raw =
false
// 是否為原生html或只是普通文字
this
.isstatic =
false
// 靜態節點標誌 keep-alive
this
.isrootinsert =
true
// 是否作為根節點插入
this
.iscomment =
false
// 是否為注釋節點
this
.iscloned =
false
// 是否為轉殖節點
this
.isonce =
false
// 是否為v-once節點
this
.asyncfactory = asyncfactory // 非同步工廠方法
this
.asyncmeta = undefined // 非同步meta
this
.isasyncplaceholder =
false
// 是否為非同步佔位
節點、樹及虛擬dom
虛擬dom不是真正意義上的dom,而是乙個輕量級的js物件,在狀態改變的時候,虛擬dom會進行diff演算法計算,來更新只需要被更新的dom,而不是全部的重繪重構。與dom操作相比,虛擬dom是基於js計算的,而且是在記憶體中的,所以開銷會很小。
流程圖:
3.jsx語法及函式式元件
這裡只做簡單介紹
jsx語法
函式式元件
context物件
Vue提高17 Vue響應式原理
簡單來說,依賴收集的過程是 在元件init的過程中,將data中的屬性新增getter setter方法 在元件渲染過程中 render函式執行時 每個元件例項內部會例項化乙個watcher物件,data中的屬性會被touch,觸發getter方法,記錄元件和屬性的對應關係 當屬性更新時,訪問set...
vue 渲染函式處理slot vue 渲染函式
v if template 中配合 v if 條件渲染一整組 paragraph one paragraph two 使用v else 指令來表示 v if 的 else,v else 元素必須緊跟在 v if 或者 v else if元素的後面,否則它將不會被識別 多次使用 v if 如圖所示 通...
vue的渲染 模板 渲染函式
vue 推薦在絕大多數情況下使用模板來建立你的 html。然而在一些場景中,你真的需要 j ascript 的完全程式設計的能力。render函式通過createelement引數來建立 virtual dom returns createelement 乙個 html 標籤名 元件選項物件,或者 ...