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的形式展示数据,如果点击了 非空的字段 按钮,则会自动进行数据合并,为空的数据行以及数据列都会自动隐藏掉. 首先我们应该定位问题: ...
随机推荐
- 小熊派:用OpenHarmory3.0点亮LED
摘要:作为一个代表性的完整的开发,本案例可以分成3大部分:代码文件的规划,LED灯的驱动开发,点亮LED的业务开发. 本文分享自华为云社区<在小熊派Micro上用OpenHarmory3.0点亮 ...
- Datahub新版本0.9.1更新,列级别数据血缘功能发布!
大家好,我是独孤风. 近期Datahub进行了一次大的版本更新,从0.9版本以后Datahub也正式发布了列级别数据血缘的功能. 0.9.1版本又增加了,列的影响分析这个功能. 这样Datahub对于 ...
- Typora 一行显示多图
图片下显示说明  <center style="font-siz ...
- JPA 表名大小写问题
JPA 默认会将实体中的 TABLE_NAME 转成小写如 @Entity @Table(name = "EMPLOYEE") public class Employee { @I ...
- 遇事不决,量子力学;不懂配色,赛博朋克。推荐一个Python可视化库
遇事不决,量子力学;不懂配色,赛博朋克.推荐一个Python可视化库 12月10日,历经多次跳票后,波兰公司CD Projekt Red制作的<赛博朋克2077>终于正式发售,在Steam ...
- CDS 重命名失败
当创建CDS视图,名称命名错误,后将视图名称更改后,激活报错(例如,第一次创建的视图名称为ZVWM014,后改为ZVMM014) SQL view ZVWM014 cannot be renamed ...
- Windows10/11 wsl2 安装 ArchLinux 子系统
这篇文章针对的是在win11系统的wsl2下安装ArchLinux系统,网上很多中文教程都是使用LxRunOffline去做的,但是实际上该方法已经过时了,目前有更加先进的ArchWSL方式. 如果用 ...
- Codeforce Problem 711A - Bus to Udayland (正则表达式)
https://codeforces.com/problemset/problem/711/A 正则表达式基本应用 #include<bits/stdc++.h> using namesp ...
- 云工作流 CloudFlow 重磅发布,流程式开发让云上应用构建更简单
为了让企业和开发者更快速.便捷地进行云上开发,阿里云重磅发布云工作流(CloudFlow),它是一款强大的面向开发者的流程编排开发工具,全托管.高并发.高可用,帮助用户简化和自动化复杂的云上业务流程和 ...
- 如虎添翼!高德地图+Serverless 护航你的假日出行
作者 | 刘金龙(福辰) 高德团队 引言 "前方事故多发地段,请注意保持车距..." "您已疲劳驾驶,请注意休息..." "前方经过泰山旅游景 ...