首頁 > web前端 > Vue.js > 主體

vue指令的三要素是什麼

WBOY
發布: 2022-03-23 11:31:28
原創
2604 人瀏覽過

vue指令的三個要素是響應式、範本引擎和渲染。響應式是指當更新或增加資料時,頁面會有回應,重新渲染對應的資料;模板引擎本質上是字串,作為實例的識別使用;渲染指的是模板轉換成其他程式碼的過程。

vue指令的三要素是什麼

本文操作環境:windows10系統、Vue2.9.6版,DELL G3電腦。

vue指令的三要素是什麼

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中文網其他相關文章!

相關標籤:
vue
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板