一种可扩展的gui标记文档渲染框架的设计方法及装置

文档序号:1127738 发布日期:2020-10-02 浏览:18次 >En<

阅读说明:本技术 一种可扩展的gui标记文档渲染框架的设计方法及装置 (Design method and device of extensible GUI markup document rendering framework ) 是由 贾金刚 于 2020-06-12 设计创作,主要内容包括:本发明提供一种可扩展的GUI标记文档渲染框架的设计方法及装置,所述方法包括如下步骤:收集编写通用语言的代码所提供的标记语言的信息;将收集的标记语言的信息进行转换处理;根据转换处理后的信息生成标记语言文档。根据收集到的HTML信息建构AST结构;对AST结构进行相关的处理和转换,生产新的AST结构;根据新的AST结构中所包含的信息,生成HTML文档。可扩展的GUI标记文档渲染框架,在提供类型安全和灵活的表达能力的基础上,同时保持了类似与标记语言文档的声明式语法,比较适合编写UI代码,还能大幅提高开发者的生产力。(The invention provides a method and a device for designing an extensible GUI markup document rendering framework, wherein the method comprises the following steps: collecting information of a markup language provided by writing codes of a common language; converting the collected information of the markup language; and generating a markup language document according to the information after the conversion processing. Constructing an AST structure according to the collected HTML information; carrying out relevant processing and conversion on the AST structure to produce a new AST structure; an HTML document is generated based on the information contained in the new AST structure. The extensible GUI markup document rendering framework maintains the declarative grammar similar to markup language documents on the basis of providing type safety and flexible expression capability, is more suitable for compiling UI codes and can also greatly improve the productivity of developers.)

一种可扩展的GUI标记文档渲染框架的设计方法及装置

技术领域

本发明涉及程序开发设计技术领域,具体涉及一种可扩展的GUI标记文档渲染框架的设计方法及装置。

背景技术

标记语言的代表有HTML、XAML和JSX等,标记语言的优点是声明式的语法,容易理解和编写,非常适合设计师用来设计UI。同时缺点也非常明显,标记语言不是一种通用编程语言,无法灵活的表达复杂的运算逻辑,同时也不方便和Java相互操作;对开发者来说,标记语言不是类型安全的,也不方便进行代码重构,还得同时管理两种Java和标记语言的文档两种代码资产。

在后端开发中,通常依靠模板语言来生成HTML文档,这种技术以Thymeleaf等为代表。在模板里面嵌入Java代码,这大大加强了表达能力,模板和Java语言的互操作性也有较大提升。基于同样的考虑,在前端开发中、也大量依靠JSX等模板语言来构建UI组件。

目前的开发流程中,开发者需要同时管理Java、模板文档、JavaScript和JSX等多种代码资产,虽然模板文档可以部分缓解HTML文档表达能力不足的缺点,但是无法从根本上降低开发者的负担。

发明内容

针对目前的开发流程中,开发者需要同时管理Java、模板文档、JavaScript和JSX等多种代码资产,虽然模板文档可以部分缓解HTML文档表达能力不足的缺点,但是无法从根本上降低开发者的负担的问题,本发明提供一种可扩展的GUI文档渲染框架的设计方法及装置。

本发明的技术方案是:

一方面,本发明提供一种可扩展的GUI标记文档渲染框架的设计方法,包括如下步骤:

收集编写通用语言的代码所提供的标记语言的信息;

将收集的标记语言的信息进行转换处理;

根据转换处理后的信息生成标记语言文档。

优选地,收集编写通用语言的代码所提供的标记语言的信息的步骤之前还包括:编写通用语言的代码时表示出标记语言的信息;其中,通用语言包括Java和C#;标记语言包括HTML。

优选地,标记语言的信息包括元素、元素的属性、属性值以及元素之间的嵌套结构。

优选地,所述的收集编写通用语言的代码所提供的标记语言的信息的步骤包括:

通过访问者模式或者监听者模式收集编写通用语言的代码所提供的标记语言的信息。访问者模式,表示主动获取相关信息并作处理,信息处理者主动从信息源拉取(PULL)信息。监听者模式,表示被动获取相关信息并作处理,信息源推送(PUSH)信息到信息处理者,一般通过事件机制来实现。

优选地,通过监听者模式收集编写通用语言的代码所提供的标记语言的信息,该方法的具体步骤包括:

