vue3逻辑分离和页面快速展示数据
逻辑分层
我们在使用vue3开发项目的时候,
如何进行【区域分层】呢????
举一个简单的小粒子
一个区域有【查询逻辑、修改后的保存逻辑、新增逻辑、删除逻辑】
这个页面可能还有其他的区域。A区域、B区域,C区域...【有很多逻辑】
这个时候我们可以将一个区域的逻辑分离出去
将各个区域业务分开
export default {
setup () {
let {queryDo,addDo,delDO,EditDo}=allFun();
queryDo();//查询接口就会被调用了
}
}
// 这个是页面A区域的逻辑
function allFun(){
console.log('我是 allFun 函数内的直接语句我将会被执行' )
function queryDo(){
console.log('我是查询接口,调用后端的数据')
}
function addDo(){
console.log('我是新增')
}
function delDO(){
console.log('我是删除')
}
function EditDo(){
console.log('我是编辑接口')
}
return {queryDo,addDo,delDO,EditDo}
}
</script>
这样做的优势
当我们看见 allFun函数的时候。
我们就可以知道这个区域的所有逻辑
包含crud。方便后期的维护
这样的场景应该如何处理
在我们写业务逻辑的时候,
我们最后发现 A和B两个区域都需要调用同一个接口
但是由于A区域已经写好了这个被调用的接口
这个时候我就想直接去调用A区域中的接口
<script>
export default {
setup () {
// 这里使用的是结构,A区域
let {queryDo,addDo,delDO,EditDo}=aAreaAllFun();
// B区域
let {querHander}=bAreaAllFun();
return {queryDo,addDo,delDO,EditDo,querHander}
}
}
// 这个是A区域页面某个区域的逻辑
function aAreaAllFun(){
function queryDo(){
console.log('我是A区域的查询接口')
}
function addDo(){
console.log('我是新增')
}
function delDO(){
console.log('我是删除')
}
function EditDo(){
console.log('我是编辑接口')
}
return {queryDo,addDo,delDO,EditDo}
}
// 这是B区域的业务逻辑
function bAreaAllFun(){
// 直接去调用A区域的查询接口
aAreaAllFun().queryDo();
function querHander(){
console.log("B区域的查询接口")
}
return {querHander}
}
</script>
虽然使用
aAreaAllFun().queryDo();
直接去调用A区域的查询接口
解决了问题
但是这样产生了一个新的问题是
查询接口被包含在了A区域;
最后的做法是查询接口应该单独抽离出去,
这样也方便后期我们的维护
优化
<script>
export default {
setup () {
// 这个是A区域页面某个区域的逻辑
let {addDo,delDO,EditDo}=aAreaAllFun()
// 这个是B区域页面某个区域的逻辑
let {querHander}=bAreaAllFun();
return {queryDo,addDo,delDO,EditDo,querHander}
}
}
// 公共的查询接口 很多区域可能会使用
function queryDo(){
console.log('我是区域的查询接口,我被抽离出去了')
}
// 这个是A区域页面某个区域的逻辑
function aAreaAllFun(){
function addDo(){
console.log('我是新增')
}
function delDO(){
console.log('我是删除')
}
function EditDo(){
console.log('我是编辑接口')
}
return {addDo,delDO,EditDo}
}
// 这是B区域的业务逻辑
function bAreaAllFun(){
// 直接去调用公共的查询接口
queryDo();
function querHander(){
console.log("B区域的查询接口")
}
return {querHander}
}
</script>
reactive 不一定非要写在setup函数中
很多的小伙伴以为reactive一定要写在setup函数中
其实不是这样的哈
它可以写在你需要的地方
比如下面的aAreaAllFun函数中可以使用reactive
<template>
<div>
<h2>姓名: {{ areaData.info.name}}</h2>
<h2>年龄: {{ areaData.info.age}}</h2>
<h2>性别: {{ areaData.info.sex}}</h2>
</div>
</template>
<script>
import { reactive } from '@vue/reactivity';
export default {
setup () {
let {addDo,areaData}=aAreaAllFun();
return {addDo,areaData}
}
}
// 这个是A区域页面某个区域的逻辑
function aAreaAllFun(){
let areaData=reactive({
info:{
name:'张三',
age:20,
sex:'男'
}
})
function addDo(){
console.log('我是新增')
}
return {addDo,areaData}
}
</script>

