CN111880775A - 多模块分层架构实现方法、装置、电子设备、存储介质 - Google Patents
多模块分层架构实现方法、装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN111880775A CN111880775A CN202010744019.2A CN202010744019A CN111880775A CN 111880775 A CN111880775 A CN 111880775A CN 202010744019 A CN202010744019 A CN 202010744019A CN 111880775 A CN111880775 A CN 111880775A
- Authority
- CN
- China
- Prior art keywords
- module
- layer
- view
- class
- page
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种多模块分层架构实现方法、装置、电子设备、存储介质,多模块分层架构实现方法包括:提供页面模块,所述页面模块包括至少一子模块,所述页面模块及所述子模块具有设定模块结构,所述设定模块结构包括模组层、提供层以及视图层,所述模组层用于执行数据计算,所述提供层用于调用所述视图层和所述模组层中的方法,所述视图层用于进行视图展示,所述子模块位于所述页面模块的视图层。本发明提供的多模块分层架构利于页面项目开发。
Description
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种多模块分层架构实现方法、装置、电子设备、存储介质。
背景技术
随着互联网的发展,各类网站皆需成承担多种业务场景。为此,目前,各个页面项目或多或少都有一些针对当前业务场景的框架设计,大部分是直接使用业内较为通用的方案,但随着业务复杂度增加,不同的技术人员的更替,项目可能最终变得难以维护。前期的设计不足,无疑增加后期项目的维护成本,最终走向重构的道路。
由此可见,如何设计一个框架来解决目前项目中常见的问题,并且它能让项目从始至终都保持一个统一的规范,是本领域亟待解决的技术问题。
发明内容
本发明为了克服上述现有技术存在的缺陷,提供一种多模块分层架构实现方法、装置、电子设备、存储介质,以利于页面项目开发。
根据本发明的一个方面,提供一种多模块分层架构实现方法,包括:
提供页面模块,所述页面模块包括至少一子模块,所述页面模块及所述子模块具有设定模块结构,所述设定模块结构包括模组层、提供层以及视图层,所述模组层用于执行数据计算,所述提供层用于调用所述视图层和所述模组层中的方法,所述视图层用于进行视图展示,所述子模块位于所述页面模块的视图层。
在本发明的一些实现中,所述提供页面模块之前还包括:
创建入参接口以及视图接口,所述入参接口定义各模块的输入参数,所述视图接口定义模块的视图模型;
创建视图类、模组类以及提供类,以分别用于实现视图层、模组层以及提供层,所述提供类包括生命周期方法以及用户交互相应方法,所述生命周期方法用于管理模块的生命周期,所述用户交互相应方法用于处理用户交互行为。
在本发明的一些实现中,所述提供页面模块之前,且所述创建视图类以及提供类之后包括:
创建子模块,包括:
创建视图类、模组类以及提供类的实例;
向模组类注入插件,以生成模组层;
向提供类注入模组类的实例、视图类的实例以及插件,以生成提供层;
向视图类注入提供类的实例以及插件,以生成视图类。
在本发明的一些实现中,所述提供页面模块之前,且所述创建视图类以及提供类之后包括:
创建页面模块,包括:
创建视图类、模组类以及提供类的实例;
向模组类注入插件,以生成模组层;
向提供类注入模组类的实例、视图类的实例、插件、页面实例、页面类以及页面生命周期方法,以生成提供层;
向视图类注入提供类的实例以及插件,以生成视图类。
在本发明的一些实现中,所述子模块的模组层用于:
持有数据、实现业务逻辑的计算、实现请求服务、读取数据中的一项或多项。
在本发明的一些实现中,所述提供页面模块还包括:
分别对所述页面模块以及子模块的各层进行单独测试。
在本发明的一些实现中,所述分别对所述页面模块以及子模块的各层进行单独测试包括:
采用单元测试分别对所述页面模块以及子模块的模组层和提供层进行测试;
采用UI自动化测试分别对所述页面模块以及子模块的视图层进行测试。
根据本发明的又一方面,还提供一种多模块分层架构实现装置,包括:
提供模块,用于提供页面模块,所述页面模块包括至少一子模块,所述页面模块及所述子模块具有设定模块结构,所述设定模块结构包括模组层、提供层以及视图层,所述模组层用于执行数据计算,所述提供层用于调用所述视图层和所述模组层中的方法,所述视图层用于进行视图展示,所述子模块位于所述页面模块的视图层。
根据本发明的又一方面,还提供一种电子设备,所述电子设备包括:处理器;存储介质,其上存储有计算机程序,所述计算机程序被所述处理器运行时执行如上所述的步骤。
根据本发明的又一方面,还提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如上所述的步骤。
相比现有技术,本发明的优势在于:
通过多模块分层架构规范项目结构与代码风格,降低跨页面项目的维护成本;最大程度抹平设备与环境差异,降低项目出错风险;根据现有业务需求,快速构建项目,并集成常用开发环境;支持减少手写模板代码,一键生成项目中对应的模板代码;利于团队多方协同开发,面向接口编程,减少研发周期。
附图说明
通过参照附图详细描述其示例实施方式,本发明的上述和其它特征及优点将变得更加明显。
图1示出了根据本发明实施例的多模块分层架构的示意图。
图2示出了根据本发明实施例的多模块分层架构的数据流。
图3示出了根据本发明实施例的多模块分层架构实现装置的示意图。
图4示意性示出本公开示例性实施例中一种计算机可读存储介质示意图。
图5示意性示出本公开示例性实施例中一种电子设备示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
为了解决现有技术的缺陷,以实现灵活的弹框,本发明提供一种多模块分层架构实现方法、装置、电子设备、存储介质。
多模块分层架构实现方法包括如下步骤:
提供页面模块,所述页面模块包括至少一子模块,所述页面模块及所述子模块具有设定模块结构,所述设定模块结构包括模组层、提供层以及视图层,所述模组层(抽象的,与具体的执行环境无关)用于执行数据计算,所述提供层用于调用所述视图层和所述模组层中的方法(以作为所述所述视图层和所述模组层之间的桥梁),所述视图层(无状态的)用于进行视图展示,所述子模块位于所述页面模块的视图层。
在本发明提供的多模块分层架构实现方法中,通过多模块分层架构规范项目结构与代码风格,降低跨页面项目的维护成本;最大程度抹平设备与环境差异,降低项目出错风险;根据现有业务需求,快速构建项目,并集成常用开发环境;支持减少手写模板代码,一键生成项目中对应的模板代码;利于团队多方协同开发,面向接口编程,减少研发周期。
具体而言,可以参见图1,图1示出了根据本发明实施例的多模块分层架构的示意图。图1示出了页面模块100、插件10以及模组服务20。页面模块100包括页面视图层110、页面提供层120以及页面模组层130。页面视图层110中包括至少一子模块200。每一子模块包括视图层210、提供层220以及模组层230。页面模组层130以及模组层230中的模组方法可以调用模组服务20来实现。
由此,本发明提供的多模块分层架构可以具备以下特点:1)模块分离,框架将页面的不同功能以模块维度划分,模块高度内聚,拆分业务复杂度;2)结构划分,模块内采用视图层、提供层以及模组层结构,隔离数据与视图,提升代码的可读性、可维护性;3)易于测试,业务逻辑实现在纯函数与类中,使用常规测试框架即可完成单元测试;4)框架无关性,框架只是一个工具,***不与框架绑定;5)可被测试,业务逻辑与UI、数据库等隔离,方便单元测试;6)UI无关性,不需要修改***的其它部分,就可以变更UI,如将React(用于构建用户界面的JAVASCRIPT库)替换为Vue(构建用户界面的渐进式框架);7)数据库无关性,业务逻辑与数据库之间需要进行解耦;8)外部机构(agency)无关性,***的业务逻辑,不需要知道其它外部接口,诸如安全、调度、代理等。
图2示出了根据本发明实施例的多模块分层架构的数据流。如图2所示,无论是页面模块还是子模块,用户交互触发视图层210注册的回调方法;然后视图层210调用提供层220的方法;提供层220调用一系列模组层230的方法更新数据,并获取最新视图模型;提供层220调用视图层210的方法将最新视图模型更新至视图层210;视图层210刷新UI组件,展示最新界面。
具体而言,所述提供页面模块之前还可以包括:创建入参接口以及视图接口;以及创建视图类、模组类以及提供类。所述入参接口定义各模块的输入参数,所述视图接口定义模块的视图模型。视图模型决定模块展示哪些可变化的内容。对于静态内容,可直接在视图层实现,无需定义在视图接口中。创建的视图类、模组类以及提供类,分别用于实现视图层、模组层以及提供层,所述提供类包括生命周期方法以及用户交互相应方法,所述生命周期方法用于管理模块的生命周期,所述用户交互相应方法用于处理用户交互行为。具体而言,视图类实现模块如何展示,可在其中渲染组件,定义样式。视图层接受来自提供层的数据,当用户交互发生时,调用提供层的方法处理用户交互。提供类实现业务逻辑流程,流程中可调用模组层、视图层的方法完成业务逻辑,通常它由生命周期方法和用户交互响应方法组成。本发明提供多个生命周期方法,使业务方能够在各模块的初始化、运行、销毁过程中添加自己的业务逻辑。例如一种生命周期方法使业务方可以在模块挂载到组件树后执行某些逻辑。用户交互响应方法用于处理用户的交互行为,更新模组层并将最新的计算结果更新至视图层。可以以on开头命名这类方法,以清晰的表示他们的用途。
在本发明的一些实现中,本发明可以使用消息通信方式在模块间传递、同步数据,实现页面级的业务功能。对比传统的组件间props数据传输和redux式数据同步,消息通信有以下优势:与页面结构无关,传统props数据传递只能在父子组件间进行,跨层级传递、兄弟节点传递都需要有其余组件参与才可完成,组件间耦合度严重上升;避免全局数据,redux将页面数据存储在一个Store(存储模块)中,不同组件通过修改Store、获取Store最新数据完成数据同步。但是Store本质为全局对象,随着业务迭代将变得庞大、臃肿,可维护性严重下降。同时组件自身不再维护业务数据,使组件依赖特定页面的Store结构,失去了在不同页面间的复用性。
具体而言,可以将实际业务场景中模块间的数据传递抽象为以下形式:1)一个模块传递数据至多个模块;2)一个模块传递数据至特定模块(可以认为是前一形式的特殊场景);3)一个模块向另一模块请求数据;4)一个模块向另一模块请求数据,并有返回值。
在本发明的一些实现中,所述提供页面模块之前,且所述创建视图类以及提供类之后包括创建子模块的步骤。
创建子模块的步骤包括:
创建视图类、模组类以及提供类的实例;
向模组类注入插件,以生成模组层;
向提供类注入模组类的实例、视图类的实例以及插件,以生成提供层;
向视图类注入提供类的实例以及插件,以生成视图类。
具体而言,插件提供项目可扩展能力,包括但不限于EventBus,ApiBus,MonitorLog等功能,实现模块之间数据通信,监控数据埋点等功能。
插件需继承“ICorePlugin”,根据具体的业务需求实现“getModelPlugin”、“getPresenterPlugin”,“getViewPlugin”方法,框架在对应的类中注入插件。
为了提升页面性能,各模块可以利用一方法拒绝通过props更新自身。各模块初始化后的所有模块间数据通信应依赖EventBus(基于发布者/订阅者模式的事件总线框架)和ApiBus(类单工模式的数据传输方式)。
在本发明的一些实现中,所述提供页面模块之前,且所述创建视图类以及提供类之后包括创建页面模块的步骤。
创建页面模块的步骤包括:
创建视图类、模组类以及提供类的实例;
向模组类注入插件,以生成模组层;
向提供类注入模组类的实例、视图类的实例、插件、页面实例、页面类以及页面生命周期方法,以生成提供层;
向视图类注入提供类的实例以及插件,以生成视图类。
具体而言,所述子模块的模组层用于处理业务数据。模组层中可以完成诸如“计算当前行程类型”,“比较两个数据大小”等事务。
简单来说,所有涉及加减乘除,是否相同比较的逻辑都应放入模组层中。可将模组层的职责再细分为三类:1)持有数据的职责,将模块的初始数据、中间数据作为成员变量记录在模组层内;2)实现业务逻辑计算的职责。可将具体的计算逻辑放在管理者目录的纯函数中。模组层只作为这些函数的调用方,使用纯函数进行计算更利于实现单元测试,提升代码质量;实现其它作用的职责,例如请求服务,读取=存储器等其它作用应在模组层完成。
提供层用于负责模块的生命周期,用户交互处理,event、api事件处理部分。其中一个页面中存在且只应存在一个页面提供层,该页面提供层将额外注入页面类、页面静态化成员变量以及页面的所有生命周期方法,用于完成页面类的功能。
视图层用于负责模块的界面展示部分,不应在其中实现任何业务逻辑功能。视图层本质是一个React组件,可正常使用React组件的所有功能。
在本发明的一些实现中,所述提供页面模块还包括分别对所述页面模块以及子模块的各层进行单独测试。进一步地,可以采用单元测试分别对所述页面模块以及子模块的模组层和提供层进行测试;采用UI自动化测试分别对所述页面模块以及子模块的视图层进行测试。
具体而言,针对常用场景,框架提供可快速生成mock的单元测试方法(mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法),方便业务方进行单元测试。本发明通过三层结构对模块的逻辑进行分层,因此可对模组层、提供层和视图层分别单独进行测试。视图层中只包含单纯的渲染逻辑,逻辑简单、改动频率高,测试价值低。因此单元测试的重点在于模组层、提供层,视图层可通过UI自动化测试进行验证。
具体而言,可以尽可能将单元测试视作一个黑盒过程,重点测试方法对外表现的行为与功能。这样可以保证单元测试有效的同时,减少因实现方式改变导致的单元测试失败。通过如下方式实现模组层测试:可以根据传入的模组类和其构造参数,生成测试模组实例,根据传入的模组类,生成mock模组实例,模组实例的所有方法将被替换为jest.fn。生成页面通信(Props)类型数据,可用于构造页面模组的初始参数。其中,构造mock模组的实例默认不传递构造参数,当这种构造方式导致js error时,需要用户自行传入构造参数。Mock功能的用途在于测试特定场景时,例如测试服务请求失败场景,即可将模组的请求方法mock为请求失败。通过如下方式实现提供层测试:根据传入的提供类和其他构造参数,生成提供层实例。生成提供层测试的方法将默认注入eventBus和apiBus插件(使用方在插件参数中传入的eventBus和apiBus属性将被覆盖),并暴露getMockEventBus和getMockApiBus方法,使用方可通过该方法查看event、api调用场景下的行为。测试页面提供层时,应传递isPagePresenter参数为true。返回的提供层将,首先对提供层注入页面,页面静态成员变量;额外暴露getMockPage和getMockPageStatic方法,使用方可通过这两个方法查看页面提供层调用页面/页面静态变量的行为。
由此,相比Redux的架构,本发明更适用比较复杂的业务场景,而Redux在比较复杂的业务场景中存在如下不足:1)单一数据源随着业务的增长,store变得庞大,使得后期维护困难;2)Action和Reducer维度的职责划分方式容易导致低内聚;3)Action以字符串为Key做区分,对代码调试不够友好,且可能留下隐患;4)所有子组件都依赖Store,当需要单独剥离出可复用组件时,修改较为困难。
进一步地,本发明还可以提供一种插件,以帮助业务方快速创建一个上述模块目录。
本发明结合现有业务特点,快速生成项目结构,配合前述插件,减少了需重复编写模板代码的时间,简化了业务开发中的流程,极大的降低了前期的开发成本。让项目中代码更加符合规范,提高了项目的健壮性。项目中使用的三层结构,分离视图与逻辑,使代码更加清晰与整洁,便于日后的维护或者迁移。配合强大的插件***,也能轻松应付未来复杂的业务场景。
本发明还提供一种多模块分层架构实现装置,图3示出了根据本发明实施例的多模块分层架构实现装置的示意图。多模块分层架构实现装置300包括提供模块310。
提供模块310,用于提供页面模块,所述页面模块包括至少一子模块,所述页面模块及所述子模块具有设定模块结构,所述设定模块结构包括模组层、提供层以及视图层,所述模组层用于执行数据计算,所述提供层用于调用所述视图层和所述模组层中的方法,所述视图层用于进行视图展示,所述子模块位于所述页面模块的视图层。
在本发明提供的多模块分层架构实现装置中,通过多模块分层架构规范项目结构与代码风格,降低跨页面项目的维护成本;最大程度抹平设备与环境差异,降低项目出错风险;根据现有业务需求,快速构建项目,并集成常用开发环境;支持减少手写模板代码,一键生成项目中对应的模板代码;利于团队多方协同开发,面向接口编程,减少研发周期。
图3仅仅是示意性的示出本发明提供的多模块分层架构实现装置,在不违背本发明构思的前提下,模块的拆分、合并、增加都在本发明的保护范围之内。本发明提供的多模块分层架构实现装置可以由软件、硬件、固件、插件及他们之间的任意组合来实现,本发明并非以此为限。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被例如处理器执行时可以实现上述任意一个实施例中所述多模块分层架构实现方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述多模块分层架构实现方法部分中描述的根据本发明各种示例性实施方式的步骤。
参考图4所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品400,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在租户计算设备上执行、部分地在租户设备上执行、作为一个独立的软件包执行、部分在租户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到租户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
在本公开的示例性实施例中,还提供一种电子设备,该电子设备可以包括处理器,以及用于存储所述处理器的可执行指令的存储器。其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一个实施例中所述多模块分层架构实现方法的步骤。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为***、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。
下面参照图5来描述根据本发明的这种实施方式的电子设备600。图5显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同***组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述多模块分层架构实现方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元610可以执行如前述的步骤。
所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、***总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得租户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述多模块分层架构实现方法。
相比现有技术,本发明的优势在于:
通过多模块分层架构规范项目结构与代码风格,降低跨页面项目的维护成本;最大程度抹平设备与环境差异,降低项目出错风险;根据现有业务需求,快速构建项目,并集成常用开发环境;支持减少手写模板代码,一键生成项目中对应的模板代码;利于团队多方协同开发,面向接口编程,减少研发周期。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。
Claims (10)
1.一种多模块分层架构实现方法,其特征在于,包括:
提供页面模块,所述页面模块包括至少一子模块,所述页面模块及所述子模块具有设定模块结构,所述设定模块结构包括模组层、提供层以及视图层,所述模组层用于执行数据计算,所述提供层用于调用所述视图层和所述模组层中的方法,所述视图层用于进行视图展示,所述子模块位于所述页面模块的视图层。
2.如权利要求1所述的多模块分层架构实现方法,其特征在于,所述提供页面模块之前还包括:
创建入参接口以及视图接口,所述入参接口定义各模块的输入参数,所述视图接口定义模块的视图模型;
创建视图类、模组类以及提供类,以分别用于实现视图层、模组层以及提供层,所述提供类包括生命周期方法以及用户交互相应方法,所述生命周期方法用于管理模块的生命周期,所述用户交互相应方法用于处理用户交互行为。
3.如权利要求2所述的多模块分层架构实现方法,其特征在于,所述提供页面模块之前,且所述创建视图类以及提供类之后包括:
创建子模块,包括:
创建视图类、模组类以及提供类的实例;
向模组类注入插件,以生成模组层;
向提供类注入模组类的实例、视图类的实例以及插件,以生成提供层;
向视图类注入提供类的实例以及插件,以生成视图类。
4.如权利要求2所述的多模块分层架构实现方法,其特征在于,所述提供页面模块之前,且所述创建视图类以及提供类之后包括:
创建页面模块,包括:
创建视图类、模组类以及提供类的实例;
向模组类注入插件,以生成模组层;
向提供类注入模组类的实例、视图类的实例、插件、页面实例、页面类以及页面生命周期方法,以生成提供层;
向视图类注入提供类的实例以及插件,以生成视图类。
5.如权利要求1所述的多模块分层架构实现方法,其特征在于,所述子模块的模组层用于:
持有数据、实现业务逻辑的计算、实现请求服务、读取数据中的一项或多项。
6.如权利要求1所述的多模块分层架构实现方法,其特征在于,所述提供页面模块还包括:
分别对所述页面模块以及子模块的各层进行单独测试。
7.如权利要求6所述的多模块分层架构实现方法,其特征在于,所述分别对所述页面模块以及子模块的各层进行单独测试包括:
采用单元测试分别对所述页面模块以及子模块的模组层和提供层进行测试;
采用UI自动化测试分别对所述页面模块以及子模块的视图层进行测试。
8.一种多模块分层架构实现装置,其特征在于,包括:
提供模块,用于提供页面模块,所述页面模块包括至少一子模块,所述页面模块及所述子模块具有设定模块结构,所述设定模块结构包括模组层、提供层以及视图层,所述模组层用于执行数据计算,所述提供层用于调用所述视图层和所述模组层中的方法,所述视图层用于进行视图展示,所述子模块位于所述页面模块的视图层。
9.一种电子设备,其特征在于,所述电子设备包括:
处理器;
存储介质,其上存储有计算机程序,所述计算机程序被所述处理器运行时执行如权利要求1至7任一项所述的多模块分层架构实现方法。
10.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至7任一项所述的多模块分层架构实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010744019.2A CN111880775A (zh) | 2020-07-29 | 2020-07-29 | 多模块分层架构实现方法、装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010744019.2A CN111880775A (zh) | 2020-07-29 | 2020-07-29 | 多模块分层架构实现方法、装置、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111880775A true CN111880775A (zh) | 2020-11-03 |
Family
ID=73202015
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010744019.2A Pending CN111880775A (zh) | 2020-07-29 | 2020-07-29 | 多模块分层架构实现方法、装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111880775A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112417800A (zh) * | 2020-12-03 | 2021-02-26 | 海光信息技术股份有限公司 | 集成电路处理方法、集成电路验证方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080052314A1 (en) * | 2006-08-25 | 2008-02-28 | Ritwik Batabyal | e-ENABLER FRAMEWORK |
CN102799430A (zh) * | 2012-07-02 | 2012-11-28 | 电子科技大学 | 一种面向移动互联网的离线可视化业务开发生成器 |
CN105956104A (zh) * | 2016-04-29 | 2016-09-21 | 努比亚技术有限公司 | 业务视图框架及其开发方法 |
CN109783072A (zh) * | 2019-01-23 | 2019-05-21 | 深圳智链物联科技有限公司 | 业务处理方法、装置、终端设备及计算机可读存储介质 |
CN110502229A (zh) * | 2019-08-26 | 2019-11-26 | 广州小鹏汽车科技有限公司 | 页面的生成方法、装置、终端、计算机设备和存储介质 |
-
2020
- 2020-07-29 CN CN202010744019.2A patent/CN111880775A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080052314A1 (en) * | 2006-08-25 | 2008-02-28 | Ritwik Batabyal | e-ENABLER FRAMEWORK |
CN102799430A (zh) * | 2012-07-02 | 2012-11-28 | 电子科技大学 | 一种面向移动互联网的离线可视化业务开发生成器 |
CN105956104A (zh) * | 2016-04-29 | 2016-09-21 | 努比亚技术有限公司 | 业务视图框架及其开发方法 |
CN109783072A (zh) * | 2019-01-23 | 2019-05-21 | 深圳智链物联科技有限公司 | 业务处理方法、装置、终端设备及计算机可读存储介质 |
CN110502229A (zh) * | 2019-08-26 | 2019-11-26 | 广州小鹏汽车科技有限公司 | 页面的生成方法、装置、终端、计算机设备和存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112417800A (zh) * | 2020-12-03 | 2021-02-26 | 海光信息技术股份有限公司 | 集成电路处理方法、集成电路验证方法、装置及电子设备 |
CN112417800B (zh) * | 2020-12-03 | 2023-02-17 | 海光信息技术股份有限公司 | 集成电路处理方法、集成电路验证方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Carnell et al. | Spring microservices in action | |
WO2018228211A1 (zh) | 应用转换方法、装置及设备 | |
US10169034B2 (en) | Verification of backward compatibility of software components | |
US9372688B1 (en) | Automatic discovery of a JavaScript API | |
US20150220308A1 (en) | Model-based development | |
US20120174068A1 (en) | Testing Software Code | |
CN108108986B (zh) | 一种客户关系管理***的设计方法、装置及电子设备 | |
CN114077430A (zh) | 界面生成方法、装置、电子设备及存储介质 | |
CN114253537A (zh) | 表单生成方法及装置、电子设备和存储介质 | |
CN111258802A (zh) | 捕获应用程序崩溃信息的方法及相关设备 | |
CN110868324A (zh) | 一种业务配置方法、装置、设备和存储介质 | |
CN113778897A (zh) | 接口的自动测试方法、装置、设备及存储介质 | |
US11604662B2 (en) | System and method for accelerating modernization of user interfaces in a computing environment | |
CN114217789A (zh) | 功能组件拓展方法、装置、设备、存储介质及程序产品 | |
CN114048415A (zh) | 表单生成方法及装置、电子设备和计算机可读存储介质 | |
CN113238739A (zh) | 一种插件开发和数据获取方法、装置、电子设备及介质 | |
CN111880775A (zh) | 多模块分层架构实现方法、装置、电子设备、存储介质 | |
CN112631563A (zh) | 基于框架的***开发方法、装置、计算机设备及存储介质 | |
CN115268861B (zh) | 自定义组件的引入方法、***、设备和存储介质 | |
US20220365758A1 (en) | Tool for Introspection in Object-Oriented Source Code | |
EP4102357A1 (en) | Development environment organizer with enhanced state switching and sharing | |
CN113032004B (zh) | 在开发环境中管理开发作业的方法、设备和程序产品 | |
CN110599112A (zh) | 一种网络页面开发、维护方法和装置 | |
CN114296718A (zh) | 一种Windows***组件的设置方法及装置 | |
CN113885841A (zh) | 脚本生成的方法、装置、电子设备和可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |