逻辑分层

我们在使用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逻辑分离和页面快速展示数据的更多相关文章

  1. WPF MVVM UI分离之《交互与数据分离》 基础才是重中之重~delegate里的Invoke和BeginInvoke 将不确定变为确定系列~目录(“机器最能证明一切”) 爱上MVC3系列~全局异常处理与异常日志 基础才是重中之重~lock和monitor的区别 将不确定变成确定~我想监视我的对象,如果是某个值,就叫另一些方法自动运行 将不确定变成确定~LINQ DBML模型可以对

    WPF MVVM UI分离之<交互与数据分离>   在我们使用WPF过程中,不可避免并且超级喜欢使用MVVM框架. 那么,使用MVVM的出发点是视觉与业务逻辑分离,即UI与数据分离 诸如下 ...

  2. WPF MVVM UI分离之《交互与数据分离》

    在我们使用WPF过程中,不可避免并且超级喜欢使用MVVM框架. 那么,使用MVVM的出发点是视觉与业务逻辑分离,即UI与数据分离 诸如下面的问题: 删除操作,假如需要先执行一部分数据的处理,然后删除界 ...

  3. SSM(SpringMVC+Spring+MyBatis)三大框架使用Maven快速搭建整合(实现数据库数据到页面进行展示)

    本文介绍使用SpringMVC+Spring+MyBatis三大框架使用Maven快速搭建一个demo,实现数据从数据库中查询返回到页面进行展示的过程. 技术选型:SpringMVC+Spring+M ...

  4. Javascript模板及其中的数据逻辑分离思想(MVC)

    #Javascript模板及其中的数据逻辑分离思想 ##需求描述 项目数据库的题目表描述了70-120道题目,并且是会变化的,要根据数据库中的数据描述,比如,选择还是填空题,是不是重点题,题目总分是多 ...

  5. 一种数据与逻辑分离的Python单元测试工具

    一种数据与逻辑分离的Python单元测试工具 几个概念 TestCase TestCase是一个完整的测试单元,最小的测试执行实体,就是我们常说的测试用例. TestSuite 以某种特性将测试用例组 ...

  6. 大型运输行业实战_day03_2_使用ajax将请求页面与请求数据分离

    1.引入jquery 1.添加jquery包 2.在要使用jquery的页面中引入jquery 引入jquery后必须检查是否引入正确,这里值得注意的是 springMVC默认情况先会拦截 js文件, ...

  7. tkinter的GUI设计:界面与逻辑分离(三)-- 多页面

    知识点: 使用 tkinter.Frame.tkraise() 函数去提升当前 tkinter.Frame 的 z 轴顺序,使得多个 tkinter.Frame 的可见性得以切换 本文基于:win7 ...

  8. H5 页面如何展示大量的表格数据

    H5 页面如何展示大量的表格数据 列数过多 图表化 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!

  9. 转:SQL SERVER数据库中实现快速的数据提取和数据分页

    探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页.以下代码说明了我们实例中数据库的“红头文件”一表的部分数据结构: CREATE TABLE [dbo]. ...

  10. Saiku Table展示数据合并bug修复(二十五)

    Saiku Table展示数据合并bug修复 Saiku以table的形式展示数据,如果点击了 非空的字段 按钮,则会自动进行数据合并,为空的数据行以及数据列都会自动隐藏掉. 首先我们应该定位问题: ...

随机推荐

  1. 火山引擎 DataTester:“在字节,A/B 实验是一种信仰”

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 进入数字经济时代,要用数据驱动业务增长已经成为各个行业的共识,但很多企业还没能真正掌握这项能力.如何最大限度转化数据价值, ...

  2. 火山引擎 VeDI 零售行业解决方案 聚焦精准营销场景提升品牌转化

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 你知道,为了能让你买到合适的商品,品牌商们有多努力吗? 精准营销并不是一个新词,但近年来,随着营销渠道/平台的更加 ...

  3. PPT 动态迷幻图谱

    迷幻动画的本质拆解 插件: islide + 软件: PowerPoint https://www.islide.cc/ 圆型 画一个正圆,无填充色,边框 2.25磅 左边红色.右边黄色.中间两个透明 ...

  4. & 0xFF 作用 取低8位

    & 0xFF 取低8位 @Test void byteTest() { byte hex1 = (byte) 127; byte hex2 = (byte) 383; byte hex3 = ...

  5. Netty ChannelFuture 监听三种方法

    以下是伪代码 方法一 前后代码省略 //绑定服务器,该实例将提供有关IO操作的结果或状态的信息 ChannelFuture channelFuture = bootstrap.bind(); this ...

  6. 用 Python 开发了一个 PDF 抽取Excel表格的小工具

    大家好哇 从 PDF 里 copy 表格时,粘贴出来后格式都是错乱的.这麻烦事交给 Python 再合适不过里,我开发了一个从 PDF 抽取表格另存为 Excel 文件的应用,我把它部到 huggin ...

  7. BBS项目(五):xss攻击 上传图片问题 文章编辑、删除功能 用户头像修改 扩展部分

    目录 添加文章功能完善 富文本编辑器上传图片问题 文章编辑功能 文章删除功能 用户头像修改 扩展部分 补充 项目总结 添加文章功能完善 下载第三方模块: pip install bs4 pip ins ...

  8. 解读IDC《中国视频云市场跟踪》最新报告,视频云将趋向何方?

    国际权威咨询公司IDC发布<中国视频云市场跟踪(2021 H2)>报告,阿里云连续四年稳居中国视频云整体市场份额第一,整体市场份额占比达26.9%. 时至2021,中国视频云的数字背后 近 ...

  9. Windows 10 修改环境变量不重启生效的解决方案

    # 表示 Win 键 #R 进入 cmd(不要使用 Listary 的 cmd 方式进入,设置不会生效) 键入 set PATH=C: 关闭窗口 同样方式打开 cmd 键入 echo %PATH%,会 ...

  10. 类加载机制-深入理解jvm

    一.什么是类的加载: 如上图,java文件通过编译器变成了.class文件,接下来类加载器又将这些.class文件加载到JVM中.其中类装载器的作用其实就是类的加载. 二.原理 (类的加载过程及其最终 ...