初識Vue2及MVVM理解

1、什么是Vue

????????Vue是一款用于構建用戶界面的JavaScript框架。它基于標準HTML、CSS和JavaScript構,并提供了一套聲明式的、組件化的編程模型,可以高效地開發用戶界面。

????????Vue.js是一套構建用戶界面的漸進式框架,采用自底向上增量開發的設計,核心庫只關注視圖層

????????另一方面,Vue完全有能力驅動采用單文件組件和Vue生態系統支持的庫開發的復雜單頁應用,其特點綜合了angular(模塊化開發MVVM)和react(虛擬DOM,在內存中模擬DOM操作)的優點。

? ? ? ? 中文官網:Vue.js - 漸進式 JavaScript 框架 | Vue.js

2、MVVM

? ? ? ? 1、什么是MVVM ?

????????????????MVVM? 是 ?Model-View-ViewModel? 的縮寫,它是一種用于構建 ?用戶界面(UI)?? 的 ?軟件架構模式(設計模式)?,主要用于實現 ?數據與視圖的雙向綁定,讓開發者更高效地構建交互式前端應用。

? ? ? ? ? ? ? ? MVVM源于MVC(Model-View-Controller)模式。

? ? ? ? 2、核心組成:

? ? ? ? ????????M:Model? 模型層,這里表示 JavaScript對象

? ? ? ? ????????V:View 視圖層,這里表示DOM(HTML操作的 元素)?,即用戶看到的界面

? ? ? ? ????????VM:ViewModel? ?連接視圖和數據的中間件,負責 ?數據綁定、狀態管理、邏輯處理,并實現 ?View 和 Model 的解耦,Vue.js就是 MVVM中ViewModel層的實現者

? ? ? ? ? ? ? ? 在MVVM 架構中,是不允許“數據”和“視圖”直接通信,只能通過ViewModel來通信,ViewModel其實就是定義了一個OBserver觀察者?

? ? ? ? 3、核心思想:

????????????????數據變化自動更新視圖,用戶操作自動更新數據,實現雙向綁定。?

? ? ? ? 4、數據流向:

????????????????Model → ViewModel → View

????????????????????????數據從 Model 傳到 ViewModel,再通過數據綁定顯示到 View(界面)

?????????????????View → ViewModel → Model

????????????????????????用戶在界面上的操作(比如輸入、點擊)會通過 ViewModel 更新 Model 中的數據

? ? ? ? 5、核心特性:
特性說明
數據綁定?數據變化時,UI 自動更新;用戶修改 UI,數據也自動同步
雙向綁定?最典型的 MVVM 特性,比如 Vue 中?v-model?實現輸入框和數據的雙向同步
?視圖與邏輯分離?View 不直接操作 Model,而是通過 ViewModel 交互,提高可維護性
UI 自動更新?當數據(Model)發生變化時,UI(View)自動重新渲染,無需手動操作 DOM
邏輯集中管理?ViewModel 負責處理業務邏輯、狀態管理、數據轉換等
? ? ? ? 6、模式圖示:
        +-------------+|    View     |  <---> 用戶看到的界面(HTML/CSS)+-------------+↑ | 雙向綁定| ↓+-------------+| ViewModel   |  <---> 處理數據綁定、業務邏輯、狀態管理+-------------+↑ || ↓+-------------+|    Model    |  <---> 數據層(業務數據、API 數據等)+-------------+
? ? ? ? 7、MVVM 與其他架構模式對比:
模式全稱核心思想常見應用 / 框架
?MVC?Model-View-ControllerView 通過 Controller 操作 Model,適合傳統服務端渲染AngularJS(早期)、Backbone.js、Ruby on Rails
?MVP?Model-View-PresenterPresenter 負責更新 View,適合測試驅動開發一些早期的桌面 / 移動應用
?MVVM?Model-View-ViewModel雙向綁定,View 和 Model 解耦,數據驅動視圖?Vue.js、Knockout.js、WPF、Android Jetpack
? ? ? ? 8、MVVM 的優點:
優點說明
UI 和邏輯分離?前端開發者可以更專注于數據和交互邏輯,而不是手動操作 DOM
雙向綁定?數據和視圖自動同步,減少大量冗余的 DOM 操作代碼
提高開發效率?借助框架的響應式機制,可以更快速構建交互式應用
??可維護性強?代碼結構清晰,便于協作和后期維護
??適合復雜交互應用?特別適合數據頻繁變化、需要實時更新 UI 的現代 Web 應用
? ? ? ? 9、MVVM 的缺點
缺點說明
學習成本?對初學者來說,理解數據綁定、響應式原理可能需要一定學習
調試困難?數據變化自動更新視圖,有時難以追蹤數據變化的來源
??過度依賴框架?框架通常對 MVVM 實現有高度封裝,更換框架可能需要重構

????????????????

