認識Vue

認識Vue

文章目錄

  • 認識Vue
    • 一、vue是什么
    • 二、Vue核心特性
      • 數據驅動(MVVM)
      • 組件化
      • 指令系統
    • 三、Vue跟傳統開發的區別
      • 1. **開發模式:MVVM vs 模板驅動**
      • 2. **組件化開發**
      • 3. **狀態管理**
      • 4. **路由管理**
      • 5. **構建與工程化**
      • 6. **性能優化**
      • 7. **學習曲線**
      • 8. **適用場景**
      • 總結
    • 四、Vue和React對比
      • **1. 核心設計理念**
      • **2. 開發模式**
      • **3. 生態系統**
      • **4. 性能優化**
      • **5. 學習曲線**
      • **6. 典型應用場景**
      • **7. 代碼示例對比**
        • **計數器實現**
      • **總結與選擇建議**
        • **選擇建議**:
      • 相同點
      • 區別

一、vue是什么

Vue.js(/vju?/,或簡稱為Vue)是一個用于創建用戶界面的開源JavaScript框架,也是一個創建單頁應用的Web應用框架。2016年一項針對JavaScript的調查表明,Vue有著89%的開發者滿意度。在GitHub上,該項目平均每天能收獲95顆星,為Github有史以來星標數第3多的項目同時也是一款流行的JavaScript前端框架,旨在更好地組織與簡化Web開發。Vue所關注的核心是MVC模式中的視圖層,同時,它也能方便地獲取數據更新,并通過組件內部特定的方法實現視圖與模型的交互PS: Vue作者尤雨溪是在為AngularJS工作之后開發出了這一框架。他聲稱自己的思路是提取Angular中為自己所喜歡的部分,構建出一款相當輕量的框架最早發布于2014年2月

二、Vue核心特性

數據驅動(MVVM)

MVVM`表示的是 `Model-View-ViewModel
  • Model:模型層,負責處理業務邏輯以及和服務器端進行交互
  • View:視圖層:負責將數據模型轉化為UI展示出來,可以簡單的理解為HTML頁面
  • ViewModel:視圖模型層,用來連接Model和View,是Model和View之間的通信橋梁

組件化

1.什么是組件化一句話來說就是把圖形、非圖形的各種邏輯均抽象為一個統一的概念(組件)來實現開發的模式,在Vue中每一個.vue文件都可以視為一個組件2.組件化的優勢

  • 降低整個系統的耦合度,在保持接口不變的情況下,我們可以替換不同的組件快速完成需求,例如輸入框,可以替換為日歷、時間、范圍等組件作具體的實現
  • 調試方便,由于整個系統是通過組件組合起來的,在出現問題的時候,可以用排除法直接移除組件,或者根據報錯的組件快速定位問題,之所以能夠快速定位,是因為每個組件之間低耦合,職責單一,所以邏輯會比分析整個系統要簡單
  • 提高可維護性,由于每個組件的職責單一,并且組件在系統中是被復用的,所以對代碼進行優化可獲得系統的整體升級

指令系統

解釋:指令 (Directives) 是帶有 v- 前綴的特殊屬性作用:當表達式的值改變時,將其產生的連帶影響,響應式地作用于 DOM

  • 常用的指令
    • 條件渲染指令 v-if
    • 列表渲染指令v-for
    • 屬性綁定指令v-bind
    • 事件綁定指令v-on
    • 雙向數據綁定指令v-model

沒有指令之前我們是怎么做的?是不是先要獲取到DOM然后在…干點啥

三、Vue跟傳統開發的區別

1. 開發模式:MVVM vs 模板驅動

  • Vue
    采用 ??MVVM 模式??(Model-View-ViewModel),通過數據驅動視圖。
    • 數據綁定:雙向綁定(v-model)自動同步數據和視圖。
    • 響應式系統:數據變化自動觸發視圖更新,無需手動操作 DOM。
    • 虛擬 DOM:高效更新真實 DOM,減少性能損耗。
  • 傳統開發
    通常采用 ??MVC 模式??或直接操作 DOM:
    • 手動 DOM 操作:通過 document.getElementById 或 jQuery 直接修改 DOM。
    • 事件驅動:需手動綁定事件監聽器(如 onclick)。
    • 數據與視圖分離:數據更新后需手動刷新頁面或局部 DOM。