如何在页面上直接显示值
在上面这个例子中
我们想要实现姓名、年龄、和性别
我们需要 areaData.info.xxx
这样做太麻烦了,我们需要优化一下
<template>
<div>
<h2>姓名: {{ name}}</h2>
<h2>年龄: {{ age}}</h2>
<h2>性别: {{ sex}}</h2>
</div>
<button @click="ChangeCont">改变值</button>
</template>
<script>
import { reactive,toRefs } from 'vue';
export default {
setup () {
let {name,age,sex,ChangeCont }=aAreaAllFun();
return {name,age,sex,ChangeCont}
}
}
// 这个是A区域页面某个区域的逻辑
function aAreaAllFun(){
let areaData=reactive({
info:{
name:'张三',
age:20,
sex:'男'
}
})
function ChangeCont(){
// 这样更改值,视图上是不会响应的哈【错误的】
// areaData.info={
// name:'李四',
// age:21,
// sex:'男'
// }
// 这样是可以的正确跟新视图的 【ok的】
areaData.info.name='123'
areaData.info.age=12
areaData.info.sex='男'
}
// toRefs 可以把一个响应式对象转换为普通的对象。
// 该普通对象的每一个值都是ref。
// 由于变成了ref,所以我们需要使用value。
return {ChangeCont,...toRefs(areaData.info)}
}
</script>

