目錄
1. 數據驅動,也就是資料的雙向綁定
#2. 元件系統
首頁 web前端 Vue.js vuejs的兩個核心是什麼

vuejs的兩個核心是什麼

Sep 18, 2021 pm 07:01 PM
vuejs 數據驅動

vuejs的兩個核心是資料驅動和元件系統。資料驅動也就是資料的雙向綁定,用來確保資料和視圖的一致性。元件系統能夠把頁面抽象化成多個相對獨立的模組;可以實現程式碼重用,提高開發效率和程式碼品質,以便於程式碼維護。

vuejs的兩個核心是什麼

本教學操作環境:windows7系統、vue2.9.6版,DELL G3電腦。

vue.js的兩大核心:1. 資料驅動------------- 2.元件系統

1. 數據驅動,也就是資料的雙向綁定

資料變更後,會重新對頁面渲染,這就是Vue響應式,那麼這一切是怎麼做到的呢?

想完成這個過程,我們需要:

  • 偵測資料的變更
  • 在收集視圖依賴了哪些資料
  • 資料變更時,自動「通知」需要更新的視圖部分,並進行更新

對應專業俗語分別是:

    ##資料劫持/ 資料代理
  • 依賴收集
  • 發布訂閱模式  
也就是說:Vue 響應式核心就是,getter 的時候會收集依賴,setter 的時候會觸發依賴更新

#vue將

遍歷data中物件的所有property並使用 Object.defineProperty 把這些property 全部轉為 getter/setter#。

這些getter/setter 對使用者來說是看不見的,但在內部它們

讓Vue 能夠追蹤依賴在property 被存取和修改時通知變更# 。

每個元件實例都對應一個 watcher 實例,它會在元件渲染的過程中把「接觸」過的資料 property 記錄為依賴。

getter 的時候我們會收集依賴,依賴收集就是訂閱資料變化watcher的收集,依賴收集的目的是

當響應式資料發生變化時,能夠通知對應的訂閱者去處理相關的邏輯。

setter 的時候會觸發依賴更新,之後當依賴項的

setter 觸發時會通知watcher從而使它關聯的元件重新渲染

總結:

1)原理:

當建立Vue 實例時,vue 會遍歷data 選項的屬性,利用Object.defineProperty 為屬性新增getter 和setter 對資料的讀取進行劫持(getter 用來依賴收集,setter 用來派發更新),並且在內部追蹤依賴,在屬性被存取和修改時通知變化。

每個元件實例會有對應的watcher 實例,會在元件渲染的過程中記錄依賴的所有資料屬性(進行依賴收集,還有computed watcher,user watcher 實例),之後依賴項會改變時,setter 方法會通知依賴與此data 的watcher 實例重新計算(派發更新),

從而使它關聯的元件重新渲染。

2)實作過程:

    我們已經知道實作資料的雙向綁定,首先要對資料進行劫持監聽,所以我們需要設定一個監聽器Observer,用來監聽所有屬性。如果屬性發上變化了,就需要告訴訂閱者Watcher看是否需要更新。

因為訂閱者有很多個,所以我們需要有一個訊息訂閱器​​Dep來專門收集這些訂閱者,然後在監聽器Observer和訂閱者Watcher之間進行統一管理的。接著,我們還需要有一個指令解析器Compile,對每個節點元素進行掃描和解析,

將相關指令對應初始化成一個訂閱者Watcher,並替換模板資料或綁定對應的函數,此時當訂閱者Watcher接收到對應屬性的變化,就會執行對應的更新函數,進而更新視圖。因此接下去我們執行以下3個步驟,實現資料的雙向綁定:

1.實作一個監聽器Observer,用來劫持並監聽所有屬性,如果有變動的,就通知訂閱者。

2.實作一個訂閱者Watcher,可以收到屬性的變更通知並執行對應的函數,從而更新檢視。

3.實作一個解析器Compile,可以掃描和解析每個節點的相關指令,並根據初始化模板資料以及初始化對應的訂閱器

附註:Proxy 是 JavaScript 2015 的新功能。 Proxy 的代理程式是針對整個物件的,而不是物件的某個屬性,因此不同於 Object.defineProperty 的必須遍歷物件每個屬性,Proxy 只需要做一層代理就可以監聽同級結構下的所有屬性變化,當然對於深層結構,遞迴還是需要進行的。此外Proxy支援代理數組的變化。 Proxy 就是vue3.0使用的方法

#2. 元件系統

認識:

1)能夠把頁面抽象化成多個相對獨立的模組;

2)實現程式碼重用,提高開發效率和程式碼質量,便於程式碼維護

元件的核心選項

1 範本(template):範本宣告了資料和最終展現給使用者的DOM之間的對應關係。

2 初始資料(data):一個元件的初始資料狀態。對於可重複使用的元件來說,這通常是私有的狀態。

3 接受的外部參數(props):元件之間透過參數來進行資料的傳遞和共用。

4 方法(methods):資料的改動操作一般都在組件的方法內進行。

5 生命週期鉤子函數(lifecycle hooks):一個元件會觸發多個生命週期鉤子函數,而最新2.0版本對於生命週期函數名稱改變很大。

6 私有資源(assets):Vue.js當中將使用者自訂的指令、篩選器、元件等統稱為資源。一個元件可以聲明自己的私有資源。私有資源只有該元件和它的子元件可以呼叫。

相關推薦:《vue.js教學

