Vue前端开发:单向数据绑定

Vue是一个典型的 MVVM 框架,那什么是 MVVM 框架?它与MVC 框架相比而言,有了哪些改变?单向数据绑定在这个框架中是如何体现的?带着这些问题,我们进入接下来的内容学习。

一、MVC 框架演变过程

严格来说,MVC框架是一种设计思想,早期的前端技术MVC 结构来源于后端语言,如Java、C#语言,这些语言具有完整和成熟的 MVC 框架体系;随着前端处理业务的逻辑越来越复杂,便借鉴后端语言这种MVC框架体系,形成前端技术特有的MVC 框架。

它的结构与后端语言的MVC 一样,由Model、View、Controller三部分组成,它们各司其职,Model简称 M,数据模型层,用于定义数据结构和存储数据源;View 简称 V,视图层,用于展示数据界面和响应页面交互;Controller 简称 C,控制层,用于监听数据变化并处理页面交互逻辑,它们三者的关系如下图3-4所示。

但随着业务逻辑越来越复杂,使得Controller 层代码量也越来越多,显得冗余而无序,维护起来非常困难,这时,需要从Controller 层抽离出数据和逻辑处理部分,由专门的一个对象进行管理和维护,而这个对象,就是ViewModel。

通过抽离出ViewModel对象,使用逻辑层的结构更加清晰,ViewModel负责处理视图和数据逻辑关系,并双向绑定View和Model,使得ViewModel 对象更象一座桥梁,用于衔接 View 和 Model 层两端,它们的关系如下图3-5所示。

在示意图3-5中,我们不难看出,原来 Controller 层需要处理所有的数据交互和业务逻辑,而改成 ViewModel 层后,则只需要处理针对 View 层的数据交互和业务逻辑,并且这种处理后的绑定是双向的,这样就使 View 和 Model 层的数据同步是完全自动的,用户无需手动操作DOM,只需关注业务逻辑。

二、单向绑定

在MVVM 框架下,Vue 的数据绑定都是双向的,但也能实现单向的数据绑定,所谓"单向"是针对"双向"而言的,也就是一个方向,即从数据源获取数据,到视图层中显示数据一个方向,在显示时并不会改变源数据,这种单向绑定的方式常用于绑定视图层中元素固定显示的内容、元素属性中,实例如下。

实例:数据单向绑定

1. 功能描述

在新建的组件中,添加一个div 和一个span元素,并使用单向数据绑定的方式,显示span元素的内容和控制元素的类别样式。

2. 实现代码

在项目components 文件夹的ch3子文件夹中,添加一个名为"OneWay"的.vue文件,在文件中加入如清单3-3所示代码。

代码清单3-3 OneWay.vue代码

typescript 复制代码
<template>
  <div>
    <div>
      姓名:<span v-bind:class="fs">{{ name }}</span>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      name: "李小明",
      fs: "fs",
    };
  },
};
</script>
<style scoped>
.fs {
  font-size: 26px;
  color: red;
}
div {
  margin: 10px;
  text-align: left;
}
</style>

3. 页面效果

保存代码后,页面在Chrome浏览器下执行的页面效果如图3-6所示。

4. 源码分析

在组件的实例化的配置对象中,先分别定义了"name"和"fs"对象属性,作为视图层绑定的数据源,然后在视图中通过 v-bind 指令绑定元素的class属性值,使用双大括号绑定元素显示的内容,这种绑定的方式就是单向的数据绑定,最后,当数据源发生变更后,视图层将自动同步变更后的数据。

相关推荐
Z兽兽几秒前
React@18+Vite项目配置env文件
前端·react.js·前端框架
SuniaWang7 分钟前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题六:《Vue3 前端开发实战:打造企业级 RAG 问答界面》
java·前端·人工智能·spring boot·后端·spring·架构
A_nanda1 小时前
根据AI提示排查vue前端项目
前端·javascript·vue.js
happymaker06261 小时前
web前端学习日记——DAY05(定位、浮动、视频音频播放)
前端·学习·音视频
~无忧花开~1 小时前
React状态管理完全指南
开发语言·前端·javascript·react.js·前端框架
LegendNoTitle2 小时前
计算机三级等级考试 网络技术 选择题考点详细梳理
服务器·前端·经验分享·笔记·php
@大迁世界2 小时前
1.什么是 ReactJS?
前端·javascript·react.js·前端框架·ecmascript
BJ-Giser3 小时前
Cesium 基于EZ-Tree的植被效果
前端·可视化·cesium
王码码20354 小时前
Flutter for OpenHarmony:Flutter 三方库 algoliasearch 毫秒级云端搜索体验(云原生搜索引擎)
android·前端·git·flutter·搜索引擎·云原生·harmonyos
发现一只大呆瓜4 小时前
深入浅出 AST:解密 Vite、Babel编译的底层“黑盒”
前端·面试·vite