vue3逻辑分离和页面快速展示数据的更多相关文章
- WPF MVVM UI分离之《交互与数据分离》 基础才是重中之重~delegate里的Invoke和BeginInvoke 将不确定变为确定系列~目录(“机器最能证明一切”) 爱上MVC3系列~全局异常处理与异常日志 基础才是重中之重~lock和monitor的区别 将不确定变成确定~我想监视我的对象,如果是某个值,就叫另一些方法自动运行 将不确定变成确定~LINQ DBML模型可以对
WPF MVVM UI分离之<交互与数据分离> 在我们使用WPF过程中,不可避免并且超级喜欢使用MVVM框架. 那么,使用MVVM的出发点是视觉与业务逻辑分离,即UI与数据分离 诸如下 ...
- WPF MVVM UI分离之《交互与数据分离》
在我们使用WPF过程中,不可避免并且超级喜欢使用MVVM框架. 那么,使用MVVM的出发点是视觉与业务逻辑分离,即UI与数据分离 诸如下面的问题: 删除操作,假如需要先执行一部分数据的处理,然后删除界 ...
- SSM(SpringMVC+Spring+MyBatis)三大框架使用Maven快速搭建整合(实现数据库数据到页面进行展示)
本文介绍使用SpringMVC+Spring+MyBatis三大框架使用Maven快速搭建一个demo,实现数据从数据库中查询返回到页面进行展示的过程. 技术选型:SpringMVC+Spring+M ...
- Javascript模板及其中的数据逻辑分离思想(MVC)
#Javascript模板及其中的数据逻辑分离思想 ##需求描述 项目数据库的题目表描述了70-120道题目,并且是会变化的,要根据数据库中的数据描述,比如,选择还是填空题,是不是重点题,题目总分是多 ...
- 一种数据与逻辑分离的Python单元测试工具
一种数据与逻辑分离的Python单元测试工具 几个概念 TestCase TestCase是一个完整的测试单元,最小的测试执行实体,就是我们常说的测试用例. TestSuite 以某种特性将测试用例组 ...
- 大型运输行业实战_day03_2_使用ajax将请求页面与请求数据分离
1.引入jquery 1.添加jquery包 2.在要使用jquery的页面中引入jquery 引入jquery后必须检查是否引入正确,这里值得注意的是 springMVC默认情况先会拦截 js文件, ...
- tkinter的GUI设计:界面与逻辑分离(三)-- 多页面
知识点: 使用 tkinter.Frame.tkraise() 函数去提升当前 tkinter.Frame 的 z 轴顺序,使得多个 tkinter.Frame 的可见性得以切换 本文基于:win7 ...
- H5 页面如何展示大量的表格数据
H5 页面如何展示大量的表格数据 列数过多 图表化 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
- 转:SQL SERVER数据库中实现快速的数据提取和数据分页
探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页.以下代码说明了我们实例中数据库的“红头文件”一表的部分数据结构: CREATE TABLE [dbo]. ...
- Saiku Table展示数据合并bug修复(二十五)
Saiku Table展示数据合并bug修复 Saiku以table的形式展示数据,如果点击了 非空的字段 按钮,则会自动进行数据合并,为空的数据行以及数据列都会自动隐藏掉. 首先我们应该定位问题: ...
随机推荐
- 如何对APP进行安全加固
如何对APP进行安全加固 引言 如今,移动应用市场蓬勃发展,APP数量呈现爆炸性增长.随着5G技术的广泛应用,APP的增长趋势持续增强.然而,由于APP的泛滥,网络攻击者的目标也在逐渐转移,数亿的 ...
- Vue混淆与还原
引言 Vue是一种流行的JavaScript框架,用于构建用户界面.它简单易用且功能强大,备受开发者喜爱.然而,在传输和存储过程中,我们需要保护Vue代码的安全性.混淆是一种有效的保护措施,可以加 ...
- 渗透测试 vs 漏洞扫描:差异与不同
渗透测试和漏洞扫描常常被混淆,这两者都通过探索系统来寻找 IT 基础架构中的弱点及易受攻击的地方.阅读本文,带你了解两者之间的差异与不同. 手动 vs 自动 渗透测试是一种手动安全评估方式,网络安全人 ...
- 火山引擎ByteHouse:如何用OLAP引擎提升数字营销效果?
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 随着市场竞争的加剧,企业对数字营销投入的效果监测和优化需求日益增强,营销实时监控也成为企业提升运营效率的重要手 ...
- Linux day2:文件和文件夹相关命令 文件内容编辑命令 Linux常用目录 Linux重要文件
目录 问题说明 前期必备知识 系统运行命令 shutdown -c 快捷方式命令 ctrl+e 目录结构相关命令 mkdir -p 文件和文件夹相关命令 创建文件 touch 查看文件和目录 ls - ...
- Multisim 14 免费破解版,下载安装教程,2023年亲测可用,永久激活
Multisim是一款功能强大.操作流畅的专业仿真工具,适用于板级模拟/数字电路板设计工作,提供电路原理图图形输入.电路硬件描述语言输入,具有丰富的仿真分析能力.拥有专业版和教学版,深受国内外教师.科 ...
- go build 跟 go run 的区别
go build 和 go run 是 Go 语言中两个常用的命令,它们的主要区别在于编译和执行的过程. 1.go run go run 命令用于编译并运行 Go 程序.它将源代码直接编译成可执行文件 ...
- Windows 10 修改环境变量不重启生效的解决方案
# 表示 Win 键 #R 进入 cmd(不要使用 Listary 的 cmd 方式进入,设置不会生效) 键入 set PATH=C: 关闭窗口 同样方式打开 cmd 键入 echo %PATH%,会 ...
- 将Sublime Text打造为轻量级的C++ IDE
本文较为详细地介绍了在Windows系统下,如何配置Sublime Text的C++编译运行环境.目前实现了了可以在Sublime Text按下快捷键后,调出CMD或者终端来运行C/C++程序,从而解 ...
- java进阶(9)--数组
一.基本概念: 1.数字为引用数据类型 2.数组实际上是一个容器,可以同时容纳多个元素 3.数组可存储基本数据类型,也可以存储引用数据类型的数据 4.数组一旦创建.长度不可变.且数组中元素类型必须统一 ...