以上是vuejs的兩個核心是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1250
24
使用Vue.js和Kotlin語言開發安卓應用程式的一些技巧 使用Vue.js和Kotlin語言開發安卓應用程式的一些技巧 Jul 31, 2023 pm 02:17 PM

使用Vue.js和Kotlin語言開發安卓應用程式的一些技巧隨著行動應用的普及和用戶需求的不斷增長,安卓應用的開發越來越受到開發者的關注。在開發安卓應用程式時,選擇合適的技術堆疊至關重要。近年來,Vue.js和Kotlin語言逐漸成為安卓應用程式開發的熱門選擇。本文將介紹使用Vue.js和Kotlin語言開發安卓應用程式的一些技巧,並給出對應的程式碼範例。一、搭建開發環境在開始

使用Vue.js和Python開發資料視覺化應用的一些技巧 使用Vue.js和Python開發資料視覺化應用的一些技巧 Jul 31, 2023 pm 07:53 PM

使用Vue.js和Python開發資料視覺化應用的一些技巧引言:隨著大數據時代的到來,資料視覺化成為了一個重要的解決方案。而在資料視覺化應用的開發中,Vue.js和Python的組合能夠提供靈活性和強大的功能。本文將分享一些使用Vue.js和Python開發資料視覺化應用的技巧,並附上對應的程式碼範例。一、Vue.js簡介Vue.js是一款輕量級的JavaSc

如何使用Vue實現仿QQ聊天氣泡特效 如何使用Vue實現仿QQ聊天氣泡特效 Sep 20, 2023 pm 02:27 PM

如何使用Vue實現仿QQ聊天氣泡特效在現今的社交時代,聊天功能已成為了手機應用程式和網頁應用程式的核心功能之一。而聊天介面中最常見的元素之一就是聊天氣泡,它可以清楚地將發送者和接收者的訊息區分開來,有效地提高了訊息的可讀性。本文將介紹如何使用Vue實現仿QQ聊天氣泡特效,以及提供具體的程式碼範例。首先,我們需要建立一個Vue元件來表示聊天氣泡。組件包含兩個主要部分

Vue.js與Lua語言的融合,建構遊戲開發的前端引擎的最佳實踐和經驗分享 Vue.js與Lua語言的融合,建構遊戲開發的前端引擎的最佳實踐和經驗分享 Aug 01, 2023 pm 08:14 PM

Vue.js與Lua語言的融合,建構遊戲開發的前端引擎的最佳實踐和經驗分享引言:隨著遊戲開發的不斷發展,遊戲前端引擎的選擇成為了一個重要的決策。在這些選擇中,Vue.js框架和Lua語言都成為了眾多開發者的關注點。 Vue.js作為一款受歡迎的前端框架具有豐富的生態系統和便捷的開發方式,而Lua語言則因其輕量級和高效性能在遊戲開發中得到廣泛應用。本文將探討如何將

如何使用PHP和Vue.js實現圖表上的資料篩選和排序功能 如何使用PHP和Vue.js實現圖表上的資料篩選和排序功能 Aug 27, 2023 am 11:51 AM

如何使用PHP和Vue.js實現圖表上的資料篩選和排序功能在網頁開發中,圖表是一種非常常見的資料展示方式。使用PHP和Vue.js可以輕鬆實現圖表上的資料篩選和排序功能,使用戶能夠自訂查看圖表上的數據,提高資料的視覺化效果和使用者體驗。首先,我們需要準備一組資料供圖表使用。假設我們有一個資料表格,包含姓名、年齡和成績三列,資料如下:姓名年齡成績張三1890李

使用Vue.js和Kotlin語言開發國際化支援的行動應用解決方案 使用Vue.js和Kotlin語言開發國際化支援的行動應用解決方案 Jul 31, 2023 pm 12:01 PM

使用Vue.js和Kotlin語言開發國際化支援的行動應用解決方案隨著全球化進程的加速進行,越來越多的行動應用需要提供多語言支援來滿足全球用戶的需求。在開發過程中,我們可以使用Vue.js和Kotlin語言來實現國際化的功能,使應用程式能夠在不同的語言環境下正常運作。一、Vue.js國際化支援Vue.js是一款受歡迎的JavaScript框架,提供了豐富的工具和特

使用Vue.js和Perl語言開發高效的網路爬蟲和資料抓取工具 使用Vue.js和Perl語言開發高效的網路爬蟲和資料抓取工具 Jul 31, 2023 pm 06:43 PM

使用Vue.js和Perl語言開發高效的網路爬蟲和資料抓取工具近年來,隨著網路的快速發展和資料的日益重要,網路爬蟲和資料抓取工具的需求也越來越大。在這個背景下,結合Vue.js和Perl語言開發高效率的網路爬蟲和資料抓取工具是個不錯的選擇。本文將介紹如何使用Vue.js和Perl語言開發這樣一個工具,並附上對應的程式碼範例。一、Vue.js和Perl語言的介

Vue.js與Dart語言的集成,建構跨平台行動應用的思路 Vue.js與Dart語言的集成,建構跨平台行動應用的思路 Jul 30, 2023 pm 10:33 PM

Vue.js與Dart語言的集成,建構跨平台行動應用的思維在行動應用開發領域,跨平台的開發框架得到了越來越多的關注。 Vue.js是一種用於建立使用者介面的JavaScript框架,而Dart語言是由Google開發的一種用於建立跨平台應用的語言。本文將探討如何將Vue.js與Dart語言集成,以建立跨平台行動應用程式。一、Vue.js簡介Vue.js被認為是一種輕

See all articles