Vue Vue三要素模板解析 響應式 渲染

2021-09-29 01:53:50 字數 1740 閱讀 7123

vue 實現流程

1、把模板解析為 render 函式

·運用 with

·模板中的所有資訊都被 render 函式包含

·模板中用到的 data 中的屬性,都變成了 js 變數

·模板中的 v-model v-for v-on 都變成了 js 邏輯

·render 函式返回 vnode

vue三要素之模板解析

vue模板的本質是字串,有邏輯如 v-if v-for 等(模板轉換成 js 後【 render 函式 】通過js來實現邏輯,因為前端語言中,只有 js 是圖靈完備的語言),與 html 格式很像,但有很大區別。html 是靜態的, vue 的模板是動態的。不過,最終 vue 的模板都要通過 js 轉換為 html 來顯示。

模板中的所有內容都包含在了 render 函式中。

模板:

render 函式例項 (在 vue 原始碼中通過 log(code.render)所得,vue.js 版本 5.2.13)

// _c 返回 vnode

with(this),

[_c(

'div',

[_c(

'input',

],attrs:,

domprops:,

on:}}),

_v(" "),

_c('button',

},[_v("submit")])]

),_v(" "),

_c('div',

[_c(

'ul',

_l((list),

function(item)))

])])}

2、響應式開始監聽·object.defineproperty

·將data 的屬性**到 vm 上

// 模擬 vue 響應式

var vm = {}

var data =

var key, value

for(key in data),

set: function (newval)

})})(key)

}

3、首次渲染,顯示頁面且繫結依賴

·初次渲染,執行 updatecomponent, 執行 vm._render()

·執行 render 函式,會訪問到本篇文章例子的 vm.list 和 vm.title,也就是 data 下的資料

·會被響應式的 get 方法監聽到

·執行 updatecomponent,會走到 vdom 的 patch 方法

·patch 將 vnode 渲染成 dom,初次渲染完成

4、data 屬性變化,觸發 rerender (dom repatch、模板 rerender)

成功三要素

乙個人要想成功,以下三要素是必不可缺的。1 努力。乙個人成功的人士,必須有為了自己的事業拼搏的那種執著。乙個沒有恆心,不能吃一點苦的人,成功的可能性是很渺茫的。完成一件事情,興趣很重要,但不能只憑興趣。因為一件事情,不會是從開始到結束都是能讓你鬥志昂揚的。他會有一段平淡期,甚至低谷期,這時候,就需要...

事件三要素

dom 文件物件模型 bom 瀏覽器物件模式 js以事件驅動為核心的一們語言 事件三要素 1 事件源 a 執行者 b 誰引發的事件,事件的標籤,動作 2 事件 a 執行的事情 b 已經定義好的 點選,滑鼠移上 3 事件驅動程式 處理元素 a 執行結果 b 對樣式和html標籤的 dom操作 執行事件...

成功三要素

乙個人要想成功,以下三要素是必不可缺的。1 努力。乙個人成功的人士,必須有為了自己的事業拼搏的那種執著。乙個沒有恆心,不能吃一點苦的人,成功的可能性是很渺茫的。完成一件事情,興趣很重要,但不能只憑興趣。因為一件事情,不會是從開始到結束都是能讓你鬥志昂揚的。他會有一段平淡期,甚至低谷期,這時候,就需要...