颤振响应编程范例的实践

频道:闲鱼技术 日期: 浏览:395
作者:自由鱼技术-工匠修复

微信号:ccjun91
添加微信群,试用软件
复制微信号

颤振小部件的设计灵感来自响应。它是一个基于响应的本机用户界面框架。本文从颤振的特点出发,结合空鱼在颤振中的工程应用,探讨了颤振响应编程的思路和实践。

当我们谈论用户界面时,我们总是谈论mvc。它出现得很早。当时,现代gui中广泛使用的事件驱动(消息循环)模型尚未普及。因此,mvc在很长一段时间里一直在发展和重新定义。迄今为止,MVC是一个非常宽泛的概念。使用基本mvc作为开发框架容易出现模块职责边界模糊和逻辑调用方向混乱的问题。在gui框架演化之后,用户事件的分布和处理被集成到视图模块中,从而产生了MVP。MVP的职责分工明确,逻辑调用的方向容易把握,但非常繁琐,开发效率不高。随着网格技术的发展,将标记语言应用于接口描述,逻辑接口分离和无状态接口开始出现,视图模型应运而生。视图模型允许体系结构级别提供数据和视图的双向绑定,这减少了开发工作,但有时会带来一定程度的状态混乱。近年来,函数式编程再次被提出,这引发了一种趋势,并催生了响应式接口的发展。响应是对gui事件驱动模型本质的回归。

对前端架构迭代的个人理解:

从迭代过程的角度来看,模型和视图是两个相对固定的角色。它们易于理解,并且能够很好地确定责任边界。如何沟通模型和视图是架构设计的关键。响应性的一般做法是将模型返回到原始的事件驱动模式,并结合功能数据流来驱动视图刷新。这样就有了相对清晰的角色和简单易懂的逻辑链接,可以更好地统一编程模式。

一般来说,gui框架有一些共同点,例如树级视图、消息循环、垂直同步信号刷新等。颤振也继承了这些经典设计,但颤振没有使用标记语言来描述接口(例如mesh中的h t ml和android中的x ml)。其中,颤振是基于响应的初衷。反应性是一种以事件数据流为核心的开发模型,用户界面框架将提供相应的功能以提供更好的支持。

有的的汉白玉的的差异之间界别语言的势在必行语言的的势在必行语言商检批示的的计算机,10pa界别语言精品课程逻辑的的计算机.这主意的枯水的的折返用户接口.折返does不提倡betweenu我,的的当然它婚嫁does不提供的应用编程接口的between观点,如的我们常见篇章搁放.othere引线xn引线()按钮.othere引线大澳nc枸杞我ck()将不次生.的义乌的的接口可以的数字化(如的xnml,jother大澳n,等.),10pa的手术的的接口的难的的数字化,的的非常重要.的响应需要的地图的数据的的接口顺势的sustainably.

在颤振中,使用小型设备来描述接口。小型设备只是视图的“配置信息”。在编写时,gallop语言的一些声明性特性被用来获得与结构化标记语言类似的可读性。无状态和有状态的小部件都是不可变的(不变的),成员变量应该是最终的,也就是说,小部件是“只读的”。这个小工具是数据映射。当数据发生变化时,我们需要重新创建gadget来更新接口,这意味着gadget将被频繁创建和销毁,但是Flatter使用的gallop虚拟功能可以有效地处理这个短期的轻量级对象。

这种设计思想可能不适用于刚刚接触的开发人员,我们可以在开发l i s t v i e w(i o s)时借助表视图来理解它:我们通常先准备一个数据列表,然后实现一个适配器,将列表中的项目映射到项目视图,最后将列表和适配器设置为l i s t v i e w。当我们更改列表中的数据时,列表视图将相应刷新。

 

与Flatter类似,我们准备了小工具(除了小工具的“容器”是一棵树而不是一个列表)。Flatter将提供适配器(r e n d e r o b j e c t o w i d g e t a d a p t e r)将它们映射到渲染对象以进行渲染,并且当小工具更新时,界面将被刷新。

此外,小部件还可以通过设置密钥来缓存重用。在类似于列表视图的场景中,重用项目小部件是非常有益的。

在我们国家,如果你想与他人更亲近,有时你会进入一个类似“50年前我们是一家人”的环境。在Flatter中,如果两个组件想要通信,它们也在寻找自己的祖先(当然,这两个组件之间可能有遗传关系)。Flatter将其描述为“数据上行链路和通知下行链路”。

然而,在一个非常复杂的树级别上,很难找到一个“祖先”,性能也不好。Flatter经过优化以提供继承的小部件。在“祖先”小部件继承了这种类型之后,孩子们可以通过从构造上下文中提供的w i d g e t o f e x a c t y p e继承的方法,轻松地在层次结构中找到最近的“祖先”。该方法优化效率高,允许孩子与“祖先”建立依赖关系,便于刷新。

的概念的类似控制器的不大戏的折返(如的的泥石流的仿制的的搁放控制器的copd).的搁放本身的inoperable,的的控制器失去及其含义.工作成就,的通信之间modal/必须的"自我季后赛"的的搁放水平.

