逻辑分层

我们在使用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. 解放重复劳动丨华为云IoT API Explorer对接小程序实现系统化应用

    摘要:<物联网平台接口调用实验>详细讲解了API Explorer的应用,根据提供的接口,结合真实案例,制作了一个小程序,真正的把它应用起来,解放重复劳动,小程序是一个很好的平台,作为应用 ...

  2. HOCON:nginx配置文件后缀conf是什么格式类型文件夹?intellij如何编辑

    nginx的配置为*.conf ,这个conf是么子文件?之前确实不清楚. HOCON 简介HOCON(Human-Optimized Config Object Notation)是一个易于使用的配 ...

  3. 下一代 SCA:流水线成分分析

    软件成分分析(SCA)是检测开源库等依赖项中漏洞的重要工具.随着现代应用程序的组成从以自定义代码为主的转变为高达70-90%的开源,管理来自第三方的依赖项的漏洞比以往任何时候的重要性都高出许多.然而现 ...

  4. 使用 Diffusers 通过 DreamBooth 来训练 Stable Diffusion.md

    邀请参与我们的 DreamBooth 微调编程马拉松活动! DreamBooth 是一种使用专门的微调形式来训练 Stable Diffusion 的新概念技术.一些人用他仅仅使用很少的他们的照片训练 ...

  5. Mac OS 安装mysqlcliet 失败问题解决

    简单记录 Mac OS pip 安装mysqlclient报错处理过程 系统: python: Python 3.8.2 虚拟环境 直接安装 mysqlclient 会报错 Using cached ...

  6. pikachu靶场

    pikachu靶场 基于表单暴力破解 看一下界面,有两个输入框,使用暴力破解使用Cluster bomb 前提须知是 Sinper 对$$符号标记的数据进行逐个替换 Battering ram 对$$ ...

  7. Windows Tools | How To Install VS Microsoft C++ Build Tools on Windows

    This can be used for installing anything that requires C++ compiler on Windows. Installation steps D ...

  8. 【OpenSSL】​Visual Studio 2019配置OpenSSL 3.0开发环境

    OpenSSL从1.0.2版本升级为3.0.3版本后,需要对代码进行重构.如果不可用的代码太多,需要重新开一个项目.重新配置开发环境. [第一步]登录http://slproweb.com/,下载Wi ...

  9. [kuangbin带你飞]专题十二 基础DP1 题解+总结

    kuangbin带你飞:点击进入新世界 文章目录 目录 文章目录 1.Max Sum Plus Plus 2.Ignatius and the Princess IV 3.Monkey and Ban ...

  10. Codeforce 1288C. Two Arrays(DP组合数学,n个数选择m个数,单调不递减个数,排列组合打表N*N)

    https://codeforces.com/problemset/problem/1288/C Examples input 2 2 output 5 input 10 1 output 55 in ...