真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

vuejs的兩個(gè)核心是什么

今天就跟大家聊聊有關(guān)vuejs的兩個(gè)核心是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

饒平ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

vuejs的兩個(gè)核心是數(shù)據(jù)驅(qū)動和組件系統(tǒng)。數(shù)據(jù)驅(qū)動也就是數(shù)據(jù)的雙向綁定,用于保證數(shù)據(jù)和視圖的一致性。組件系統(tǒng)能夠把頁面抽象成多個(gè)相對獨(dú)立的模塊;可以實(shí)現(xiàn)代碼重用,提高開發(fā)效率和代碼質(zhì)量,便于代碼維護(hù)。

本教程操作環(huán)境:windows7系統(tǒng)、vue2.9.6版,DELL G3電腦。

vue.js的兩大核心:1. 數(shù)據(jù)驅(qū)動 ------------- 2.組件系統(tǒng)

1. 數(shù)據(jù)驅(qū)動,也就是數(shù)據(jù)的雙向綁定

數(shù)據(jù)發(fā)生變化后,會重新對頁面渲染,這就是Vue響應(yīng)式,那么這一切是怎么做到的呢?

想完成這個(gè)過程,我們需要:

  • 偵測數(shù)據(jù)的變化

  • 收集視圖依賴了哪些數(shù)據(jù)

  • 數(shù)據(jù)變化時(shí),自動“通知”需要更新的視圖部分,并進(jìn)行更新

對應(yīng)專業(yè)俗語分別是:

  • 數(shù)據(jù)劫持 / 數(shù)據(jù)代理

  • 依賴收集

  • 發(fā)布訂閱模式

也就是說:Vue 響應(yīng)式核心就是,getter 的時(shí)候會收集依賴,setter 的時(shí)候會觸發(fā)依賴更新

vue將遍歷data中對象的所有property,并使用 Object.defineProperty 把這些 property 全部轉(zhuǎn)為 getter/setter。

這些 getter/setter 對用戶來說是不可見的,但是在內(nèi)部它們讓 Vue 能夠追蹤依賴,在 property 被訪問和修改時(shí)通知變更。

每個(gè)組件實(shí)例都對應(yīng)一個(gè) watcher 實(shí)例,它會在組件渲染的過程中把“接觸”過的數(shù)據(jù) property 記錄為依賴。

getter 的時(shí)候我們會收集依賴,依賴收集就是訂閱數(shù)據(jù)變化watcher的收集,依賴收集的目的是當(dāng)響應(yīng)式數(shù)據(jù)發(fā)生變化時(shí),能夠通知相應(yīng)的訂閱者去處理相關(guān)的邏輯。

setter 的時(shí)候會觸發(fā)依賴更新,之后當(dāng)依賴項(xiàng)的 setter 觸發(fā)時(shí),會通知 watcher,從而使它關(guān)聯(lián)的組件重新渲染。

總結(jié):

1)原理:

當(dāng)創(chuàng)建 Vue 實(shí)例時(shí),vue 會遍歷 data 選項(xiàng)的屬性,利用 Object.defineProperty 為屬性添加 getter 和 setter 對數(shù)據(jù)的讀取進(jìn)行劫持(getter 用來依賴收集,setter 用來派發(fā)更新),并且在內(nèi)部追蹤依賴,在屬性被訪問和修改時(shí)通知變化。

每個(gè)組件實(shí)例會有相應(yīng)的 watcher 實(shí)例,會在組件渲染的過程中記錄依賴的所有數(shù)據(jù)屬性(進(jìn)行依賴收集,還有 computed watcher,user watcher 實(shí)例),之后依賴項(xiàng)被改動時(shí),setter 方法會通知依賴與此 data 的 watcher 實(shí)例重新計(jì)算(派發(fā)更新),

從而使它關(guān)聯(lián)的組件重新渲染。

2)實(shí)現(xiàn)過程:

