vue指令的三個要素是響應式、範本引擎和渲染。響應式是指當更新或增加資料時,頁面會有回應,重新渲染對應的資料;模板引擎本質上是字串,作為實例的識別使用;渲染指的是模板轉換成其他程式碼的過程。
本文操作環境:windows10系統、Vue2.9.6版,DELL G3電腦。
veu中的三要素
#回應式:vue如何監聽到 data 每個屬性變化?
範本引擎:vue的範本如何被解析,指令如何處理?
渲染:vue 的模板如何渲染成 html?以及渲染過程
vue 如何實作是響應式
Object.defineProperty
模擬
1) 什麼是響應式
修改 data 屬性之後, vue 立刻監聽
data 屬性被代理到 vm 上
2) Object.defineProperty
語法:
Object.defineProperty(obj, prop, descriptor)
參數說明:
obj:必要。目標物件
prop:必要。需定義或修改的屬性的名字
descriptor:必要。目標屬性所擁有的特性
基礎
var obj = { name: 'zhangsan', age: 25 } console.log(obj.name); // 获取属性的时候,如何监听 obj.age = 26; // 赋值属性的时候,如何监听
我們用defineProperty方法實作上面的運算:如下
var obj = {} var name = 'zhangsan' Object.defineProperty(obj, "name", { get: function () { console.log('get'); return name; }, set: function (newVal) { console.log('set'); name = newVal; } }); console.log(obj.name); // 可以监听到 obj.name = 'lisi'; // 可以监听到
使用defineProperty我們就可以監聽到數據變化了。其中這個也是 vue 做回應工做核心的方法了。
3) 模擬
var mv = {} var data = { price: 100, name: 'zhangsan' } var key, value; for (key in data) { // 命中闭包。新建一个函数,保证 key 的独立的作用域 (function (key) { Object.defineProperty(mv, key, { get: function () { console.log('get'); return data[key]; }, set: function (newVal) { console.log('set'); data[key] = newVal } }) })(key); }
vue的範本如何被解析
範本是什麼
render 函數
#render 函數 與 vdom
1) 模板是什麼
實質:字串
##有邏輯,如 v-if v-for等與 html 格式很像,但有很大的差異最後要轉換成 html 來顯示模板最後必須轉換成 JS 程式碼, 因為:有邏輯(v-if v-for),必須用 JS 才能實現( 圖靈完備)轉換為 html 渲染頁面,必須用 JS 才能實現#因此,模板最重要轉換成一個 JS 函數基礎範例
<div id="app"> <div> <input v-model="title"> <button v-on:click="add">submit</button> </div> <ul> <li v-for="item in list">{{item}}</li> </ul> </div>以上就是一個模板。 【相關推薦:《
vue.js教學》】
以上是vue指令的三要素是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!