前端开发信息套路:信息是如何传值

news2024/9/22 9:52:05

文章目录

  • 前言
  • 信息
    • 组件化的难点:组件信息流通
    • 信息流通
      • 信息流通分类
      • 通知
      • 直接调用
      • 回调函数
      • 发布订阅
      • 全局缓存
      • 使用建议
  • 总结

前言

作为一个写了好几个月的Uniapp小程序的打工狗,我总结了一下在前端中信息是如何传递的,得出了一个比较标准化的信息流通过程。(主要是Uniapp写起来比较恶心,写多了出Bug都不知道Bug在哪里)

信息

什么是信息,就是用来交互的数据,我把前端分为视图层和业务层。

  • 视图层:将数据转换为界面
  • 业务层:给数据

而又因为我们的界面常常是多级层次,所以界面是有包含关系的,即父子组件,兄弟组件。

在这里插入图片描述

组件化的难点:组件信息流通

现代前端页面都是组件化开发,组件化开发的特点就是将复杂页面划分为多个功能模块和可以高度复用的通用组件。将简单问题复杂化。但是有好也有坏。

组件化的缺点就是因为将视图层的逻辑简单化了,业务层也被打散了。所以信息的流通成为了难点。即如何保证组件拿到的数据是所需要的数据。

这里就引出了我们信息流通的内容

信息流通

信息流通分类

流通方式\主动被动主动被动
直接通知(触发器),直接调用回调函数
间接发布订阅全局缓存

Tips:为了让数据的流通可以操控,这里父子组件的流通是,父通知,直接调用子组件。子回调函数通知父

通知

监视一个数据被赋值的时候,触发函数。

WPF可以通过get,set来设置
Vue使用watch来监视

直接调用

直接拿到子组件对象调用其中方法。

WPF使用X:Name
Vue使用ref来设置别名

回调函数

WPF直接使用依赖注入,bind{一个Action委托}
Vue使用emit回调

发布订阅

先订阅,再发布。才能订阅到消息
先发布,再订阅。就错过了之前的消息。

WPF可以使用prism,设置一个全局的事件聚合器
uniapp可以使用uni.$emit和uni.$on来触发

发布订阅一般是topic+pyload的形式。即订阅头+负载。但是我个人建议使用:topic+{key,value}的形式。这样三层结构,用了面向对象的思想。可以按照topic进行分类。更容易将消息进行管理

全局缓存

这里的全局缓存可以是网页缓存,static对象,数据库数据,后端信息。即可以直接拿取的数据。

使用建议

信息具有边界性和可达性。

  • 边界性保证信息超出边界就消失,防止误触。

  • 可达性保证信息传达到各个角落,防止信息丢失

  • 对于父子具有包含关系的信息。采用直接信息传递,即通知(触发器),直接调用,回调函数。

    • 因为我们希望这些信息不保存,用完即丢弃,限制其传播范围,保证信息的边界性。因为是临近关系,通过父组件直接控制子组件保证信息的可达性。
  • 对于跨层级,比如祖孙。或者同级的兄弟。或者不可测层级的消息传递时。使用间接信息传递。

    • 因为比起信息是否能限制的传递来避免误触发,我们更希望保证信息的可达性。通过严格的信息调用控制来保证信息的边界性。

总结

通过几个月的uniapp实战项目。我掌握了前端信息交互的逻辑。以后写别的界面程序。例如桌面端,网页端,或者游戏端。我感觉我都很清楚我要干什么。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/799361.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

thinkphp6 验证码验证结果失败,可能是session开启位置错了!!!

搞了一下下午&#xff0c;始终提示验证码不正确 然后百度得到的结果都是&#xff1a;开启session&#xff0c;但是我开启了就是管用 <?php // 全局中间件定义文件 return [// 全局请求缓存// \think\middleware\CheckRequestCache::class,// 多语言加载// \think\middle…

【人人都看懂的漫画算法】边打扑克边学插入排序算法,彻底搞懂时间复杂度

博主&#xff1a;爱码叔 个人博客站点&#xff1a; icodebook.com 公众号&#xff1a;漫话软件设计 微博&#xff1a;程序员涛哥 专注于软件设计与架构、技术管理。擅长用通俗易懂的语言讲解技术。对技术管理工作有自己的一定见解。文章会第一时间首发在个站上&#xff0c;欢迎…

如何评判算法好坏?复杂度深度解析

如何评判算法好坏&#xff1f;复杂度深度解析 1. 算法效率1.1 如何衡量一个算法好坏1.2 算法的复杂度 2 时间复杂度2.1 时间复杂度的概念2.1.1 实例 2.2 大O的渐进表示法2.3 常见时间复杂度计算举例 3 空间复杂度4 常见复杂度对比5 结尾 1. 算法效率 1.1 如何衡量一个算法好坏 …

Android Studio import的代码报红提示找不到,但正常编译运行

Android Studio import的代码报红提示找不到&#xff0c;但正常编译运行 解决方案&#xff1a; &#xff08;1&#xff09;关闭退出Android Studio。 &#xff08;2&#xff09;删掉当前工程项目目录下的.idea和.gradle文件夹。 &#xff08;3&#xff09;Invalidate Caches…

uni-app之微信小程序实现‘下载+保存至本地+预览’功能

目录 一、H5如何实现下载功能 二、微信小程序实现下载资源功能方面与H5有很大的不同 三、 微信小程序实现文件&#xff08;doc,pdf等格式&#xff0c;非图片&#xff09;下载&#xff08;下载->保存->预览&#xff09;功能 四、图片预览、保存、转发、收藏&#xff1…

MMdetection框架速成系列 第07部分:数据增强的N种方法