我們已經(jīng)知道實(shí)現(xiàn)數(shù)據(jù)的雙向綁定,首先要對數(shù)據(jù)進(jìn)行劫持監(jiān)聽,所以我們需要設(shè)置一個(gè)監(jiān)聽器Observer,用來監(jiān)聽所有屬性。如果屬性發(fā)上變化了,就需要告訴訂閱者Watcher看是否需要更新。

因?yàn)橛嗛喺呤怯泻芏鄠€(gè),所以我們需要有一個(gè)消息訂閱器Dep來專門收集這些訂閱者,然后在監(jiān)聽器Observer和訂閱者Watcher之間進(jìn)行統(tǒng)一管理的。接著,我們還需要有一個(gè)指令解析器Compile,對每個(gè)節(jié)點(diǎn)元素進(jìn)行掃描和解析,

將相關(guān)指令對應(yīng)初始化成一個(gè)訂閱者Watcher,并替換模板數(shù)據(jù)或者綁定相應(yīng)的函數(shù),此時(shí)當(dāng)訂閱者Watcher接收到相應(yīng)屬性的變化,就會執(zhí)行對應(yīng)的更新函數(shù),從而更新視圖。因此接下去我們執(zhí)行以下3個(gè)步驟,實(shí)現(xiàn)數(shù)據(jù)的雙向綁定:

1.實(shí)現(xiàn)一個(gè)監(jiān)聽器Observer,用來劫持并監(jiān)聽所有屬性,如果有變動的,就通知訂閱者。

2.實(shí)現(xiàn)一個(gè)訂閱者Watcher,可以收到屬性的變化通知并執(zhí)行相應(yīng)的函數(shù),從而更新視圖。

3.實(shí)現(xiàn)一個(gè)解析器Compile,可以掃描和解析每個(gè)節(jié)點(diǎn)的相關(guān)指令,并根據(jù)初始化模板數(shù)據(jù)以及初始化相應(yīng)的訂閱器

注:Proxy 是 JavaScript 2015 的一個(gè)新特性。Proxy 的代理是針對整個(gè)對象的,而不是對象的某個(gè)屬性,因此不同于 Object.defineProperty 的必須遍歷對象每個(gè)屬性,Proxy 只需要做一層代理就可以監(jiān)聽同級結(jié)構(gòu)下的所有屬性變化,當(dāng)然對于深層結(jié)構(gòu),遞歸還是需要進(jìn)行的。此外Proxy支持代理數(shù)組的變化。Proxy就是vue3.0使用的方法

2. 組件系統(tǒng)

認(rèn)識:

1)能夠把頁面抽象成多個(gè)相對獨(dú)立的模塊;

2)實(shí)現(xiàn)代碼重用,提高開發(fā)效率和代碼質(zhì)量,便于代碼維護(hù)

組件的核心選項(xiàng)

1 模板(template):模板聲明了數(shù)據(jù)和最終展現(xiàn)給用戶的DOM之間的映射關(guān)系。

2 初始數(shù)據(jù)(data):一個(gè)組件的初始數(shù)據(jù)狀態(tài)。對于可復(fù)用的組件來說,這通常是私有的狀態(tài)。

3 接受的外部參數(shù)(props):組件之間通過參數(shù)來進(jìn)行數(shù)據(jù)的傳遞和共享。

4 方法(methods):對數(shù)據(jù)的改動操作一般都在組件的方法內(nèi)進(jìn)行。

5 生命周期鉤子函數(shù)(lifecycle hooks):一個(gè)組件會觸發(fā)多個(gè)生命周期鉤子函數(shù),最新2.0版本對于生命周期函數(shù)名稱改動很大。

6 私有資源(assets):Vue.js當(dāng)中將用戶自定義的指令、過濾器、組件等統(tǒng)稱為資源。一個(gè)組件可以聲明自己的私有資源。私有資源只有該組件和它的子組件可以調(diào)用。

看完上述內(nèi)容,你們對vuejs的兩個(gè)核心是什么有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


當(dāng)前名稱:vuejs的兩個(gè)核心是什么
瀏覽路徑:http://weahome.cn/article/jscsoc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部