??????ViewModel 能夠 觀察到數據的變化,并且對視圖對應的內容進行更新

? ? ? ?ViewModel?能夠監聽到視圖的變化,并能夠通知數據發生改變

? ? ? ?Vue.js就是一個MVVM的實現者,核心就是實現了DOM的監聽與數據的綁定

3、項目導入vue

? ? ? ? 1、CDN方式

? ? ? ? ? ? ? ? 百度搜索vue.js CDN選擇任意一個引入項目即可

? ? ? ? 2、官網下載

? ? ? ? ? ? ? ? 地址:Vue.js - 漸進式 JavaScript 框架 | Vue.js

? ? ? ? ? ? ? ? 以下是vue2的下載方式

? ? ? ? 3、項目引入vue
 <script src="js/vue.js"></script>

4、第一個vue項目

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="js/vue.js"></script>
</head>
<body>
<!--view層,模板-->
<div id="app">{{msg}}
</div><script>var vm = new Vue({el: "#app",  //element對象,綁定的對象// model層:數據data: {  //要賦予的數據msg: "hello vue!"}});//viewModel層,當通過頁面控制臺直接vm.msg="你好!"改變值變化時,頁面展示的值也會隨之變化,這就是雙向綁定
</script>
</body>
</html>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92966.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92966.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92966.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Rust:專業級錯誤處理工具 thiserror 詳解

Rust&#xff1a;專業級錯誤處理工具 thiserror 詳解 thiserror 是 Rust 中用于高效定義自定義錯誤類型的庫&#xff0c;特別適合庫開發。相比 anyhow 的應用級錯誤處理&#xff0c;thiserror 提供更精確的錯誤控制&#xff0c;讓庫用戶能模式匹配具體錯誤。 &#x1f4e6; 基…

Python網絡爬蟲(一) - 爬取靜態網頁

文章目錄一、靜態網頁概述1. 靜態網頁介紹2. 靜態網頁爬取技術Requests介紹二、安裝 Requests 庫三、發送請求并獲取響應1. 發送 GET 請求1.1 get() 方法介紹1.2 get() 方法簽名介紹1.3 get() 方法參數介紹1.4 示例&#xff1a;發送get請求2. 發送 POST 請求2.1 post() 方法介紹…

.NET/C# webapi框架下給swagger的api文檔中顯示注釋(可下載源碼)

bg&#xff1a;.NET/C#真的是越來越涼了。用的是.net9&#xff0c;創建完自帶一個天氣預報api拿來測試就行 1、在Controllers中弄多幾個&#xff0c;并寫上注釋 /// <summary> /// Post注釋 /// </summary> /// <returns></returns> [HttpPost] publ…

2508C++,檢測S模式

原文 可用Windows.System.Profile.WindowsIntegrityPolicy類檢測S模式. //C# using Windows.System.Profile; if (WindowsIntegrityPolicy.IsEnabled) {//系統在S模式if (WindowsIntegrityPolicy.CanDisable) {//系統在S模式,但可退出S模式suggestCompanion true;} else {//系…

Coding Exercising Day 9 of “Code Ideas Record“:StackQueue part 01

文章目錄1. Theoretical basisThe C standard library has multiple versions. To understand the implementation principles of stack and queue, we must know which STL version we are using.The stack and queue discussed next are data structures in *SGI STL*. Only …

Mysql數據倉庫備份腳本

Mysql數據倉庫備份腳本 #!/bin/bash# MySQL數據庫完整備份腳本 # 功能: 查詢所有數據庫 -> 分別導出 -> 壓縮打包# 配置區域 # MySQL連接信息 MYSQL_USER"root" MYSQL_PASSWORD"root" MYSQL_HOST"localhost" MYSQL_PORT"3306"…

基于嵌入式Linux RK3568 qt 車機系統開發

嵌入式系統、Qt/QML 與車機系統的發展趨勢分析 1. RK3568 開發板與 OpenGL ES 3 支持&#xff0c;為圖形應用打下堅實基礎 RK3568 是瑞芯微&#xff08;Rockchip&#xff09;推出的一款高性能、低功耗的64位處理器&#xff0c;廣泛用于工業控制、智能終端、嵌入式車載系統等領…

OceanBase架構設計

本文主要參考《大規模分布式存儲系統》 基本結構客戶端&#xff1a;發起請求。 RootServer&#xff1a;管理集群中的所有服務器&#xff0c;子表數據分布及副本管理&#xff0c;一般為一主一備&#xff0c;數據強同步。 UpdateServer&#xff1a;存儲增量變更數據&#xff0c;一…

[Element-plus]動態設置組件的語言

nuxt element-plus國際化vue element-plus國際化<template><div class"container"> <!-- <LangSwitcher />--><button click"toggle(zh-cn)">中文</button><button click"toggle(en)">English<…

【VS Code - Qt】如何基于Docker Linux配置Windows10下的VS Code,開發調試ARM 版的Qt應用程序?

如何在Windows 10上配置VS Code以開發和調試ARM版Qt應用程序。這需要設置一個基于Docker的Linux環境。首先&#xff0c;讓我們了解一下你的具體需求和環境&#xff1a;你有一個Qt項目&#xff08;看起來是醫學設備相關的設置程序&#xff09;目標平臺是ARM架構你希望在Windows …

linux常見故障系列文章 1-linux進程掛掉原因總結和排查思路

問題一 &#xff1a;運行時常見的進程崩潰原因 內存不足&#xff09; **0. 內存不足 內存不足&#xff08;OOM Killer&#xff09; 排查 OOM&#xff1a;free -h → dmesg → ps aux --sort-%mem 預防 OOM&#xff1a;限制關鍵進程內存、調整 OOM Killer 策略、增加 swap 長期優…

Spring Cloud Gateway 路由與過濾器實戰:轉發請求并添加自定義請求頭(最新版本)

前言 網關是什么?如果把你的系統比作一棟高端寫字樓,網關就是那位神通廣大的前臺小姐姐,笑容可掬地攔住不速之客,把貴賓引到豪華會議室,還會在你胸口貼上一枚醒目的“貴賓”標簽。它既懂禮數,又有原則,能過濾無效請求、轉發正確目標,還能在途中動點“小手腳”,比如加…

達夢數據庫慢SQL日志收集和分析

達夢數據庫慢SQL日志收集和分析 開啟SQL日志記錄 使用DMLOG工具分析SQLLOG DMLOG安裝配置 DMLOG分析日志 系統視圖V$LONG_EXEC_SQLS記錄了最近1000條執行時間超1s的sql。如果sql語句超長可能會被截斷,只能從sqllog里找完整的sql文本。 SELECT * FROM V$LONG_EXEC_SQLS ORDER …

一篇文章,帶你玩轉SparkCore

Spark Core 概念 前言 批處理&#xff08;有界數據&#xff09; ? 對靜態的、有限的數據集進行一次性處理&#xff0c;數據通常按固定周期&#xff08;如每小時、每天&#xff09;收集后統一計算。 特點&#xff1a; 高吞吐量&#xff0c;適合大規模數據。高延遲&#xff08;數…

VRRP技術

VRRP的概念及應用場景 VRRP&#xff08;虛擬路由冗余協議&#xff09;概念 VRRP&#xff08;Virtual Router Redundancy Protocol&#xff0c;虛擬路由冗余協議&#xff09;是一種路由容錯協議&#xff0c;用于在多個路由器之間提供網關冗余&#xff0c;確保當主路由器故障時&a…

表驅動法-靈活編程范式

表驅動法&#xff1a;從理論到實踐的靈活編程范式 一、為什么需要表驅動法&#xff1f; 在處理多分支邏輯&#xff08;如消息解析、命令分發&#xff09;時&#xff0c;傳統的 if-else 或 switch-case 存在明顯局限&#xff1a; 當分支數量龐大&#xff08;如成百上千條命令&am…

零基礎-動手學深度學習-10.2. 注意力匯聚:Nadaraya-Watson 核回歸

上節介紹了框架下的注意力機制的主要成分 圖10.1.3&#xff1a; 查詢&#xff08;自主提示&#xff09;和鍵&#xff08;非自主提示&#xff09;之間的交互形成了注意力匯聚&#xff1b; 注意力匯聚有選擇地聚合了值&#xff08;感官輸入&#xff09;以生成最終的輸出。 本節將…

nginx高新能web服務器

一、Nginx 概述和安裝 Nginx是免費的、開源的、高性能的HTTP和反向代理服務器、郵件代理服務器、以及TCP/UDP代理服務器。 Nginx 功能介紹 靜態的web資源服務器html&#xff0c;圖片&#xff0c;js&#xff0c;css&#xff0c;txt等靜態資源 http/https協議的反向代理 結合F…

Unity大型場景性能優化全攻略:PC與安卓端深度實踐 - 場景管理、渲染優化、資源調度 C#

本文將深入探討Unity在大型場景中的性能優化策略&#xff0c;涵蓋場景管理、渲染優化、資源調度等核心內容&#xff0c;并提供針對PC和安卓平臺的優化方案及實戰案例。 提示&#xff1a;內容純個人編寫&#xff0c;歡迎評論點贊。 文章目錄1. 大型場景性能挑戰1.1 性能瓶頸定位…

Java集合框架、Collection體系的單列集合

Java集合框架、Collection1. 認識Java集合框架及結構1.1 集合框架整體結構1.2 集合框架的核心作用2. Collection的兩大常用集合體系及各個系列集合的特點2.1 List系列集合&#xff08;有序、可重復&#xff09;2.2 Set系列集合&#xff08;無序、不可重復&#xff09;3. Collec…