2. 組件化開發

  • Vue
    • 組件化架構:將 UI 拆分為獨立組件(.vue 文件),每個組件包含模板、邏輯、樣式。
    • 單文件組件:代碼結構清晰,支持作用域 CSS(scoped)。
    • 復用性:組件可跨項目復用,支持 Props 和 Events 通信。
  • 傳統開發
    • 代碼分散:HTML、CSS、JavaScript 分離,復用困難。
    • 全局污染:傳統 jQuery 插件易導致變量命名沖突。
    • 組件化弱:需依賴第三方庫(如 Bootstrap)實現組件化。

3. 狀態管理

  • Vue
    • Vuex/Pinia:集中式狀態管理,適合復雜應用。
    • 響應式數據:狀態變化自動同步到視圖。
    • 模塊化:支持拆分模塊管理大型狀態。
  • 傳統開發
    • 全局變量:依賴 window 對象或單例模式管理狀態。
    • 事件廣播:通過 jQuery.trigger 或自定義事件傳遞數據。
    • 維護困難:狀態分散,調試復雜。

4. 路由管理

  • Vue
    • Vue Router:聲明式路由,支持動態路由、嵌套路由、懶加載。
    • SPA 體驗:單頁面應用,頁面切換無刷新,用戶體驗流暢。
  • 傳統開發
    • 多頁面應用(MPA):每次跳轉需重新加載頁面。
    • 哈希路由:通過 window.location.hash 模擬路由,體驗較差。
    • 后端路由依賴:需后端配合返回不同 HTML 頁面。

5. 構建與工程化

  • Vue
    • 現代化工具鏈:支持 Vue CLI、Vite 等,提供模塊化、熱更新、代碼分割。
    • TypeScript 支持:原生兼容 TypeScript,強類型提升代碼質量。
    • 生態豐富:Vue DevTools、Vuetify 等工具和組件庫。
  • 傳統開發
    • 構建簡單:依賴 Webpack 基礎配置或無構建工具。
    • 模塊化有限:需手動實現 AMD/CommonJS 模塊化。
    • 調試困難:無虛擬 DOM,需手動跟蹤 DOM 變化。

6. 性能優化

  • Vue
    • 虛擬 DOM:批量更新 DOM,減少重繪和回流。
    • 異步組件:按需加載組件,優化首屏性能。
    • Tree Shaking:現代打包工具支持按需引入代碼。
  • 傳統開發
    • 頻繁 DOM 操作:直接操作真實 DOM,性能瓶頸明顯。
    • 無優化手段:依賴開發者手動優化(如緩存 DOM 查詢)。

7. 學習曲線

  • Vue
    • 結構化學習:官方文檔完善,提供 CLI 工具快速上手。
    • 漸進式框架:可逐步學習 Composition API、Vuex 等高級特性。
  • 傳統開發
    • 底層知識要求:需熟悉 DOM、事件循環、AJAX 等。
    • 兼容性問題:需處理瀏覽器兼容性(如 IE)。

8. 適用場景

  • Vue
    • 復雜單頁面應用(SPA)。
    • 需要快速迭代和維護的中大型項目。
    • 強調開發效率和代碼可維護性的團隊。
  • 傳統開發
    • 簡單靜態頁面或小型項目。
    • 需要直接操作 DOM 的特殊場景(如游戲、復雜動畫)。
    • 后端渲染模板(如 Django/Jinja2)。

總結

維度Vue傳統開發
架構MVVM + 組件化MVC/MVP + 分散代碼
數據綁定雙向綁定,響應式手動操作 DOM
性能虛擬 DOM 優化直接操作真實 DOM
工程化現代化工具鏈,TypeScript 支持依賴 Webpack 基礎配置
適用場景中大型 SPA,復雜交互簡單頁面,靜態內容

選擇建議

  • 若項目復雜度高、需長期維護,Vue 的組件化、狀態管理和工程化能力顯著提升效率。
  • 若為簡單頁面或需直接操作 DOM(如游戲),傳統開發可能更直接。

總結就是:

  • Vue所有的界面事件,都是只去操作數據的,Jquery操作DOM
  • Vue所有界面的變動,都是根據數據自動綁定出來的,Jquery操作DOM

