界面开发方法及装置与流程

文档序号:15557411发布日期:2018-09-29 01:27阅读:218来源:国知局

本发明涉及计算机的技术领域,尤其是涉及一种界面开发方法及装置。



背景技术:

传统的pc客户端界面开发一般采用如下方式:一种是采用c++语言,mfc框架进行开发。mfc框架提供了多种常见的与操作系统原生界面风格一致的控件,比如按钮控件、列表控件、多选控件、单选控件等。很多项目中原生界面风格的控件难以满足美观要求,需要对控件进行大量的定制美化工作。另一种是采用c#语言,winform框架进行开发。winform与mfc类似,提供了多种与操作系统原生界面风格一致的控件,并且提供了比mfc更加强大的功能,但是依然难以满足当代软件对界面的美观要求,仍然需要对控件进行大量的定制美化工作。

由于当代软件对界面美观的要求越来越高,而传统的框架只是提供了与操作系统原生界面风格一致的控件。想开发出漂亮的界面,就需要对控件进行定制美化,一般采用控件子类化方法,调用系统底层绘制api,绘制出符合设计师设计的控件。往往为了实现一个看似简单的效果(比如控件边框阴影、边缘发光等),需要写上百行甚至上千行代码,工作量大,开发周期长。

传统的软件开发框架并没有将界面与业务逻辑彻底分离出来,很多分离的工作需要程序员自行编写。实际项目中往往工期比较赶,团队人员水平参差不齐,导致界面与业务逻辑耦合在一起,耦合度高的代码难以分工并行。

传统的开发语言语法复杂庞大,需要有多年实践经验才能熟练掌握。由于传统的开发方法需要对控件进行大量的定制美化,导致界面代码庞大臃肿,修改界面需要修改大量的代码,修改之后还需要大量的测试修正工作,项目维护工作量大,难度高。

综上,现有的界面开发方法工作量大,开发周期长,且界面与业务逻辑难以分离,修改界面时工作量大,项目后期维护困难。



技术实现要素:

有鉴于此,本发明的目的在于提供一种界面开发方法及装置,以缓解现有的界面开发方法工作量大,开发周期长,且界面与业务逻辑难以分离,修改界面时工作量大,项目后期维护困难的技术问题。

第一方面,本发明实施例提供了一种界面开发方法,所述方法包括:

采用c++封装开源的浏览器引擎,得到界面引擎核心模块,其中,所述界面引擎核心模块为独立的应用程序库;

采用所述界面引擎核心模块在图形用户界面进程中独立出页面渲染和脚本运行,并将所述页面渲染和所述脚本运行存储至页面引擎进程中;

对所述界面引擎核心模块进行封装,得到界面引擎工具控件,其中,所述界面引擎工具控件提供了c++与脚本的交互接口,且当实例化一个界面引擎工具控件便会创建一个页面引擎进程;

在所述页面引擎进程中进行所述页面渲染和所述脚本运行,且所述页面引擎进程与所述界面引擎工具控件进行异步通信,得到与业务逻辑分离的界面。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述开源的浏览器引擎包括:chromium引擎。

结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述页面渲染包括:html/css渲染。

结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述异步通信的格式包括:jison格式,所述脚本运行包括:javascript运行。

结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,在对所述界面引擎核心模块进行封装,得到界面引擎工具控件之后,所述方法还包括:

将所述界面引擎工具控件存储至应用进程中。

结合第一方面,本发明实施例提供了第一方面的第五种可能的实施方式,其中,在与业务逻辑分离的界面中,界面运行在页面引擎进程中,业务逻辑运行在应用进程中。

第二方面,本发明实施例还提供一种界面开发装置,所述装置包括:

第一封装模块,用于采用c++封装开源的浏览器引擎,得到界面引擎核心模块,其中,所述界面引擎核心模块为独立的应用程序库;

独立模块,用于采用所述界面引擎核心模块在图形用户界面进程中独立出页面渲染和脚本运行,并将所述页面渲染和所述脚本运行存储至页面引擎进程中;

第二封装模块,用于对所述界面引擎核心模块进行封装,得到界面引擎工具控件,其中,所述界面引擎工具控件提供了c++与脚本的交互接口,且当实例化一个界面引擎工具控件便会创建一个页面引擎进程;

渲染运行模块,用于在所述页面引擎进程中进行所述页面渲染和所述脚本运行,且所述页面引擎进程与所述界面引擎工具控件进行异步通信,得到与业务逻辑分离的界面。

结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述开源的浏览器引擎包括:chromium引擎。

结合第二方面,本发明实施例提供了第二方面的第二种可能的实施方式,其中,所述页面渲染包括:html/css渲染。

结合第二方面,本发明实施例提供了第二方面的第三种可能的实施方式,其中,所述异步通信的格式包括:jison格式,所述脚本运行包括:javascript运行。

本发明实施例带来了以下有益效果:本发明实施例提供了一种界面开发方法及装置,该方法包括:采用c++封装开源的浏览器引擎,得到界面引擎核心模块,其中,界面引擎核心模块为独立的应用程序库;采用界面引擎核心模块在图形用户界面进程中独立出页面渲染和脚本运行,并将页面渲染和脚本运行存储至页面引擎进程中;对界面引擎核心模块进行封装,得到界面引擎工具控件,其中,界面引擎工具控件提供了c++与脚本的交互接口,且当实例化一个界面引擎工具控件便会创建一个页面引擎进程;在页面引擎进程中进行页面渲染和脚本运行,且页面引擎进程与界面引擎工具控件进行异步通信,得到与业务逻辑分离的界面。

现有技术在进行界面开发的过程中,利用框架提供的与操作系统原生界面风格一致的控件进行开发,工作量大,开发周期长,且界面与业务逻辑难以分离,修改界面时工作量大,项目后期维护困难。与现有的界面开发相比,本发明实施例的界面开发方法中,先采用c++封装开源的浏览器引擎,得到界面引擎核心模块,进而采用界面引擎核心模块在图形用户界面进程中独立出页面渲染和脚本运行,并将页面渲染和脚本运行存储至页面引擎进程中,进一步对界面引擎核心模块进行封装,得到界面引擎工具控件,最后在页面引擎进程中进行页面渲染和脚本运行,且页面引擎进程与界面引擎工具控件进行异步通信,得到与业务逻辑分离的界面。该方法可以采用页面渲染和脚本运行进行前端技术开发界面,c++开发业务逻辑,界面与业务逻辑彻底分离,项目后期维护简单,页面渲染和脚本运行有大量免费开源组件,所以可以极大地提高界面开发效率,缓解了现有的界面开发方法工作量大,开发周期长,且界面与业务逻辑难以分离,修改界面时工作量大,项目后期维护困难的技术问题。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

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

图1为本发明实施例提供的一种界面开发方法的流程图;

图2为本发明实施例提供的另一种界面开发方法的流程图;

图3为本发明实施例提供的界面开发方法的示意图;

图4为本发明实施例提供的一种界面开发装置的功能模块图。

图标:

11-第一封装模块;12-独立模块;13-第二封装模块;14-渲染运行模块。

具体实施方式

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

为便于对本实施例进行理解,首先对本发明实施例所公开的一种界面开发方法进行详细介绍。

实施例一:

一种界面开发方法,参考图1,该方法包括:

102、采用c++封装开源的浏览器引擎,得到界面引擎核心模块,其中,界面引擎核心模块为独立的应用程序库;

在本发明实施例中,该开源的浏览器引擎包括chromium引擎。chromium是由google主导开发的网页浏览器。以bsd许可证等多重自由版权发行并开放源代码,chromium的开发可能早自2006年即开始。chromium是google的chrome浏览器背后的引擎,其目的是为了创建一个安全、稳定和快速的通用浏览器。

采用c++封装开源的浏览器引擎,就能够得到界面引擎核心模块,具体的为webenginecore模块,该模块时一个独立的应用程序库,封装了与chromium引擎的交互。

因为chromium内核本身就具备渲染html/css,运行javascript,进程间异步通信的功能,所以在此基础上进行封装的webenginecore模块本身也具备了相关功能,并且该模块能对外提供诸如访问cookie,历史记录,获取网页内容,刷新等api。

104、采用界面引擎核心模块在图形用户界面进程中独立出页面渲染和脚本运行,并将页面渲染和脚本运行存储至页面引擎进程中;

在得到界面引擎核心模块(即webenginecore模块)后,使用界面引擎核心模块将页面渲染和脚本运行从图形用户界面进程(gui进程)中独立出来,放到名为页面引擎进程(webengineprocess)中。

在本发明实施例中,页面渲染包括:html/css渲染。

脚本运行包括:javascript运行。

javascript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为javascript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在html(标准通用标记语言下的一个应用)网页上使用,用来给html网页增加动态功能。

106、对界面引擎核心模块进行封装,得到界面引擎工具控件,其中,界面引擎工具控件提供了c++与脚本的交互接口,且当实例化一个界面引擎工具控件便会创建一个页面引擎进程;

在得到界面引擎核心模块后,在界面引擎核心模块(即webenginecore模块)的基础上封装出界面引擎工具(即webenginewidgets)控件该控件提供了c++与javascript的交互接口。

108、在页面引擎进程中进行页面渲染和脚本运行,且页面引擎进程与界面引擎工具控件进行异步通信,得到与业务逻辑分离的界面。

在得到界面引擎工具控件后,在页面引擎进程(webengineprocess)中进行页面渲染和脚本运行,即渲染html/css,运行javascript,能够与应用进程中的因为逻辑c++交互。

异步通信的格式包括:jison格式。具体的,利用chromium内核提供的异步ipc机制,使用json格式,可以方便的进行进程间的异步通信。由于webenginecore封装了chromium内核,所以使用webenginecore模块的webenginewidgets和webengineprocess都具备了进程间异步通信的相关功能。

与业务逻辑分离的界面中,界面运行在页面引擎进程中,业务逻辑运行在应用进程中。

可选地,参考图2,在对界面引擎核心模块进行封装,得到界面引擎工具控件之后,该方法还包括:

s107、将界面引擎工具控件存储至应用进程中。

现有技术在进行界面开发的过程中,利用框架提供的与操作系统原生界面风格一致的控件进行开发,工作量大,开发周期长,且界面与业务逻辑难以分离,修改界面时工作量大,项目后期维护困难。与现有的界面开发相比,本发明实施例的界面开发方法中,先采用c++封装开源的浏览器引擎,得到界面引擎核心模块,进而采用界面引擎核心模块在图形用户界面进程中独立出页面渲染和脚本运行,并将页面渲染和脚本运行存储至页面引擎进程中,进一步对界面引擎核心模块进行封装,得到界面引擎工具控件,最后在页面引擎进程中进行页面渲染和脚本运行,且页面引擎进程与界面引擎工具控件进行异步通信,得到与业务逻辑分离的界面。该方法可以采用页面渲染和脚本运行进行前端技术开发界面,c++开发业务逻辑,界面与业务逻辑彻底分离,项目后期维护简单,页面渲染和脚本运行有大量免费开源组件,所以可以极大地提高界面开发效率,缓解了现有的界面开发方法工作量大,开发周期长,且界面与业务逻辑难以分离,修改界面时工作量大,项目后期维护困难的技术问题。

下面以通俗的语言对本发明实施例中的界面开发方法进行详细介绍:

1、采用c++语言对开源的chromium进行封装,得到webenginecore模块。该模块是一个独立的应用程序库,封装了与chromium的交互。利用chromium内核本身具备渲染html/css,运行javacript,进程间异步通信的功能,在此基础上进行封装的webenginecore模块本身也具备了相关功能,并对外提供了诸如访问cookie,历史记录,获取网页内容,刷新等api。

2、使用webenginecore模块,将页面(html/css)渲染和运行javascript从gui进程独立出来,放到名为webengineprocess的进程当中。

3、在webenginecore模块的基础上封装出webenginewidgets控件,该控件提供了c++与javasript交互接口,该控件存储于applicationprocess进程中。用户只需实例化一个webenginewidgets控件便会创建一个webengineprocess进程,在webengineprocess进程渲染html/css,运行javascript,并且与c++交互。

4、利用chromium内核提供的异步ipc机制,使用json格式,可以方便的进行进程间的异步通信。由于webenginecore封装了chromium内核,所以使用webenginecore模块的webenginewidgets和webengineprocess都具备了进程间异步通信的相关功能。

5、在之前基础上,用户只需在应用程序中创建webenginewidgets控件,就可以把界面与业务逻辑分离到两个独立的进程当中,界面运行在webengineprocess进程中,业务逻辑运行在applicationprocess进程中。此时,便可以采用html/css,javacript前端技术开发界面,c++开发业务逻辑,界面与业务逻辑彻底分离。由于html/css,javascript有大量免费开源的组件,可以极大的提高界面开发效率,且html/css、javascript相对简单易学,较容易上手,方便开发团队的组建,解决了传统界面开发方式中开发难度大效率低,界面与业务逻辑耦合,项目难以维护等的痛点。

参考图3,图3中即为界面开发方法的示意图。

本发明实施例中的界面开发方法具有以下优点:

1、界面采用html/css、javascript开发,有大量组件可复用,开发界面效率高;

2、界面与业务逻辑彻底分离,方便分工并行;

3、界面修改容易,程序不需要重新编译,对开发人员要求较低,维护方便;

4、方便跨平台。

实施例二:

一种界面开发装置,参考图4,该装置包括:

第一封装模块11,用于采用c++封装开源的浏览器引擎,得到界面引擎核心模块,其中,界面引擎核心模块为独立的应用程序库;

独立模块12,用于采用界面引擎核心模块在图形用户界面进程中独立出页面渲染和脚本运行,并将页面渲染和脚本运行存储至页面引擎进程中;

第二封装模块13,用于对界面引擎核心模块进行封装,得到界面引擎工具控件,其中,界面引擎工具控件提供了c++与脚本的交互接口,且当实例化一个界面引擎工具控件便会创建一个页面引擎进程;

渲染运行模块14,用于在页面引擎进程中进行页面渲染和脚本运行,且页面引擎进程与界面引擎工具控件进行异步通信,得到与业务逻辑分离的界面。

本发明实施例的界面开发装置中,先采用c++封装开源的浏览器引擎,得到界面引擎核心模块,进而采用界面引擎核心模块在图形用户界面进程中独立出页面渲染和脚本运行,并将页面渲染和脚本运行存储至页面引擎进程中,进一步对界面引擎核心模块进行封装,得到界面引擎工具控件,最后在页面引擎进程中进行页面渲染和脚本运行,且页面引擎进程与界面引擎工具控件进行异步通信,得到与业务逻辑分离的界面。该装置可以采用页面渲染和脚本运行进行前端技术开发界面,c++开发业务逻辑,界面与业务逻辑彻底分离,项目后期维护简单,页面渲染和脚本运行有大量免费开源组件,所以可以极大地提高界面开发效率,缓解了现有的界面开发方法工作量大,开发周期长,且界面与业务逻辑难以分离,修改界面时工作量大,项目后期维护困难的技术问题。

可选地,开源的浏览器引擎包括:chromium引擎。

可选地,页面渲染包括:html/css渲染。

可选地,异步通信的格式包括:jison格式,脚本运行包括:javascript运行。

可选地,该装置还包括:

存储模块,用于将界面引擎工具控件存储至应用进程中。

可选地,在与业务逻辑分离的界面中,界面运行在页面引擎进程中,业务逻辑运行在应用进程中。

本发明实施例所提供的界面开发方法及装置的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1