编写Java代码并用Java语言定义出所有的HTML文档元素;

使用Java语言的实例初始化语句块编写HTML信息;

调用各个元素的toString方法,生成HTML文档。

优选地,将收集的标记语言的信息进行转换处理的步骤包括:

根据收集到的HTML信息建构AST结构;AST结构来表示生成HTML文档前,HTML信息所存在的某种中间形式,包含了生成HTML文档所需的全部信息;

对AST结构进行相关的处理和转换,生成新的AST结构;

根据转换处理后的信息生成标记语言文档的步骤中是:根据转换处理后新的AST结构中所包含的信息,生成HTML文档。

优选地,在不影响最终HTML文档所呈现的UI外观的前提下,先对AST结构做一系列的转换;对AST结构进行相关的处理和转换,生成新的AST结构的步骤具体包括:

将HTML元素的嵌套层次进行删除、合并;

将用户自定义的HTML元素转换为标准的HTML元素;

将旧版本HTML标准中的元素转换成新版本HTML标准中添加的新HTML元素生成新的AST结构。

优选地,通过访问者模式读取AST结构中信息,对AST结构进行相关的处理和转换,生成新的AST结构,根据新的AST结构中所包含的信息,生成HTML文档,该方法具体包括:

用Java语言的JavaBean中定义出所有的HTML文档元素所需要的信息;

收集上一步所提供的信息,构建AST结构;

利用JavaBean提供的信息,将其数据转换成HTML文档。

另一方面,本发明还一种可扩展的GUI标记文档渲染框架的设计装置,包括汇集器、转换器和生成器;

汇集器,用于收集编写通用语言的代码所提供的标记语言的信息;

转换器,用于根据汇集器收集的标记语言的信息进行处理和转换;

生成器,用于根据转换器转换处理后的信息来生成标记语言文档。

优选地,转换器,还用于根据收集到的HTML信息建构AST结构;并对AST结构进行相关的处理和转换,生成新的AST结构。

从以上技术方案可以看出,本发明具有以下优点:可扩展的GUI标识文档渲染框架,在提供类型安全和灵活的表达能力的基础上,同时保持了类似与标记语言文档的声明式语法,比较适合编写UI代码,还能大幅提高开发者的生产力。

此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。

由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一个实施例的方法的示意性流程图。

图2是本发明另一个实施例的方法的示意性流程图。

具体实施方式

为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

下面对本发明中出现的术语进行解释:

Abstract Syntax Tree(AST):抽象语法树;

visitor pattern:访问者模式;

observer pattern:监听者模式;

instance initialization block(IIB):实例初始化语句块;

object initializer(OIS):对象初始值设定项;

collection initializer(CIS):集合初始值设定项;

如图1所示,本发明实施例提供一种可扩展的GUI标记文档渲染框架的设计方法,包括如下步骤:

S1:收集编写通用语言的代码所提供的标记语言的信息;

S2:将收集的标记语言的信息进行转换处理;

S3:根据转换处理后的信息生成标记语言文档。

通用编程语言的代表有C、Java和C#等,本专利文件主要用Java来说明本发明的意图,但不代表本发明只限定在Java技术。标记语言的代表有HTML、XAML和JSX等,本专利主要用HTML来说明本发明的意图,但不代表本发明只限定在HTML技术;

在Java代码中,包含了生成HTML文档的所有信息,具体包括元素、元素的属性、属性值以及元素之间的嵌套结构。

需要说明的是,在有些实施例中,通过访问者模式或者监听者模式收集编写通用语言的代码所提供的标记语言的信息。访问者模式,表示主动获取相关信息并作处理,信息处理者主动从信息源拉取(PULL)信息。监听者模式,表示被动获取相关信息并作处理,信息源推送(PUSH)信息到信息处理者,一般通过事件机制来实现。

通过监听者模式收集编写通用语言的代码所提供的标记语言的信息,该方法的具体步骤包括:

(1)编写Java代码并用Java语言定义出所有的HTML文档元素;

下面举一些例子:

a.HTML的head部分

作为例子、定义常用的title元素。

然后定义head元素。

b.HTML的body部分先定义下面所需要的父类。

class Element{

String text;

}

然后,作为例子、定义常用的div元素。

Figure BDA0002537066280000091

最后定义body元素。

Figure BDA0002537066280000101

c.HTML的根节点

Figure BDA0002537066280000102

