认识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.mzph.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…