MMdetection框架实现数据增强的N种方法 1 为什么要进行数据增强2 数据增强的常见误区3 常见的六种数据增强方式3.1 随机翻转&#xff08;RandomFlip&#xff09;3.2 随机裁剪&#xff08;RandomCrop&#xff09;3.3 随机比例裁剪并缩放&#xff08;RandomResizedCrop&#xff0…

F12开发者工具的简单应用

目录 elements 元素 1、元素的定位和修改 2、UI自动化应用 console 控制台 sources 源代码 network 网络 1、定位问题 2、接口测试 3、弱网测试 performance 性能 memory 存储 application 应用 recorder 记录器 界面展示如下&#xff08;设置中可以切换中英文&am…

云共享平台:助力企业数字化转型的利器

随着互联网技术的不断发展&#xff0c;云共享平台正在成为企业发展必不可少的工具之一。那么&#xff0c;云共享平台到底为企业带来了哪些助力呢&#xff1f; 1. 提高效率 云共享平台可以极大地提高企业的工作效率。传统的企业数据管理通常都需要人工操作&#xff0c;而且往往…

redis数据库与主从复制

目录 一 基本操作 二 执行流程 三 reids持久化 四 rdb和aof持久化的过程 五 为什么会有内存碎片 六 redis组从复制 一 基本操作 set :存放数据 例如 set 键值 内容 set k kokoko k就是键值 kokoko就是内容 get:获取数据 例如 get k 就会出来 k对应的数据 keys 查询键…

【大数据之Flume】三、Flume进阶之Flume Agent 内部原理和拓扑结构

1 Flume事务 2 Flume Agent 内部原理 重要组件&#xff1a; 1、ChannelSelector&#xff08;选择器&#xff09;   ChannelSelector 的作用就是选出 Event 将要被发往哪个 Channel。   &#xff08;1&#xff09;Replicating ChannelSelector&#xff08;复制或副本&#x…

Python实现HBA混合蝙蝠智能算法优化LightGBM回归模型(LGBMRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蝙蝠算法是2010年杨教授基于群体智能提出的启发式搜索算法&#xff0c;是一种搜索全局最优解的有效方法…

「前缀和以及差分数组」

文章目录 1 前缀和数组1.1 题解1.2 Code1.3 结果 2 二维矩阵的前缀和数组2.1 题解2.2 Code2.3 结果 3 差分数组 1 前缀和数组 适用于快速频繁的计算一个索引区间内的元素之和&#xff0c;核心思想就是使用一个前缀和数组&#xff0c;然后使用前缀和数组的两个元素之差&#xf…

Postman(一)--接口测试知识准备

1.0 前言 ​ 应用程序编程接口&#xff08;Application Programming Interface, API&#xff09;是这些年来最流行的技术之一&#xff0c;强大的Web应用程序和领先的移动应用程序都离不开后端强大的API。API技术的应用给系统开发带来了便利&#xff0c;但也对测试人员提出了更…

【AGI】Copilot AI编程辅助工具安装教程

GitHub和OpenAI联合为程序员们送上了编程神器——GitHub Copilot。 但是&#xff0c;Copilot目前不提供公开使用&#xff0c;需要注册账号通过审核&#xff0c;我也提交了申请&#xff1a;这里第一期记录下&#xff0c;开启教程&#xff0c;欢迎大佬们来讨论交流。

Jmeter性能测试:高并发分布式性能测试

一、为什么要进行分布式性能测试 当进行高并发性能测试的时候&#xff0c;受限于Jmeter工具本身和电脑硬件的原因&#xff0c;无法满足我们对大并发性能测试的要求。 基于这种场景下&#xff0c;我们就需要采用分布式的方式来实现我们高并发的性能测试要求。 二、分布式性能测…

微信云开发管理工具入门教程

前言 微信云开发管理工具是是什么&#xff1f; 提供了一套云开发的后台管理工具&#xff0c;并且提供低代码开发工具&#xff0c;开发者可基于低代码工具&#xff0c;连接到业务数据库&#xff0c;拖拽组件生成前端UI&#xff0c;从而定制各类管理端应用。 在这里肯定有同学会…

python 自动化数据提取之正则表达式

>>>> 前 言 我们在做接口自动化的时候&#xff0c;处理接口依赖的相关数据时&#xff0c;通常会使用正则表达式来进行提取相关的数据&#xff0c;今天在这边和大家聊聊如何在python中使用正则表达式。 正则表达式&#xff0c;又称正规表示式、正规表示法、正规…

华为数通HCIP-BGP EVPN基础

MP-BGP MP-BGP&#xff08;Multiprotocol Extensions for BGP-4&#xff09;在RFC4760中被定义&#xff0c;用于实现BGP-4的扩展以允许BGP携带多种网络层协议&#xff08;例如IPv6、L3VPN、EVPN等&#xff09;。这种扩展有很好的后向兼容性&#xff0c;即一个支持MP-BGP的路由…

企业数据,大语言模型和矢量数据库

随着ChatGPT的推出&#xff0c;通用人工智能的时代缓缓拉开序幕。我们第一次看到市场在追求人工智能开发者&#xff0c;而不是以往的开发者寻找市场。每一个企业都有大量的数据&#xff0c;私有的用户数据&#xff0c;自己积累的行业数据&#xff0c;产品数据&#xff0c;生产线…

MySQL数据库分库分表备份(shell脚本)

创建目录 mkdir /server/scripts 一、使用脚本实现分库备份 1、创建脚本并编写 [rootlocalhost scripts]# vim bak_db_v1.sh #!/bin/bash ######################################### # File Name:bak_db_v1.sh # Version: V1.0 # Author:Shen QL # Email:17702390000163.co…