这当然不是弗利特独有的。如果你想实现简单和优雅的回应,你必须充分利用语言的功能特性。Flitter的亮点在于,它使用的奔腾语言可以让事情变得非常简单。你基本上不需要引入任何第三方库来实现这一点(但是有一个r x d a r t库,但感觉它只做了额外的增强)。此外,很明显,语言应用编程接口的设计也朝着这个方向进行了优化,这非常方便。让我们看看流量和r x d a r t

通过响应实践,该响应可以很好地解决数据到接口的更新问题,而且效率也很高。然而,由于数据状态管理不足,响应官员提出了流量。面对复杂的业务场景,Flatter官员还推荐了redu架构,我们也根据这个想法构建了框架。

第一个是业务逻辑和接口的分离。接口是无状态的。我们还试图通过自动方法直接生成接口代码,因此在小型设备中不会出现业务逻辑代码。当我们给视图层提供一个可以描述当前界面的数据(状态)时,界面应该正常显示。用户和界面之间的交互将产生动作。动作代表用户交互的意图。动作可以携带信息(例如,如果用户使用输入消息,则应在动作中携带用户消息的内容信息)。该操作将被输入到存储中,存储将通过注册的中断器拦截该操作。可以通过中断器截获该动作,或者将一个动作重写为另一个动作,然后收集相应的绑定缩减器,对该动作执行缩减操作,生成新状态并通知接口刷新。

通常,当我们创建百货商店时,我们组装减速器和断续器:

reducer是处理用户交互过程中生成的操作的逻辑代码,接收3个参数。有两个参数,一个是执行上下文,一个是要处理的操作,另一个是当前状态。处理后,必须返回一个新的状态函数。理想的减速机应该是无副作用的纯功能减速机。显然,我们不应该访问或更改减速器中的局部变量,但有时我们会依赖以前的计算结果。此时,我们可以向简化文本发送一些运行时数据。reducer中不应该有异步逻辑,因为百货公司的Reduce操作是同步的,生成新状态后会立即通知接口刷新,而状态的异步更新不会触发刷新。

断续器在形式上与减速器相似。区别在于它可以进行异步逻辑处理。例如,网络请求应该在中断器中实现。

*为什么会有干扰者?从另一个角度来看,我们可以把整个百货公司看作一种功能。输入是动作,输出是状态函数,这会产生副作用。有时,我们的输入参数不一定有相应的输出,例如日志函数(无效的日志(字符串))。当我们输入一个字符串时,我们只会在标准输出上打印一个字符串,log函数没有返回值。同样,对于百货公司来说,并不是所有的行动都需要改变状态。有时,用户只要想摇晃手机,就不会触发界面更新。因此,百货公司使用中断器来处理副作用。

通常,我们会让界面根目录下的继承小部件保存界面上的任何小工具,比如百货商店

可以轻松访问百货公司并与百货公司建立联系。此方法可参考r e d u x u演示,该演示将不会详细展开。

最后,让我们简单地谈谈百货公司的实施。百货公司可以接收操作,然后执行缩减,最后向小型设备提供数据源。该小工具可以基于提供的数据源建立数据流,并根据数据更改刷新界面。其核心是奔腾的水流

百货公司的核心是减少行动:

该小工具基于百货商店公开的数据源建立数据流:

在业务开发中,我们发现有时一个页面和一个百货商店会给组件重用带来不便。例如,视频回放组件是逻辑内聚组件。如果其减速器集中在页面上的百货商店,则其他页面将不方便重用开发的视频组件,此时视频组件可能需要独立的百货商店来存储与视频播放相关的逻辑。遵循颤振组件通信方法,我们扩展了该框架,以允许多家百货商店的存在,并使其对小型设备的开发不敏感。

这个小玩意只能感应到离它最近的百货商店的店主。百货公司会将操作转发给更高级别的百货公司,接收来自更高级别百货公司的数据更改,并通知小工具。

与当前流行的视图模型框架(Vue、锐边和锐角)相比,它能够以细粒度绑定数据,并最小化界面刷新。在框架中没有自动实现颤振的好方法。目前,它只能由开发人员手动处理。这将不可避免地降低开发效率,减少开发经验。我们也在探索更好的方法。如果您有兴趣或有好的解决方案,欢迎与我们联系。

当遇到复杂状态页面(多动画、多视图链接)时,百货公司应提供相关工具或机制来管理复杂状态,以提高开发效率。状态机是可选方案之一。如果您对gallop下的状态机框架有一个优雅的实现或想法,请务必与我们分享。

最后,休闲鱼科技团队从各个方向招募人才。无论你是否精通移动终端、前端、后台、机器学习、音频和视频、自动化测试等,欢迎您发送简历,加入我们,用科技改善您的生活!

没有供应的闲置鱼类的做法是什么?如何做到这一点?游手好闲的鱼没有货源。闲置市场规模超过万亿。二手电子商务迎来了循环经济的红利。“校园圈”真的能成为游鱼生长的第二个引擎吗?如果闲置的鱼被恶意退回怎么办?开店时如何提高闲置鱼的暴露率?

关键词:闲鱼科闲鱼
复制成功

微信号: ccjun91
添加微信群,试用软件

我知道了
添加微信

微信号: ccjun91
添加微信群,试用软件

一键复制加过了
18749471747
微信号:ccjun91添加微信
ccjun91