(2)使用Java语言的实例初始化语句块编写HTML信息;如果用的是C#语言,可以用OIS/CIS来代替;

使用上面(1)中定义的元素,写一个HTML信息的例子:

Figure BDA0002537066280000111

(3)调用各个元素的toString方法,生成HTML文档。

Figure BDA0002537066280000121

如图2所示,有些实施例中,所述的将收集的标记语言的信息进行转换处理的步骤还包括:

S21:根据收集到的HTML信息建构AST结构;AST结构来表示生成HTML文档前,HTML信息所存在的某种中间形式,包含了生成HTML文档所需的全部信息;

S22:对AST结构进行相关的处理和转换,生成新的AST结构;相应的步骤S3中是根据新的AST结构中所包含的信息,生成HTML文档。

需要说明的是,在不影响最终HTML文档所呈现的UI外观的前提下,先对AST结构做一系列的转换;对AST结构进行相关的处理和转换的步骤具体包括:

将HTML元素的嵌套层次进行删除、合并;将用户自定义的HTML元素转换为标准的HTML元素;将旧版本HTML标准中的元素转换成新版本HTML标准中添加的新HTML元素,生成新的AST结构。

有些实施例中,通过注解来提供相关信息,Java中的注解(annotation)和C#中的特性(attribute)是一种声明式语法,通过这种语法可以给程序添加元数据,收集这些相关的元数据;通过访问者模式读取AST结构中信息,对AST结构进行相关的处理和转换,生成新的AST结构,根据新的AST结构中所包含的信息,生成HTML文档,该方法具体包括:

(a)用Java语言的JavaBean中定义出所有的HTML文档元素所需要的信息;

定义table元素所需的JavaBean

先定义tr元素和td元素所需的JavaBean。

最后定义table元素所需的JavaBean。

(b)收集步骤(a)所提供的信息,构建AST结构;在Java中通过Field.getDeclaredAnnotations()等相关的反射(reflection)API来获取上一步提供的相关的信息,构建AST结构;

(c)利用JavaBean提供的信息,将其数据转换成HTML文档。

现在后端大量使用Spring Framework来开发Java程序,在典型的Spring MVC项目中,控制器(Controller)会返回数据JavaBean。为了进一步简化开发流程,可以给这些JavaBean加上如步骤(a)中的注解,然后使用Spring Framework的过滤器(filter)等机制,拦截控制器的返回值,然后生成器利用JavaBean提供的信息,自动地将其数据转换成HTML文档。

时代不断在发展,HTML标准也在不断更新,浏览器之间也会有各种各样的差异,考虑这其中的各种细节给开发者带来了沉重的负担。本发明的生成器的任务是、根据AST结构生成HTML文档,在工作的时候可以根据一定的规则进行转换,来照顾到这些细节,减轻开发者的负担。这个转换的过程是非常具有扩展性的。

HTML标准中定义了datetime-local类型的输入控件(input),chrome浏览器支持这个控件,但是Firefox浏览器目前把它显示成普通的输入控件。下面以这个控件为例,说明如何通过扩展生成器来兼容不同的浏览器。

(i)获取当前访问者所使用的浏览器:

浏览器请求中一般会在头部信息UA中包含浏览器的信息,在Java开发中、可以通过Servlet容器的HttpServletRequest.getHeader("User-Agent")来获取这个信息。Firefox浏览的UA中会包含Mozilla字样,以此来判断当前浏览器是不是需要特殊处理。

(ii)通过扩展的规则来做转换:

如果当前的浏览器是Firefox,那么生成器找到AST结构中所有的datetime-local类型的输入控件,将其转换成一个date类型的输入控件加上一个time类型的输入控件。执行完所有的转换后,再生成HTML文档,这样Firefox浏览器也能很好地给用户展示这种输入控件。

本发明实施例还提供还一种可扩展的GUI标记文档渲染框架的设计装置,包括汇集器、转换器和生成器;

汇集器,用于收集编写通用语言的代码所提供的标记语言的信息;

转换器,用于根据汇集器收集的标记语言的信息进行处理和转换;

生成器,用于根据转换器转换处理后的信息来生成标记语言文档。

需要进一步说明的是,转换器,还用于根据收集到的HTML信息建构AST结构;并对AST结构进行相关的处理和转换,生成新的AST结构。

尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种磁卡数据的处理方法及系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!