颤振路径管理代码太长了,Ali工程师如何有效地解决它(实用)

频道:闲鱼技术 日期: 浏览:229
作者:自由鱼科技-星象

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

在颤振业务发展过程中,颤振方将逐步丰富自身的路由管理。轻量级路由管理本质上是页面id(或页面路径)和页面实例之间的映射。本文提出了一种基于gallop注释的轻量级路由管理方案。

无论是在诞生地使用颤振的混合项目,还是使用纯颤振开发的项目,当我们实施轻型布线时,我们通常有以下方法:

如果实现不佳,则为逻辑堆栈:

映射时,较差的实现是通过if-other逻辑判断将网址映射到相应的小设备实例,

缺点显而易见:

每次都要保持每个分支映射的稳定性

2)无法实现页面的统一抽象,页面构造函数和构造逻辑由开发人员定制

3)映射配置无法与页面链接,页面级配置集中维护,导致缺少维护责任人

一般实施:手动维护的映射表:

的小女儿更好的的代表的映射关系通过的配置信息的的工厂方法

这在颤振方面仍然很麻烦。第一个是问题3,它仍然存在。其次,由于颤振目前不支持反射,因此必须有一种类似于工厂方法的方法来创建页面实例。

为了解决上述问题,我们需要一个可以在页面级别使用并自动维护映射的方案。注释是一个值得尝试的方向。我们的路线注释方案注释u路线(GIT h u b)地址:诞生。整个注释方案的操作系统如图所示:

让我们从gallop注释开始,了解这个系统的操作。

注释实际上是代码级别的一种配置。它可以在编译时或运行时使用。由于Flatter目前在运行时不支持反射函数,我们需要在编译时获取注释的相关信息,并使用这些信息生成一个自动维护的映射表。我们需要做的是在编译过程中分析gallop文件的语法结构,找到文件中注释的注释块和相关内容,收集注释内容,最后生成我们想要的映射表。该方案的概念如图所示:

调查发现,盖洛普的一些内置图书馆加快了该计划的实施。

gallop提供了三个库:构造库、分析库和源库。源UGE n使用building库和analyzer库来更好地封装注释拦截。从注释功能的角度来看,这三个库提供以下功能:

架构库:整套资源文件的处理分析器库:为gallop文件生成完整的语法结构。source u g e n库:提供注释元素截取

这里简单介绍一下源代码及其上下游。首先,让我们看看与其注释相关的类图:

源代码的源代码是建筑库提供的生成器基类。此类的功能是允许用户自定义正在处理的资源文件。它负责提供资源文件信息,并提供生成新资源文件的方法。源UGE n从building library提供的builder类派生出自己的builder。同时,它还定制了一组生成器抽象。派生生成器接受生成器类的集合,然后收集生成器的输出,最后生成一个文件。

 

不同的派生生成器处理生成器的方式不同。通过这种方式,源u g e n将一个文件的构造过程提供给自己定义的多个生成器,并与构建库相比提供了一个相对友好的包。

在抽象生成器的基础上,源UGE n提供与注释相关的生成器来生成注释。注释生成器实例将接受指定的注释类型。因为分析器提供语法节点的抽象元素及其元数据字段,即注释的语法抽象元素。元素注释生成器可以通过检查每个元素的元数据类型是否与声明的注释类型匹配,过滤出已注释元素的信息和元素的上下文,然后将这些信息包装给用户,以便我们可以使用这些信息来完成路由注释。

在了解了源代码后,我们开始了自己的注释分析方案注释u路径

在干预开始时,我们遇到了几个问题:

只需要生成一个文件:由于输入文件对应于生成的文件后缀,我们需要避免重复生成文件,并知道何时生成文件:我们需要在扫描和收集所有候选文件后生成映射表。源代码只支持一个类的一个注释,但是,有多个URL映射到一个页面

经过一些思考,我们得到了以下结果

首先,注释分为两类:一类用于注释@arut页面,另一类用于注释用户自己的路由器@a r o u t r o u t e u l d e r有一个路由生成器实例,负责@arut注释;r o u t e w r i t b u i l d e r有一个路由写入生成器实例,负责@external annotation。通过building library支持的配置文件,building yamal控制两种类型的构建器的构建顺序。在执行r o u t e u i l d r后,执行r o u t e r i t e u i l d r,这样我们就可以在所有页面的注释扫描完成后准确地开始生成我们自己的配置文件。

在注释解析项目中,对于@arut注释页面,配置信息通过路由生成器以静态存储空间移交给收集器,输出内容设置为无效,即不会生成相应的文件。扫描完@arut annotation的所有页面后,route write generator将调用作者,作者将从收集器中提取信息并生成最终的配置文件。对于用户,我们提供了一层友好的封装。在为项目配置带注释的u路线后,我们的路线代码更改如下:

使用前:

使用后:

目前,该方案已在空闲fish应用中稳定运行。我们提供了基本的路由参数。随着Flitter业务场景变得越来越复杂,我们也将对注释的自由度进行更深入的探索。有关note u route的更多详细安装和使用说明,请参见g i t h u b地址:,如果您在使用中遇到任何问题,请给我们反馈。

短视频宝宝=慢?阿里巴巴工程师在这一秒中打开短视频1,这是一个很好的方案,可以帮助您实现复杂数据源中细胞信息的精确规范化。关于颤振初始化过程,我必须告诉你们的是,在颤振中嵌入发源地组件的正确姿势是什么?没有供应的闲置鱼类的做法是什么?如何做到?游手好闲的鱼没有货源。闲置市场规模超过万亿。二手电子商务迎来了循环经济的红利。“校园圈”真的能成为游鱼生长的第二个引擎吗?

复制成功

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

我知道了
添加微信

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

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