四、Vue和React對比

Vue 和 React 是當前最流行的兩大前端框架,它們在設計理念、開發模式、生態系統等方面有顯著差異。以下是兩者的詳細對比:


1. 核心設計理念

維度VueReact
核心思想漸進式框架,強調“漸進式增強”專注于視圖層,倡導“組合式開發”
數據綁定雙向綁定(v-model單向數據流(通過 props 傳遞)
模板語法基于 HTML 的模板,類似原生 JSJSX(JavaScript + XML 混合語法)
響應式原理基于 Object.defineProperty基于 Proxy(React 18+)

2. 開發模式

維度VueReact
組件化單文件組件(.vue 文件)函數組件/類組件(JS/TS 文件)
狀態管理Vuex(官方狀態管理庫)Redux/MobX/Recoil(第三方庫)
路由管理Vue Router(官方路由庫)React Router(第三方庫)
構建工具Vue CLI / ViteCreate React App / Vite

3. 生態系統

維度VueReact
社區生態官方維護完善(如 Pinia、Vuetify)龐大的第三方庫(Redux、React Router、Next.js)
學習資源中文文檔友好,適合新手英文資源豐富,學習曲線較陡峭
企業應用國內企業使用較多(如阿里、騰訊)全球范圍內廣泛應用(如 Meta、Netflix)

4. 性能優化

維度VueReact
虛擬 DOM自動優化,差異算法高效手動優化(React.memouseMemo
服務端渲染Nuxt.js(官方 SSR 框架)Next.js(官方 SSR 框架)
Tree Shaking支持(Vue 3)支持(React 18+)

5. 學習曲線

維度VueReact
入門難度低(模板語法直觀)中高(需掌握 JSX、Hooks 等概念)
靈活性配置較少,約定優于配置高度靈活,需自行決策架構
TypeScript原生支持良好官方推薦,生態完善

6. 典型應用場景

場景VueReact
快速開發適合中小型項目,快速迭代適合復雜大型項目,需長期維護
企業級應用國內企業(如阿里云控制臺)全球企業(如 Meta、Instagram)
跨平臺開發Uni-app(Vue 生態)React Native(React 生態)

7. 代碼示例對比

計數器實現

Vue

<template><button @click="count++">{{ count }}</button>
</template><script setup>
let count = ref(0);
</script>

React

import { useState } from 'react';function Counter() {const [count, setCount] = useState(0);return <button onClick={() => setCount(count + 1)}>{count}</button>;
}

總結與選擇建議

框架優勢劣勢推薦場景
Vue學習成本低,文檔友好,適合快速開發生態相對較小,國際化不足中小型項目、國內企業、偏好模板語法
React社區龐大,生態完善,靈活性強學習曲線陡峭,需手動優化性能大型復雜項目、全球化應用、偏好函數式編程
選擇建議
  • 選 Vue:快速上手、追求開發效率、團隊偏好 HTML 模板語法。
  • 選 React:長期維護、需要高度靈活性、項目依賴豐富第三方庫(如 Next.js)。

相同點

  • 都有組件化思想
  • 都支持服務器端渲染
  • 都有Virtual DOM(虛擬dom)
  • 數據驅動視圖
  • 都有支持native的方案:VueweexReactReact native
  • 都有自己的構建工具:Vuevue-cliReactCreate React App

區別

  • 數據流向的不同。react從誕生開始就推崇單向數據流,而Vue是雙向數據流
  • 數據變化的實現原理不同。react使用的是不可變數據,而Vue使用的是可變的數據
  • 組件化通信的不同。react中我們通過使用回調函數來進行通信的,而Vue中子組件向父組件傳遞消息有兩種方式:事件和回調函數
  • diff算法不同。react主要使用diff隊列保存需要更新哪些DOM,得到patch樹,再統一操作批量更新DOM。Vue 使用雙向指針,邊對比,邊更新DOM

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

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

相關文章

iOS中使用AWS上傳zip文件到Minio上的oss平臺上

1. 集成AWS相關庫&#xff08;千萬不要用最新的版本&#xff0c;否則會出現風格化虛擬路徑&#xff0c;找不到主機名&#xff09; pod AWSS3, ~> 2.10.0 pod AWSCore, ~> 2.10.0 2. 編寫集成的相關代碼 - (void)uploadFileToMinIO {NSString *endPoint "http://…

usb2.0的硬件知識(一)

一、USB2.0的硬件知識 1.1 USB2.0速率 USB 2.0協議支持3種速率&#xff1a;低速(Low Speed&#xff0c;1.5Mbps)、全速(Full Speed, 12Mbps)、高速(High Speed, 480Mbps)&#xff1b;USB Hub、USB設備&#xff0c;也分為低速、全速、高速三種類型。 1.2 USB2.0硬件線序組成 U…

植物大戰僵尸雜交版v3.6最新版本(附下載鏈接)

B站游戲作者潛艇偉偉迷于4月19日更新了植物大戰僵尸雜交版3.6版本&#xff01;&#xff01;&#xff01;&#xff0c;有b站賬戶的記得要給作者三連關注一下呀&#xff01; 不多廢話下載鏈接放上&#xff1a; 夸克網盤鏈接&#xff1a;&#xff1a;https://pan.quark.cn/s/1af9b…

LeadeRobot具身智能應用標桿:無人機X柔韌具身智能,空中精準作業游刃有余

當前,具身智能已成為全球科技領域的前沿焦點,更受到國家戰略級重視,吸引科技產業巨頭搶灘布局。但同時,具身智能的商業化路徑、規模化應用場景、技術成本等難題也開始在資本界與產業圈引起廣泛討論。 目前,萬勛科技基于Pliabot 柔韌技術已推出多款具身智能柔韌機器人產品,在柔…

服務器上安裝maven

1.安裝 下載安裝包 https://maven.apache.org/download.cgi 解壓安裝包 cd /opt/software tar -xzvf apache-maven-3.9.9-bin.tar.gz 安裝目錄(/opt/maven/) mv /opt/software/apache-maven-3.9.9 /opt/ 3.權限設置 把/opt/software/apache-maven-3.9.9 文件夾重命名為ma…

AI 模型在前端應用中的典型使用場景和限制

典型使用場景 1. 智能表單處理 // 使用TensorFlow.js實現表單自動填充 import * as tf from tensorflow/tfjs; import { loadGraphModel } from tensorflow/tfjs-converter;async function initFormPredictor() {// 加載預訓練的表單理解模型const model await loadGraphMod…

10_C++入門案例習題: 結構體案例

案例描述 學校正在做畢設項目&#xff0c;每名老師帶領5個學生&#xff0c;總共有3名老師&#xff0c;需求如下 設計學生和老師的結構體&#xff0c;其中在老師的結構體中&#xff0c;有老師姓名和一個存放5名學生的數組作為成員 學生的成員有姓名、考試分數&#xff0c; 創建…

優化提示詞方面可以使用的數學方法理論:信息熵,概率論 ,最優化理論

優化提示詞方面可以使用的數學方法理論:信息熵,概率論 ,最優化理論 目錄 優化提示詞方面可以使用的數學方法理論:信息熵,概率論 ,最優化理論信息論信息熵明確問題主題提供具體細節限定回答方向規范語言表達概率論最優化理論信息論 原理:信息論中的熵可以衡量信息的不確定性。…

DB-GPT支持mcp協議配置說明

簡介 在 DB-GPT 中使用 MCP&#xff08;Model Context Protocol&#xff09;協議&#xff0c;主要通過配置 MCP 服務器和智能體協作實現外部工具集成與數據交互。 開啟mcp服務&#xff0c;這里以網頁抓取為例 npx -y supergateway --stdio "uvx mcp-server-fetch" …

2025.4.22學習日記 JavaScript的常用事件

在 JavaScript 里&#xff0c;事件是在文檔或者瀏覽器窗口中發生的特定交互瞬間&#xff0c;例如點擊按鈕、頁面加載完成等等。下面是一些常用的事件以及案例&#xff1a; 1. click 事件 當用戶點擊元素時觸發 const button document.createElement(button); button.textCo…

基于 SpringAI 整合 DeepSeek 模型實現 AI 聊天對話

目錄 1、Ollama 的下載配置 與 DeepSeek 的本地部署流程 1.1 下載安裝 Ollama 1.2 搜索模型并進行本地部署 2、基于 SpringAI 調用 Ollama 模型 2.1 基于OpenAI 的接口規范&#xff08;其他模型基本遵循&#xff09; 2.2 在 IDEA 中進行創建 SpringAI 項目并調用 DS 模型 3、基…

在線查看【免費】 dcm、drawio,dcm wps文件格式網站

可以免費在線查看 .docx/wps/Office/wmf/ psd/ psd/eml/epub/dwg, dxf/ txt/zip, rar/ jpg/mp3 m.gszh.xyz m.gszh.xyz 免費支持以下格式文件在線查看類型 支持 doc, docx, xls, xlsx, xlsm, ppt, pptx, csv, tsv, dotm, xlt, xltm, dot, dotx, xlam, xla, pages 等 Office 辦…

低光環境下雙目云臺攝像頭監控性能解析

雙目云臺攝像頭在低光環境下的監控效果主要取決于其硬件配置和軟件優化能力。以下是對雙目云臺攝像頭在低光環境下監控效果的詳細分析&#xff1a; 一、硬件配置對低光監控效果的影響 鏡頭與焦距 &#xff1a; 雙目云臺攝像頭通常配備超大廣角固定鏡頭和360視角的移動鏡頭&a…

繼承相關知識

概念 定義類時&#xff0c;代碼中有共性的成員&#xff0c;還有自己的屬性&#xff0c;使用繼承可以減少重復的代碼&#xff0c; 繼承的語法 class 子類&#xff1a;繼承方式 父類 繼承方式有&#xff1a;public&#xff0c;private&#xff0c;protected 公共繼承&#x…

【Python進階】數據可視化:Matplotlib從入門到實戰

Python數據可視化&#xff1a;Matplotlib完全指南 前言技術背景與價值當前技術痛點解決方案概述目標讀者說明 一、技術原理剖析核心概念圖解核心作用講解關鍵技術模塊說明技術選型對比 二、實戰演示環境配置要求核心代碼實現案例1&#xff1a;折線圖&#xff08;股票趨勢&#…

Java高效合并Excel報表實戰:GcExcel讓數據處理更簡單

前言&#xff1a;為什么需要自動化合并Excel&#xff1f; 在日常辦公場景中&#xff0c;Excel報表合并是數據分析的基礎操作。根據2023年企業辦公效率報告顯示&#xff1a; 財務人員平均每周花費6.2小時在Excel合并操作上人工合并的錯誤率高達15%90%的中大型企業已采用自動化…

Python 列表與元組深度解析:從基礎概念到函數實現全攻略

在 Python 編程的廣袤天地中&#xff0c;列表&#xff08;List&#xff09;和元組&#xff08;Tuple&#xff09;是兩種不可或缺的數據結構。它們如同程序員手中的瑞士軍刀&#xff0c;能高效地處理各類數據。從簡單的數值存儲到復雜的數據組織&#xff0c;列表和元組都發揮著關…

Java中的方法重寫(Override)與方法重載(Overload)詳解

一、基本概念對比 特性方法重寫(Override)方法重載(Overload)定義子類重新定義父類中已有的方法同一個類中多個同名方法&#xff0c;參數不同作用范圍繼承關系中&#xff08;父子類之間&#xff09;同一個類內方法簽名必須相同&#xff08;方法名參數列表&#xff09;必須不同…

發布一個npm包,更新包,刪除包

發布一個npm包&#xff0c;更新包&#xff0c;刪除包 如何將自己的項目 發布為一個 npm 包&#xff0c;并掌握 更新 和 刪除 的操作流程。 &#x1f680; 一、發布一個 npm 包的完整流程 ? 1. 注冊并登錄 npm 賬號 如果還沒有賬號&#xff0c;先注冊&#xff1a; 官網注冊&…

Linux系統之----進程的概念

1.進程 1.1基本概念 課本概念 &#xff1a;進程是程序的一個執行實例&#xff0c;是正在執行的程序。當程序被執行時&#xff0c;系統會為其創建一個進程&#xff0c;包含程序代碼、數據以及運行時所需的資源。 內核觀點 &#xff1a;進程是擔當分配系統資源&#xff08;CPU…