Vue.js是一個提供MVVM資料雙向綁定的函式庫,專注於UI層面,核心概念是:資料驅動、元件系統。
資料驅動:
Vue.js資料觀測原理在技術實作上,利用的是ES5Object.defineProperty和記憶體屬性: getter和setter(所以只相容於IE9以上版本),可稱為基於依賴收集的觀測機制。核心是VM,即ViewModel,確保資料和視圖的一致性。
watcher:每個指令都會有一個對應的用來觀測資料的對象,叫做watcher,例如v-text="msg", {{ msg }},即為兩個watcher,watcher對像中包含了待渲染的關聯DOM元素。
<div> {{ message }} </div> var app = new Vue({ el: '#app', data: { message: 'Hello Vue!' } })
基於依賴收集的觀測機制原理:
1 將原生的數據改造成“可觀察對象”,通常為,調用defineProperty改變data對像中數據為記憶體屬性。一個可觀察物件可以被取值getter,也可以被賦值setter。
2 在解析模板,也就是在watcher的求值過程中,每一個被取值的可觀察物件都會將目前的watcher註冊為自己的一個訂閱者,並成為當前watcher的一個依賴。
3 當一個被依賴的可觀察物件被賦值時,它會通知notify所有訂閱自己的watcher重新求值,並觸發對應的更新,也就是watcher物件中關聯的DOM改變渲染。
依賴收集的優點在於可以精確、主動地追蹤資料的變化,不需要手動觸發或對作用域中所有watcher都求值(angular髒檢查實作方式的缺點)。特殊的是,對於數組,需要透過包裹數組的可變方法(例如push)來監聽數組的變化。在新增/刪除屬性,或修改陣列特定位置元素時,也需要呼叫特定的函數,如obj.$add(key, value)才能觸發更新。這是受ES5的語言特性所限。
元件系統:
應用程式類別UI可以看作全部是由元件樹構成的。
註冊一個元件:
Vue.component('my-component', { // 模板 template: '<div>{{msg}} {{privateMsg}}</div>', // 接受参数 props: { msg: String }, // 私有数据,需要在函数中返回以避免多个实例共享一个对象 data: function () { return { privateMsg: 'component!' } } }) <my-component></my-component>
元件的核心選項
1 範本(template):範本聲明了資料和最終展現給使用者的DOM之間的映射關係。
2 初始資料(data):一個元件的初始資料狀態。對於可重複使用的元件來說,這通常是私有的狀態。
3 接受的外部參數(props):元件之間透過參數來進行資料的傳遞和共用。
4 方法(methods):資料的改動操作一般都在組件的方法內進行。
5 生命週期鉤子函數(lifecycle hooks):一個元件會觸發多個生命週期鉤子函數,而最新2.0版本對於生命週期函數名稱改變很大。
6 私有資源(assets):Vue.js當中將使用者自訂的指令、篩選器、元件等統稱為資源。一個元件可以聲明自己的私有資源。私有資源只有該元件和它的子元件可以呼叫。
Webpack是一個開源的前端模組建置工具,它提供了強大的loader API來定義對不同檔案格式的預處理邏輯,這是.vue後綴單檔案元件形式的基礎。所以在此基礎上,尤大開發的vue-loader允許將模板、樣式、邏輯三要素整合在同一個文件中,以.vue文件後綴形成單文件組件格式,方便項目架構和開發引用。
其他特性:
1 非同步批次DOM更新:當大量資料變動時,所有受到影響的watcher會被推送到一個佇列中,並且每個watcher只會推進隊列一次。這個隊列會在進程的下一個 tick非同步執行。這個機制可以避免同一個資料多次變動產生的多餘DOM操作,也可以確保所有的DOM寫入操作在一起執行,避免DOM讀寫切換可能導致的layout。
2 動畫系統:Vue.js提供了簡單卻強大的動畫系統,當一個元素的可見性變化時,使用者不僅可以很簡單地定義對應的CSS Transition或Animation效果,還可以利用豐富的JavaScript鉤子函數進行更底層的動畫處理。 3 可擴充性:除了自訂指令、篩選器和元件,Vue.js還提供了靈活的mixin機制,讓使用者可以在多個元件中重複使用共同的特性。
以上是vue.js的兩個核心是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript核心數據類型在瀏覽器和Node.js中一致,但處理方式和額外類型有所不同。 1)全局對像在瀏覽器中為window,在Node.js中為global。 2)Node.js獨有Buffer對象,用於處理二進制數據。 3)性能和時間處理在兩者間也有差異,需根據環境調整代碼。

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。