初识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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…