CN116700694B - 小程序引擎 - Google Patents
小程序引擎 Download PDFInfo
- Publication number
- CN116700694B CN116700694B CN202310984521.4A CN202310984521A CN116700694B CN 116700694 B CN116700694 B CN 116700694B CN 202310984521 A CN202310984521 A CN 202310984521A CN 116700694 B CN116700694 B CN 116700694B
- Authority
- CN
- China
- Prior art keywords
- unit
- rendering
- applet
- event
- module
- 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.)
- Active
Links
- 238000009877 rendering Methods 0.000 claims abstract description 101
- 230000004044 response Effects 0.000 claims abstract description 26
- 238000012545 processing Methods 0.000 claims abstract description 24
- 238000004891 communication Methods 0.000 claims abstract description 10
- 230000002452 interceptive effect Effects 0.000 claims description 22
- 230000003993 interaction Effects 0.000 claims description 8
- 230000000694 effects Effects 0.000 claims description 7
- 238000000034 method Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 claims description 5
- 230000002194 synthesizing effect Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 46
- 238000010586 diagram Methods 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- 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/33—Intelligent editors
-
- 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/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本公开的实施例提供一种小程序引擎。小程序引擎包括:小程序层、框架层、以及系统接口层。其中,小程序层被配置为:生成目标事件。框架层包括逻辑模块和视图模块。其中,逻辑模块被配置为:处理目标事件中的业务事件中的逻辑操作。视图模块被配置为:处理目标事件中的显示操作,根据显示操作来生成渲染指令,以及向系统接口层发送渲染指令。系统接口层被配置为:为逻辑模块和视图模块提供消息通信接口以便逻辑模块与视图模块进行通信;为运行小程序引擎的平台提供系统事件接口以便平台根据系统事件执行系统操作;以及响应于接收到渲染指令,直接调用平台所使用的渲染器来执行渲染指令。
Description
技术领域
本公开的实施例涉及计算机技术领域,具体地,涉及小程序引擎。
背景技术
随着智能手机的普及,移动应用的重要性越来越凸显。小程序作为一种新的移动应用形态越来越流行。开发小程序并不是一件容易的事情。因为小程序中包含了许多与平台交互、数据渲染和组件布局等相关的代码,这些代码需要耗费大量的时间和精力进行编写、测试和维护。为了让小程序开发者能够更加便捷地开发小程序,小程序引擎应运而生。小程序引擎是一种为了帮助开发者更快速且高效地创建小程序的开发框架。
发明内容
本文中描述的实施例提供了一种小程序引擎。
根据本公开的第一方面,提供了一种小程序引擎。小程序引擎包括:小程序层、框架层、以及系统接口层。其中,小程序层被配置为:生成目标事件。框架层包括逻辑模块和视图模块。其中,逻辑模块被配置为:处理目标事件中的业务事件中的逻辑操作。视图模块被配置为:处理目标事件中的显示操作,根据显示操作来生成渲染指令,以及向系统接口层发送渲染指令。系统接口层被配置为:为逻辑模块和视图模块提供消息通信接口以便逻辑模块与视图模块进行通信;为运行小程序引擎的平台提供系统事件接口以便平台根据系统事件执行系统操作;以及响应于接收到渲染指令,直接调用平台所使用的渲染器来执行渲染指令。
在本公开的一些实施例中,视图模块包括:渲染子模块、以及资源管理单元。其中,渲染子模块被配置为:根据显示操作来生成渲染指令,以及向系统接口层发送渲染指令。资源管理单元被配置为:调度显示操作所需的系统资源。
在本公开的一些实施例中,渲染子模块包括:元素属性确定单元、外观参数设置单元、以及动画呈现单元。其中,元素属性确定单元被配置为:解析显示操作所涉及的元素的属性,并根据元素的属性来生成第一渲染指令。外观参数设置单元被配置为:解析显示操作所涉及的元素的外观参数,并根据元素的外观参数来生成第二渲染指令。动画呈现单元被配置为:解析显示操作所涉及的元素的动画参数,并根据元素的动画参数来生成第三渲染指令。其中,第一渲染指令和第二渲染指令用于直接调用渲染器按照属性和外观参数来呈现元素。第三渲染指令用于直接调用渲染器按照动画参数来呈现元素的动画效果。
在本公开的一些实施例中,渲染子模块还包括:交互响应单元。其中,交互响应单元被配置为:解析目标事件中的交互事件中的显示操作所涉及的元素的交互响应显示参数,并根据元素的交互响应显示参数来生成第四渲染指令。其中,第四渲染指令用于直接调用渲染器按照交互响应显示参数来呈现元素的交互响应显示效果。
在本公开的一些实施例中,视图模块还包括:第一JavaScript引擎单元、以及第一原生函数绑定单元。其中,第一JavaScript引擎单元被配置为:确定交互事件中的逻辑操作需要调用的第一原生函数。第一原生函数绑定单元被配置为:调用第一原生函数以处理交互事件中的逻辑操作。
在本公开的一些实施例中,视图模块还包括:网页应用接口单元。其中,网页应用接口单元被配置为:提供封装的网页应用程序编程接口,网页应用程序编程接口能够适配平台的网页视图层。
在本公开的一些实施例中,逻辑模块包括:第二JavaScript引擎单元、以及第二原生函数绑定单元。其中,第二JavaScript引擎单元被配置为:确定业务事件中的逻辑操作需要调用的第二原生函数。第二原生函数绑定单元被配置为:调用第二原生函数以处理业务事件中的逻辑操作。
在本公开的一些实施例中,逻辑模块还包括:路由管理单元。其中,路由管理单元被配置为:响应于目标事件中的跳转事件,根据跳转事件中的路由地址来执行定向跳转。
在本公开的一些实施例中,逻辑模块还包括:第一生命周期管理单元。其中,第一生命周期管理单元被配置为:对小程序引擎的应用程序级别的生命周期、页面级别的生命周期以及组件级别的生命周期进行管理。
在本公开的一些实施例中,系统接口层包括:渲染执行单元、渲染合成单元、消息处理单元、系统事件处理单元、服务协议单元、以及第二生命周期管理单元。其中,渲染执行单元被配置为:直接调用渲染器来执行渲染指令。渲染合成单元被配置为:合成多个页面的渲染结果。消息处理单元被配置为:提供消息通信接口,逻辑模块与视图模块经由消息通信接口进行通信。系统事件处理单元被配置为:提供系统事件接口,平台经由系统事件接口来接收系统事件。服务协议单元被配置为:定义小程序引擎内部的消息通信协议,以及只允许符合消息通信协议的消息被传递。第二生命周期管理单元被配置为:对框架层的生命周期进行管理。
在本公开的一些实施例中,逻辑模块和视图模块通过双线程架构来实现。
附图说明
为了更清楚地说明本公开的实施例的技术方案,下面将对实施例的附图进行简要说明,应当知道,以下描述的附图仅仅涉及本公开的一些实施例,而非对本公开的限制,其中:
图1是根据本公开的实施例的小程序引擎的示意性结构图;
图2是根据本公开的实施例的小程序引擎的进一步的示意性结构图;以及
图3是根据本公开的实施例的小程序引擎与平台的示意性关系图。
需要注意的是,附图中的元素是示意性的,没有按比例绘制。
具体实施方式
为了使本公开的实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本公开的实施例的技术方案进行清楚、完整的描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域技术人员在无需创造性劳动的前提下所获得的所有其它实施例,也都属于本公开保护的范围。
除非另外定义,否则在此使用的所有术语(包括技术和科学术语)具有与本公开主题所属领域的技术人员所通常理解的相同含义。进一步将理解的是,诸如在通常使用的词典中定义的那些的术语应解释为具有与说明书上下文和相关技术中它们的含义一致的含义,并且将不以理想化或过于正式的形式来解释,除非在此另外明确定义。如在此所使用的,将两个或更多部分“连接”或“耦接”到一起的陈述应指这些部分直接结合到一起或通过一个或多个中间部件结合。另外,诸如“第一”和“第二”的术语仅用于将一个部件(或部件的一部分)与另一个部件(或部件的另一部分)区分开。
现有的小程序架构通常是双线程的,其可包括用于执行JavaScript(JS)逻辑的JavaScript引擎(JavaScriptEngine)和用于执行渲染逻辑的网页视图层(WebView)。JavaScriptEngine和WebView都预先内置于操作系统中。然而,不同应用环境对WebView的支持程度不同,WebView的碎片化严重,对兼容性的要求较多。而且WebView占用的内存较高,一些低配置的硬件设备没有足够的内存支持WebView。一些老旧硬件设备(例如,早期的门禁面板)甚至没有预置WebView,因此小程序在这些老旧硬件设备上无法执行渲染操作。另外,不同应用环境的JavaScriptEngine无法做到统一,因此一旦小程序需要更新或者维护,则需要针对每个应用环境都重新调整小程序的代码,费时费力。
本公开提出了一种小程序引擎,其能够支持没有预置WebView的运行环境,并且对内存的要求较低。
图1示出根据本公开的实施例的小程序引擎100的示意性结构。小程序引擎100能够作为开发框架来帮助创建各种小程序。小程序引擎100包括:小程序层110、框架层120、以及系统接口层130。小程序层110是小程序开发者能够自主开发的层。框架层120和系统接口层130在各个小程序应用中都是统一的。
小程序层110被配置为:生成目标事件,并向框架层120发送目标事件。目标事件是为了实现小程序的目标功能而发生的事件。目标事件可包括:业务事件、交互事件、以及跳转事件。每个目标事件可包括多个操作,例如,逻辑操作和渲染操作。具体地,业务事件可包括逻辑操作和渲染操作。交互事件可包括逻辑操作和渲染操作。跳转事件可包括逻辑操作和渲染操作。在本文中,业务事件是指在业务决策正常运行过程中发生的事件。交互事件是指用户与小程序进行交互的过程中发生的事件。跳转事件是指小程序的页面发生跳转的事件。
框架层120能够与小程序层110相互通信。框架层120包括逻辑模块121和视图模块122。其中,逻辑模块121被配置为:处理目标事件中的业务事件中的逻辑操作。视图模块122被配置为:处理目标事件中的显示操作,根据显示操作来生成渲染指令,以及向系统接口层130发送渲染指令。在本公开的一些实施例中,“处理目标事件中的显示操作”可包括:调度显示操作所需的系统资源、管理生命周期等。“根据显示操作来生成渲染指令”可包括:根据显示操作来确定要调用的渲染函数。“向系统接口层130发送渲染指令”可包括:调用系统接口层130中的渲染函数以执行显示操作中的渲染步骤。
在本公开的一些实施例中,逻辑模块121和视图模块122通过双线程架构来实现。
系统接口层130能够与框架层120相互通信。出于安全考虑,框架层120中的逻辑模块121和视图模块122不在框架层120内部直接通信。系统接口层130被配置为:为逻辑模块121和视图模块122提供消息通信接口以便逻辑模块121与视图模块122进行通信。在逻辑模块121需要向视图模块122发送数据的情况下,逻辑模块121向系统接口层130发送该数据,系统接口层130再将该数据传递给视图模块122。在视图模块122需要向逻辑模块121发送数据的情况下,视图模块122向系统接口层130发送该数据,系统接口层130再将该数据传递给逻辑模块121。这样,在使用小程序引擎100创建的小程序被安全审核的过程中,便于对小程序的整体功能进行安全扫描,避免有遗漏。另外,在逻辑模块121受到攻击者攻击的情况下,也不会让用户看到逻辑模块121与视图模块122的通信内容。
在本公开的一些实施例中,实现系统接口层130的编程语言比实现框架层120的编程语言更低级。在本公开的一些实施例中,系统接口层130采用C++语言来编写,框架层120采样Dart语言来编写。
系统接口层130也能够与运行小程序引擎100的系统(运行小程序引擎100的硬件设备所使用的操作系统)相互通信。系统接口层130还被配置为:为运行小程序引擎100的平台(即,运行小程序的平台,该小程序是通过小程序引擎100来实现的)提供系统事件接口以便平台根据系统事件执行系统操作。在这里,平台可以是现有的小程序平台,例如,微信小程序平台、支付宝小程序平台等,也可以是小程序开发商自己开发的小程序平台。平台可预置有原生层NATIVE。原生层NATIVE包括原生函数。原生函数是操作系统本身的函数。可通过调用原生函数来执行系统操作。
系统接口层130还可被配置为:响应于接收到渲染指令,直接调用平台所使用的渲染器来执行渲染指令。在本公开的一些实施例中,视图模块122可调用系统接口层130中的渲染函数,该渲染函数可直接调用平台所使用的渲染器(例如,OpenGL)来绘制组件。
这样,根据本公开的实施例的小程序引擎相当于提供了一个渲染容器,能够跨平台直接支持渲染网页的组件。相比于使用WebView的小程序架构,根据本公开的实施例的小程序引擎占用的内存更少,因此能够适用于更多的应用场景。此外,根据本公开的实施例的小程序引擎还能够提供跨平台的统一系统事件接口,这样能够在多个平台上运行。在需要进行平台移植或者进行小程序维护或升级时,小程序开发者不需要针对每个平台都修改一遍小程序的代码,因此其工作量能够大幅减小,节省了人力成本。
图2示出根据本公开的实施例的小程序引擎100的内部结构。
小程序层110可包括:逻辑层211和视图层212。小程序开发者可根据小程序要实现的功能来在逻辑层211和视图层212中定义目标函数,从而通过小程序层110来生成目标事件。
视图模块122可包括:渲染子模块2221、资源管理单元2222、第一JavaScript引擎单元2223、以及第一原生函数绑定单元2224。
渲染子模块2221被配置为:根据显示操作来生成渲染指令,以及向系统接口层130发送渲染指令。在本公开的一些实施例中,渲染子模块2221可包括:元素属性确定单元22211、外观参数设置单元22212、以及动画呈现单元22213。
元素属性确定单元22211被配置为:解析显示操作所涉及的元素的属性,并根据元素的属性来生成第一渲染指令。元素的属性例如指示该元素是表单,框,还是按钮。
外观参数设置单元22212被配置为:解析显示操作所涉及的元素的外观参数,并根据元素的外观参数来生成第二渲染指令。元素的外观参数例如是该元素的级联样式表(CSS)。
动画呈现单元22213被配置为:解析显示操作所涉及的元素的动画参数,并根据元素的动画参数来生成第三渲染指令。元素的动画参数例如是用于指示该元素要实现的动画效果的参数。
其中,第一渲染指令和第二渲染指令用于直接调用渲染器按照元素的属性和外观参数来呈现该元素。第三渲染指令用于直接调用渲染器按照元素的动画参数来呈现元素的动画效果。
在本公开的一些实施例中,渲染子模块2221还包括:交互响应单元22214。其中,交互响应单元22214被配置为:解析目标事件中的交互事件中的显示操作所涉及的元素的交互响应显示参数,并根据元素的交互响应显示参数来生成第四渲染指令。其中,第四渲染指令用于直接调用渲染器按照元素的交互响应显示参数来呈现元素的交互响应显示效果。在本公开的一些实施例中,“交互”可包括:用户操作电子设备的手势。在这里的电子设备指的是运行小程序引擎100的电子设备,例如,智能手机、平板电脑等。
资源管理单元2222被配置为:调度显示操作所需的系统资源。例如,定义显示操作所需的内存空间。
第一JavaScript引擎单元2223被配置为:确定交互事件中的逻辑操作需要调用的第一原生函数。第一原生函数是操作系统本身的函数。
第一原生函数绑定单元2224被配置为:调用第一原生函数以处理交互事件中的逻辑操作。第一原生函数绑定单元2224包括多个原生外部函数接口(Foreign FunctionInterface,简称FFI),用于调用操作系统的原生函数。
在本公开的一些实施例中,如果运行小程序引擎100的系统中预置的WebView是精简版,不包括所有的渲染函数,那么根据本公开的实施例的小程序引擎100可以利用系统中预置的WebView来实现显示功能。因此,视图模块122还可包括:网页应用接口单元2225。其中,网页应用接口单元2225被配置为:提供封装的网页应用程序编程接口(WebAPI),网页应用程序编程接口能够适配平台的网页视图层212。也就是说,根据本公开的实施例的小程序引擎100通过网页应用程序编程接口能够调用平台的网页视图层212中的相关函数来实现显示功能。
逻辑模块121可包括:第二JavaScript引擎单元2211、第二原生函数绑定单元2212、路由管理单元2214、以及第一生命周期管理单元2213。
第二JavaScript引擎单元2211被配置为:确定业务事件中的逻辑操作需要调用的第二原生函数。第二原生函数是操作系统本身的函数。第二原生函数与第一原生函数可以是相同的,也可以是不同的。
第二原生函数绑定单元2212被配置为:调用第二原生函数以处理业务事件中的逻辑操作。第二原生函数绑定单元2212包括多个原生FFI,用于调用操作系统的原生函数。
路由管理单元2214被配置为:响应于目标事件中的跳转事件,根据跳转事件中的路由地址来执行定向跳转。执行定向跳转之后,小程序可显示路由地址所指向的页面。
第一生命周期管理单元2213被配置为:对小程序引擎100的应用程序级别的生命周期、页面级别的生命周期以及组件级别的生命周期进行管理。应用程序级别的生命周期例如定义小程序的触发时机。页面级别的生命周期例如定义小程序中的页面的触发时机。组件级别的生命周期例如定义页面中的组件的触发时机。
在一个示例中,假设执行页面重定向的操作,则先调用第二JavaScript引擎单元2211来分析需要调用哪个应用程序接口函数(API),然后第二原生函数绑定单元2212找到该API,接着再由路由管理单元2214来执行跳转页面的操作。第一生命周期管理单元2213确定执行跳转页面的操作的时机。
系统接口层130包括:渲染执行单元231、渲染合成单元232、消息处理单元235、系统事件处理单元236、服务协议单元234、以及第二生命周期管理单元233。
渲染执行单元231被配置为:直接调用渲染器来执行渲染指令。在一个示例中,渲染器是OpenGL。可直接通过OpenGL的画布来绘制组件。
渲染合成单元232被配置为:合成多个页面的渲染结果。在小程序要显示的视图包括多个相互叠加的页面的情况下,需要对多个页面的渲染结果进行合成,因此需要使用渲染合成单元232。
消息处理单元235被配置为:提供消息通信接口,逻辑模块121与视图模块122经由消息通信接口进行通信。在逻辑模块121需要向视图模块122发送数据的情况下,逻辑模块121向消息处理单元235发送该数据,消息处理单元235再将该数据传递给视图模块122。在视图模块122需要向逻辑模块121发送数据的情况下,视图模块122向消息处理单元235发送该数据,消息处理单元235再将该数据传递给逻辑模块121。
系统事件处理单元236被配置为:提供系统事件接口,平台经由系统事件接口来接收系统事件。在发生系统事件时,操作系统向系统事件处理单元236发送该系统事件,然后系统事件处理单元236将该系统事件传递给运行小程序引擎100的平台。
服务协议单元234被配置为:定义小程序引擎内部的消息通信协议,以及只允许符合消息通信协议的消息被传递。具体地,逻辑模块121与平台的原生层NATIVE进行通信的消息格式,视图模块122与原生层NATIVE进行通信的消息格式,以及逻辑模块121与视图模块122进行通信的消息格式都需要符合上述消息通信协议。只有符合消息通信协议的消息才会被传递。
第二生命周期管理单元233被配置为:对框架层120的生命周期进行管理。
图3示出根据本公开的实施例的小程序引擎100与平台3的示意性关系。平台3可包括应用程序管理器31、配置模块32和应用程序接口模块33。小程序引擎100可运行在平台3上。
应用程序管理器31用于管理小程序的生命周期。配置模块32用于申明小程序引擎100的配置项。应用程序接口模块33用于定义小程序可调用的应用程序接口函数。
综上所述,根据本公开的实施例的小程序引擎提供了一个渲染容器,能够跨平台直接支持渲染网页的组件。相比于使用WebView的小程序架构,根据本公开的实施例的小程序引擎占用的内存更少,因此能够适用于更多的应用场景。此外,根据本公开的实施例的小程序引擎还能够提供跨平台的统一系统事件接口,这样能够在多个平台上运行,兼容性好。在需要进行平台移植或者进行小程序维护或升级时,小程序开发者不需要针对每个平台都修改一遍小程序的代码,因此其工作量能够大幅减小,节省了人力成本。
除非上下文中另外明确地指出,否则在本文和所附权利要求中所使用的词语的单数形式包括复数,反之亦然。因而,当提及单数时,通常包括相应术语的复数。相似地,措辞“包含”和“包括”将解释为包含在内而不是独占性地。同样地,术语“包括”和“或”应当解释为包括在内的,除非本文中明确禁止这样的解释。在本文中使用术语“示例”之处,特别是当其位于一组术语之后时,所述“示例”仅仅是示例性的和阐述性的,且不应当被认为是独占性的或广泛性的。
适应性的进一步的方面和范围从本文中提供的描述变得明显。应当理解,本申请的各个方面可以单独或者与一个或多个其它方面组合实施。还应当理解,本文中的描述和特定实施例旨在仅说明的目的并不旨在限制本申请的范围。
以上对本公开的若干实施例进行了详细描述,但显然,本领域技术人员可以在不脱离本公开的精神和范围的情况下对本公开的实施例进行各种修改和变型。本公开的保护范围由所附的权利要求限定。
Claims (10)
1.一种小程序引擎,其特征在于,所述小程序引擎包括:小程序层、框架层、以及系统接口层,
其中,所述小程序层被配置为:生成目标事件;
所述框架层包括逻辑模块和视图模块;其中,所述逻辑模块被配置为:处理所述目标事件中的业务事件中的逻辑操作;所述视图模块被配置为:处理所述目标事件中的显示操作,根据所述显示操作来生成渲染指令,以及向所述系统接口层发送所述渲染指令;
所述系统接口层被配置为:为所述逻辑模块和所述视图模块提供消息通信接口以便所述逻辑模块与所述视图模块相互进行通信;为运行所述小程序引擎的平台提供系统事件接口以便所述平台根据系统事件执行系统操作;以及响应于接收到所述渲染指令,直接调用所述平台所使用的渲染器来执行所述渲染指令。
2.根据权利要求1所述的小程序引擎,其特征在于,所述视图模块包括:渲染子模块、以及资源管理单元,
其中,所述渲染子模块被配置为:根据所述显示操作来生成所述渲染指令,以及向所述系统接口层发送所述渲染指令;
所述资源管理单元被配置为:调度所述显示操作所需的系统资源。
3.根据权利要求2所述的小程序引擎,其特征在于,所述渲染子模块包括:元素属性确定单元、外观参数设置单元、以及动画呈现单元,
其中,所述元素属性确定单元被配置为:解析所述显示操作所涉及的元素的属性,并根据所述元素的所述属性来生成第一渲染指令;
所述外观参数设置单元被配置为:解析所述显示操作所涉及的元素的外观参数,并根据所述元素的所述外观参数来生成第二渲染指令;
所述动画呈现单元被配置为:解析所述显示操作所涉及的元素的动画参数,并根据所述元素的所述动画参数来生成第三渲染指令;
其中,所述第一渲染指令和所述第二渲染指令用于直接调用所述渲染器按照所述属性和所述外观参数来呈现所述元素,所述第三渲染指令用于直接调用所述渲染器按照所述动画参数来呈现所述元素的动画效果。
4.根据权利要求3所述的小程序引擎,其特征在于,所述渲染子模块还包括:交互响应单元,
其中,所述交互响应单元被配置为:解析所述目标事件中的交互事件中的显示操作所涉及的元素的交互响应显示参数,并根据所述元素的所述交互响应显示参数来生成第四渲染指令;
其中,所述第四渲染指令用于直接调用所述渲染器按照所述交互响应显示参数来呈现所述元素的交互响应显示效果。
5.根据权利要求4所述的小程序引擎,其特征在于,所述视图模块还包括:第一JavaScript引擎单元、以及第一原生函数绑定单元,
其中,所述第一JavaScript引擎单元被配置为:确定所述交互事件中的逻辑操作需要调用的第一原生函数;
所述第一原生函数绑定单元被配置为:调用所述第一原生函数以处理所述交互事件中的所述逻辑操作。
6.根据权利要求2至5中任一项所述的小程序引擎,其特征在于,所述视图模块还包括:网页应用接口单元,
其中,所述网页应用接口单元被配置为:提供封装的网页应用程序编程接口,所述网页应用程序编程接口能够适配所述平台的网页视图层。
7.根据权利要求1至5中任一项所述的小程序引擎,其特征在于,所述逻辑模块包括:第二JavaScript引擎单元、以及第二原生函数绑定单元,
其中,所述第二JavaScript引擎单元被配置为:确定所述业务事件中的所述逻辑操作需要调用的第二原生函数;
所述第二原生函数绑定单元被配置为:调用所述第二原生函数以处理所述业务事件中的所述逻辑操作。
8.根据权利要求7所述的小程序引擎,其特征在于,所述逻辑模块还包括:路由管理单元,
其中,所述路由管理单元被配置为:响应于所述目标事件中的跳转事件,根据所述跳转事件中的路由地址来执行定向跳转。
9.根据权利要求8所述的小程序引擎,其特征在于,所述逻辑模块还包括:第一生命周期管理单元,
其中,所述第一生命周期管理单元被配置为:对所述小程序引擎的应用程序级别的生命周期、页面级别的生命周期以及组件级别的生命周期进行管理。
10.根据权利要求1至5中任一项所述的小程序引擎,其特征在于,所述系统接口层包括:渲染执行单元、渲染合成单元、消息处理单元、系统事件处理单元、服务协议单元、以及第二生命周期管理单元,
其中,所述渲染执行单元被配置为:直接调用所述渲染器来执行所述渲染指令;
所述渲染合成单元被配置为:合成多个页面的渲染结果;
所述消息处理单元被配置为:提供所述消息通信接口,所述逻辑模块与所述视图模块经由所述消息通信接口进行通信;
所述系统事件处理单元被配置为:提供所述系统事件接口,所述平台经由所述系统事件接口来接收所述系统事件;
所述服务协议单元被配置为:定义所述小程序引擎内部的消息通信协议,以及只允许符合所述消息通信协议的消息被传递;
所述第二生命周期管理单元被配置为:对所述框架层的生命周期进行管理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310984521.4A CN116700694B (zh) | 2023-08-07 | 2023-08-07 | 小程序引擎 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310984521.4A CN116700694B (zh) | 2023-08-07 | 2023-08-07 | 小程序引擎 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116700694A CN116700694A (zh) | 2023-09-05 |
CN116700694B true CN116700694B (zh) | 2024-01-26 |
Family
ID=87829709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310984521.4A Active CN116700694B (zh) | 2023-08-07 | 2023-08-07 | 小程序引擎 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116700694B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018050003A1 (zh) * | 2016-09-14 | 2018-03-22 | 阿里巴巴集团控股有限公司 | 3D canvas网页元素的渲染方法、装置及电子设备 |
CN110166810A (zh) * | 2019-04-25 | 2019-08-23 | 腾讯科技(深圳)有限公司 | 视频渲染引擎切换方法、装置、设备及可读存储介质 |
CN111158866A (zh) * | 2019-12-30 | 2020-05-15 | 珠海金山网络游戏科技有限公司 | 一种引擎系统及其渲染方法 |
CN112394869A (zh) * | 2020-10-16 | 2021-02-23 | 腾讯科技(深圳)有限公司 | 基于车载终端的小程序控制方法、装置、设备及存储介质 |
CN113419710A (zh) * | 2021-06-25 | 2021-09-21 | 北京悟空出行科技有限公司 | 小程序的开发方法、装置、电子设备和介质 |
CN114035865A (zh) * | 2021-11-11 | 2022-02-11 | 北京百度网讯科技有限公司 | 启动小程序的方法、装置、设备以及存储介质 |
CN114327446A (zh) * | 2022-03-14 | 2022-04-12 | 恒生电子股份有限公司 | 一种小程序转换应用程序的处理方法及装置 |
CN115437722A (zh) * | 2022-10-13 | 2022-12-06 | 斑马网络技术有限公司 | 小程序运行方法、系统、设备及介质 |
JP2023510450A (ja) * | 2020-12-25 | 2023-03-14 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド | アプレットページレンダリング方法、装置、電子機器、および記憶媒体 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111611031A (zh) * | 2019-02-26 | 2020-09-01 | 华为技术有限公司 | 一种图形绘制方法和电子设备 |
-
2023
- 2023-08-07 CN CN202310984521.4A patent/CN116700694B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018050003A1 (zh) * | 2016-09-14 | 2018-03-22 | 阿里巴巴集团控股有限公司 | 3D canvas网页元素的渲染方法、装置及电子设备 |
CN113282360A (zh) * | 2016-09-14 | 2021-08-20 | 阿里巴巴集团控股有限公司 | 2D canvas网页元素的渲染方法、装置及电子设备 |
CN110166810A (zh) * | 2019-04-25 | 2019-08-23 | 腾讯科技(深圳)有限公司 | 视频渲染引擎切换方法、装置、设备及可读存储介质 |
CN111158866A (zh) * | 2019-12-30 | 2020-05-15 | 珠海金山网络游戏科技有限公司 | 一种引擎系统及其渲染方法 |
CN112394869A (zh) * | 2020-10-16 | 2021-02-23 | 腾讯科技(深圳)有限公司 | 基于车载终端的小程序控制方法、装置、设备及存储介质 |
JP2023510450A (ja) * | 2020-12-25 | 2023-03-14 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド | アプレットページレンダリング方法、装置、電子機器、および記憶媒体 |
CN113419710A (zh) * | 2021-06-25 | 2021-09-21 | 北京悟空出行科技有限公司 | 小程序的开发方法、装置、电子设备和介质 |
CN114035865A (zh) * | 2021-11-11 | 2022-02-11 | 北京百度网讯科技有限公司 | 启动小程序的方法、装置、设备以及存储介质 |
CN114327446A (zh) * | 2022-03-14 | 2022-04-12 | 恒生电子股份有限公司 | 一种小程序转换应用程序的处理方法及装置 |
CN115437722A (zh) * | 2022-10-13 | 2022-12-06 | 斑马网络技术有限公司 | 小程序运行方法、系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116700694A (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI584141B (zh) | 更新硬體庫以供具有fpga共處理器的電腦系統上的應用程式使用 | |
US20220365773A1 (en) | Run-Time Application Modification | |
US20180357085A1 (en) | Method and apparatus for running android application on windows system | |
US10019298B2 (en) | Middleware interface and middleware interface generator | |
US20100274869A1 (en) | User interface, operating system and architecture | |
CN108549568B (zh) | 应用入口处理方法、装置、存储介质及电子设备 | |
EP3053028A1 (en) | Rendering interpreter for visualizing data provided from restricted environment container | |
JP7106001B2 (ja) | サブアプリケーション開発方法、装置、コンピュータ機器、並びにコンピュータプログラム | |
US10908948B2 (en) | Multiple application instances in operating systems that utilize a single process for application execution | |
KR20170097360A (ko) | 패키지 파일에 대한 기능 확장 방법 및 시스템 | |
CN110597564A (zh) | 一种安装包构建和业务组件加载方法、装置、终端设备 | |
US20150067664A1 (en) | System, method and apparatus for transparently enabling software applications with adaptive user interfaces | |
JP7048663B2 (ja) | コード実行方法、装置、レンダリングデバイス、記憶媒体、及びプログラム | |
Späth | Pro Android with Kotlin: Developing Modern Mobile Apps | |
CN108228266B (zh) | 一种Android插件框架下不同插件间启动Fragment组件的方法和装置 | |
CN116700694B (zh) | 小程序引擎 | |
WO2016183108A1 (en) | Source code customization framework | |
CN113050962B (zh) | 移动服务升级方法、装置和终端 | |
EP3848800B1 (en) | Method and apparatus for displaying message box, terminal and storage medium | |
Debbabi et al. | Embedded Java security: security for mobile devices | |
CN116243912A (zh) | 组件开发方法及装置、计算机设备及计算机可读存储介质 | |
CN113835596A (zh) | 图标处理方法、装置及设备 | |
CN116737251A (zh) | 一种启动方法、装置、终端设备及介质 | |
CN116156259A (zh) | 显示设备及主页替换方法 | |
CN117616392A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |