CN116954571B - 小程序插件的开发处理方法及装置、计算机可读存储介质 - Google Patents
小程序插件的开发处理方法及装置、计算机可读存储介质 Download PDFInfo
- Publication number
- CN116954571B CN116954571B CN202311225434.7A CN202311225434A CN116954571B CN 116954571 B CN116954571 B CN 116954571B CN 202311225434 A CN202311225434 A CN 202311225434A CN 116954571 B CN116954571 B CN 116954571B
- Authority
- CN
- China
- Prior art keywords
- applet
- plug
- css
- code
- development processing
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
-
- 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
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 Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
本公开的实施例提供一种小程序插件的开发处理方法。该开发处理方法包括:获取小程序插件代码包;按照文件类型将小程序插件代码包分成逻辑文件、页面样式文件和配置文件;从逻辑文件中获取JavaScript代码;从页面样式文件中获取XML代码和CSS代码;根据XML代码生成XML语法树;将XML语法树转换为小程序架构下的运行时;根据CSS代码生成CSS语法树;将CSS语法树转换为小程序架构下可解析结构的属性信息;从配置文件中获取小程序插件的配置信息;以及将JavaScript代码、小程序架构下的运行时、属性信息以及配置信息注入小程序以获得小程序插件。
Description
技术领域
本公开的实施例涉及计算机技术领域,具体地,涉及小程序插件的开发处理方法、小程序插件的开发处理装置以及计算机可读存储介质。
背景技术
小程序插件是可被添加到小程序内直接使用的功能组件。开发者可以像开发小程序一样开发一个插件,供其他小程序使用。同时,小程序开发者可直接在小程序内使用插件,无需重复开发,为用户提供更丰富的服务。
小程序插件拥有很强的独立性。但小程序插件不可以直接调用,必须要嵌入小程序中才能被用户使用,不能独立运行。当第三方小程序在使用小程序插件时,也无法看到小程序插件的代码,因此小程序插件适合用来封装客制化的功能或服务,并通过小程序插件的形式提供给第三方小程序进行展示与使用。
发明内容
本文中描述的实施例提供了一种小程序插件的开发处理方法、小程序插件的开发处理装置以及存储有计算机程序的计算机可读存储介质。
根据本公开的第一方面,提供了一种小程序插件的开发处理方法。该开发处理方法包括:获取小程序插件代码包;按照文件类型将小程序插件代码包分成逻辑文件、页面样式文件和配置文件;从逻辑文件中获取JavaScript代码;从页面样式文件中获取XML代码和CSS代码;根据XML代码生成XML语法树;将XML语法树转换为小程序架构下的运行时;根据CSS代码生成CSS语法树;将CSS语法树转换为小程序架构下可解析结构的属性信息;从配置文件中获取小程序插件的配置信息;以及将JavaScript代码、小程序架构下的运行时、属性信息以及配置信息注入小程序以获得小程序插件。
在本公开的一些实施例中,开发处理方法还包括:根据小程序插件的唯一标识符和版本号生成秘钥;将小程序插件的代码进行分组;利用秘钥对每个分组进行加密以生成针对该分组的分组密文;以及将所有分组密文组合成加密小程序插件包。
在本公开的一些实施例中,将XML语法树转换为小程序架构下的运行时包括:初始化运行时队列;解析XML语法树以获取XML语法树中的每个元素;针对每个元素,根据该元素生成运行时函数,其中,该运行时函数的名称被设置为该元素的名称;针对每个元素,获取该元素的每个属性的唯一标识符和值,并将所获取的唯一标识符和值作为参数注入运行时函数;以及将运行时函数推入经初始化的运行时队列中以生成运行时。
在本公开的一些实施例中,将CSS语法树转换为小程序架构下可解析结构的属性信息包括:初始化小程序页面结构;解析CSS语法树以获取CSS规则;针对每个CSS规则,获取该CSS规则的选择器,选择器定义待设置样式的元素;针对每个选择器,获取与该选择器相关联的申明语句所定义的属性和属性值;以及使用选择器定义的元素、所获取的属性和属性值来更新小程序页面结构。
在本公开的一些实施例中,开发处理方法还包括:预先确定针对多个候选运行平台的XML语法树解析规则和CSS语法树解析规则;确定小程序插件的目标运行平台;响应于目标运行平台是多个候选运行平台中的一个,将与目标运行平台相对应的XML语法树解析规则和CSS语法树解析规则分别用于解析XML语法树和CSS语法树;以及响应于目标运行平台不是多个候选运行平台中的一个,将默认的XML语法树解析规则和CSS语法树解析规则分别用于解析XML语法树和CSS语法树。
在本公开的一些实施例中,获取小程序插件代码包包括:确定是否存在由其它开发平台生成的小程序插件代码包,其中,其它开发平台是与小程序插件的当前开发平台不同的开发平台;响应于存在由其它开发平台生成的小程序插件代码包,直接接收由其它开发平台生成的小程序插件代码包;以及响应于不存在由其它开发平台生成的小程序插件代码包,向用户开放在当前开发平台新建小程序插件代码包的权限并接收由用户新建的小程序插件代码包。
在本公开的一些实施例中,开发处理方法还包括:在获得小程序插件之后,接收来自用户的开发指令,开发指令指示对小程序插件进行删除功能、增加功能、或者修改功能的操作;以及按照开发指令在小程序插件中删除功能、增加功能、或者修改功能。
在本公开的一些实施例中,从逻辑文件中获取JavaScript代码包括:获取全部JavaScript文件;针对每个JavaScript文件,确定小程序插件的目标运行环境是否支持该JavaScript文件对应的ES5代码;以及响应于确定目标运行环境支持该JavaScript文件对应的ES5代码,将该JavaScript文件中的JavaScript代码转换为ES5代码;其中,ES5代码代替JavaScript代码被注入小程序。
根据本公开的第二方面,提供了一种小程序插件的开发处理装置。该开发处理装置包括至少一个处理器;以及存储有计算机程序的至少一个存储器。当计算机程序由至少一个处理器执行时,使得开发处理装置:获取小程序插件代码包;按照文件类型将小程序插件代码包分成逻辑文件、页面样式文件和配置文件;从逻辑文件中获取JavaScript代码;从页面样式文件中获取XML代码和CSS代码;根据XML代码生成XML语法树;将XML语法树转换为小程序架构下的运行时;根据CSS代码生成CSS语法树;将CSS语法树转换为小程序架构下可解析结构的属性信息;从配置文件中获取小程序插件的配置信息;以及将JavaScript代码、小程序架构下的运行时、属性信息以及配置信息注入小程序以获得小程序插件。
在本公开的一些实施例中,计算机程序在由至少一个处理器执行时使得开发处理装置还:根据小程序插件的唯一标识符和版本号生成秘钥;将小程序插件的代码进行分组;利用秘钥对每个分组进行加密以生成针对该分组的分组密文;以及将所有分组密文组合成加密小程序插件包。
在本公开的一些实施例中,计算机程序在由至少一个处理器执行时使得开发处理装置通过以下操作来将XML语法树转换为小程序架构下的运行时:初始化运行时队列;解析XML语法树以获取XML语法树中的每个元素;针对每个元素,根据该元素生成运行时函数,其中,该运行时函数的名称被设置为该元素的名称;针对每个元素,获取该元素的每个属性的唯一标识符和值,并将所获取的唯一标识符和值作为参数注入运行时函数;以及将运行时函数推入经初始化的运行时队列中以生成运行时。
在本公开的一些实施例中,计算机程序在由至少一个处理器执行时使得开发处理装置通过以下操作来将CSS语法树转换为小程序架构下可解析结构的属性信息:初始化小程序页面结构;解析CSS语法树以获取CSS规则;针对每个CSS规则,获取该CSS规则的选择器,选择器定义待设置样式的元素;针对每个选择器,获取与该选择器相关联的申明语句所定义的属性和属性值;以及使用选择器定义的元素、所获取的属性和属性值来更新小程序页面结构。
在本公开的一些实施例中,计算机程序在由至少一个处理器执行时使得开发处理装置还:预先确定针对多个候选运行平台的XML语法树解析规则和CSS语法树解析规则;确定小程序插件的目标运行平台;响应于目标运行平台是多个候选运行平台中的一个,将与目标运行平台相对应的XML语法树解析规则和CSS语法树解析规则分别用于解析XML语法树和CSS语法树;以及响应于目标运行平台不是多个候选运行平台中的一个,将默认的XML语法树解析规则和CSS语法树解析规则分别用于解析XML语法树和CSS语法树。
在本公开的一些实施例中,计算机程序在由至少一个处理器执行时使得开发处理装置通过以下操作来获取小程序插件代码包:确定是否存在由其它开发平台生成的小程序插件代码包,其中,其它开发平台是与小程序插件的当前开发平台不同的开发平台;响应于存在由其它开发平台生成的小程序插件代码包,直接接收由其它开发平台生成的小程序插件代码包;以及响应于不存在由其它开发平台生成的小程序插件代码包,向用户开放在当前开发平台新建小程序插件代码包的权限并接收由用户新建的小程序插件代码包。
在本公开的一些实施例中,计算机程序在由至少一个处理器执行时使得开发处理装置还:在获得小程序插件之后,接收来自用户的开发指令,开发指令指示对小程序插件进行删除功能、增加功能、或者修改功能的操作;以及按照开发指令在小程序插件中删除功能、增加功能、或者修改功能。
在本公开的一些实施例中,计算机程序在由至少一个处理器执行时使得开发处理装置通过以下操作来从逻辑文件中获取JavaScript代码:获取全部JavaScript文件;针对每个JavaScript文件,确定小程序插件的目标运行环境是否支持该JavaScript文件对应的ES5代码;以及响应于确定目标运行环境支持该JavaScript文件对应的ES5代码,将该JavaScript文件中的JavaScript代码转换为ES5代码;其中,ES5代码代替JavaScript代码被注入小程序。
根据本公开的第三方面,提供了一种存储有计算机程序的计算机可读存储介质,其中,计算机程序在由处理器执行时实现根据本公开的第一方面所述的开发处理方法的步骤。
附图说明
为了更清楚地说明本公开的实施例的技术方案,下面将对实施例的附图进行简要说明,应当知道,以下描述的附图仅仅涉及本公开的一些实施例,而非对本公开的限制,其中:
图1是根据本公开的实施例的小程序插件的开发处理方法的示意性流程图;
图2是根据本公开的实施例的小程序插件的开发处理方法的进一步的步骤的示意性流程图;
图3是根据本公开的实施例的小程序插件的开发处理装置的示意性框图。
需要注意的是,附图中的元素是示意性的,没有按比例绘制。
具体实施方式
为了使本公开的实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本公开的实施例的技术方案进行清楚、完整的描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域技术人员在无需创造性劳动的前提下所获得的所有其它实施例,也都属于本公开保护的范围。
除非另外定义,否则在此使用的所有术语(包括技术和科学术语)具有与本公开主题所属领域的技术人员所通常理解的相同含义。进一步将理解的是,诸如在通常使用的词典中定义的那些的术语应解释为具有与说明书上下文和相关技术中它们的含义一致的含义,并且将不以理想化或过于正式的形式来解释,除非在此另外明确定义。如在此所使用的,将两个或更多部分“连接”或“耦接”到一起的陈述应指这些部分直接结合到一起或通过一个或多个中间部件结合。另外,诸如“第一”和“第二”的术语仅用于将一个部件(或部件的一部分)与另一个部件(或部件的另一部分)区分开。
对于小程序插件的使用,分别分为插件开发者开发插件,与小程序开发者使用插件两种情况。由于在不同开发平台开发的小程序插件不是彼此通用的,因此即使开发同一款小程序插件,插件开发者往往都需要针对不同平台分别进行开发。假设插件开发者在微信平台已经开发了微信小程序插件,当他需要在支付宝再次开发同一款小程序插件时,可能需要针对微信小程序插件的源代码进行大量调整。在已经拥有小程序插件的源代码的情况下,如果能够自动转换成适用于目标平台的小程序插件,则能够大大降低插件开发者的工作量,提高工作效率。
本公开提出了一种小程序插件的开发处理方法。图1示出根据本公开的实施例的小程序插件的开发处理方法100的示意性流程图。小程序插件的开发处理方法100由小程序插件的开发处理装置来执行。小程序插件的开发处理装置可被安装在小程序插件的开发平台上,或者作为小程序插件的开发平台的一部分。
在图1的框S102处,获取小程序插件代码包。在本公开的一些实施例中,插件开发者(在上下文中也可替换地称为用户)可登录小程序插件的当前开发平台,并输入插件名称、上传插件头像、添加插件介绍。当前开发平台可例如通过按键或弹窗的方式询问用户是否存在由其它开发平台生成的小程序插件代码包。在这里,其它开发平台指的是与小程序插件的当前开发平台不同的开发平台。如果用户的回复是肯定的,表示存在由其它开发平台生成的小程序插件代码包,则当前开发平台可允许用户输入该小程序插件代码包,从而直接接收该小程序插件代码包。如果用户的回复是否定的,表示不存在由其它开发平台生成的小程序插件代码包,则当前开发平台向用户开放在当前开发平台新建小程序插件代码包的权限并接收由用户新建的小程序插件代码包。
在获取小程序插件代码包之后可开始对小程序插件代码包进行编译。在本公开的一些实施例中,在开始编译时,可解析小程序目录下的小程序插件代码包,递归遍历该目录下的全部文件,并判断每个文件的文件类型。
在框S104处,按照文件类型将小程序插件代码包分成逻辑文件、页面样式文件和配置文件。在一个示例中,逻辑文件包括JS文件,页面样式文件包括FXML文件和FTSS文件,配置文件包括JSON文件。然后在框S106、框S108和框S110处分别针对逻辑文件、页面样式文件和配置文件进行处理。在框S106、框S108和框S110处执行的操作可以是并行的,也可以先后执行,本公开的实施例不限制它们的执行顺序。
在框S106处,从逻辑文件中获取JavaScript代码。在本公开的一些实施例中,可获取全部JavaScript文件(JS文件)。针对每个JavaScript文件,确定小程序插件的目标运行环境是否支持该JavaScript文件对应的ES5代码(ECMAScript 5.1版本,ECMAScript是ECMA(European Computer Manufacturers Association,欧洲计算机制造商协会)制订的一种开放的JavaScript语言规范),例如,小程序插件的目标运行环境是否能够解析ES5代码。如果确定目标运行环境支持该JavaScript文件对应的ES5代码,则将该JavaScript文件中的JavaScript代码转换为ES5代码。ES5代码可被写入对应的小程序文件。如果目标运行环境不支持该JavaScript文件对应的ES5代码,则将JavaScript代码写入对应的小程序文件。
在框S108处,从页面样式文件中获取XML代码和CSS代码。XML代码和CSS代码被分开处理。XML指的是可扩展标记语言 (Extensible Markup Language) ,标准通用标记语言的子集,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。CSS指的是层叠样式表(Cascading Style Sheets),是一种W3C(网际网路联盟,World Wide Web Consortium)规范下,对HTML(超文本标记语言,HyperText MarkupLanguage)内容进行排版格式定义的规范,它解决了网页界面排版的难题。
在框S112处,根据XML代码生成XML语法树(Abstract Syntax Tree,AST)。语法树是一种树状结构,可以将程序代码的结构和语法规则表示为一组节点和边,AST的每个节点代表了程序中的一个语法结构,如表达式、函数、循环、条件语句等。XML语法树是将XML文件解析成抽象语法树的数据结构,将XML文件转换为一个层次结构的节点和属性。
在框S114处,将XML语法树转换为小程序架构下的运行时。运行时是指一个程序在运行(或者在被执行)的依赖。运行时是一种虚拟机,一般指进程级别的虚拟机。在本公开的一些实施例中,可先初始化运行时队列。然后,解析XML语法树以获取XML语法树中的每个元素。针对每个元素,根据该元素生成运行时函数。其中,该运行时函数的名称可被设置为该元素的名称。针对每个元素,获取该元素的每个属性的唯一标识符(key)和值(value),并将所获取的唯一标识符和值作为参数注入根据该元素生成的运行时函数。然后,将该运行时函数推入经初始化的运行时队列中以生成运行时。
在框S116处,根据CSS代码生成CSS语法树。CSS语法树是将CSS文件解析成抽象语法树的数据结构,将CSS文件转换为一个层次结构的节点和属性。
在框S118处,将CSS语法树转换为小程序架构下可解析结构的属性信息。在本公开的一些实施例中,可先初始化小程序页面结构。解析CSS语法树以获取CSS规则。CSS规则包括选择器和申明语句。针对每个CSS规则,获取该CSS规则的选择器。选择器定义待设置样式的元素。针对每个选择器,获取与该选择器相关联的申明语句所定义的属性和属性值(属性和属性值对应待设置样式的元素)。然后,使用选择器定义的元素、所获取的属性和属性值来更新小程序页面结构。
在一个示例中,CSS规则的基本语法为:
selector{
property1:value1;
property2:value2;
}
其中,selector表示选择器,property1表示第一属性,value1表示第一属性的属性值,property2表示第二属性,value2表示第二属性的属性值。上述示例中的CSS规则定义了将selector的第一属性设置为value1,将selector的第二属性设置为value2。
在本公开的一些实施例中,为了使得小程序插件能够在多个运行平台运行,当前开发平台还可预先确定针对多个候选运行平台的XML语法树解析规则和CSS语法树解析规则。在不同运行平台下,数据结构可能不同,且可能存在平台专用的变量和属性。因此,需要确定每个候选运行平台的XML语法树解析规则和CSS语法树解析规则。候选运行平台可包括主流平台,例如,支付宝、微信等。当前开发平台可例如通过按键或弹窗的方式向用户询问小程序插件的目标运行平台。用户可向当前开发平台输入目标运行平台的名称或者唯一标识符,从而使得当前开发平台确定小程序插件的目标运行平台。如果目标运行平台是该多个候选运行平台中的一个,则将与目标运行平台相对应的XML语法树解析规则和CSS语法树解析规则分别用于在框S114和框S118处解析XML语法树和CSS语法树。如果目标运行平台不是该多个候选运行平台中的一个,则将默认的XML语法树解析规则和CSS语法树解析规则分别用于在框S114和框S118处解析XML语法树和CSS语法树。
在框S110处,从配置文件中获取小程序插件的配置信息。配置信息可被写入对应的小程序文件。
在框S120处,将JavaScript代码、小程序架构下的运行时、小程序架构下可解析结构的属性信息以及小程序插件的配置信息注入小程序以获得小程序插件。到此,对小程序插件的编译过程结束。
在本公开的一些实施例中,将JavaScript代码注入小程序可包括将写有JavaScript代码的小程序文件注入小程序。如果某些JavaScript代码被ES5代码代替,则将写有ES5代码的小程序文件注入小程序。
在本公开的一些实施例中,小程序架构下可解析结构的属性信息也可被写入小程序文件,将属性信息注入小程序可包括将写有属性信息的小程序文件注入小程序。
在本公开的一些实施例中,将配置信息注入小程序可包括将写有配置信息的小程序文件注入小程序。
根据本公开的实施例的小程序插件的开发处理方法100通过对小程序插件代码包进行自动解析,按照文件类型生成与小程序插件相关的文件信息,并将该文件信息注入到小程序中来获得当前开发平台可开发的小程序插件。这样,能够实现在不同开发平台下开发的小程序插件代码包的自动转换,大大降低插件开发者的工作量,提高工作效率。
在本公开的一些实施例中,在获得小程序插件之后(对小程序插件编译完成之后),用户可开发插件功能。当前开发平台可接收来自用户的开发指令,开发指令指示对小程序插件进行删除功能、增加功能、或者修改功能的操作。然后,当前开发平台可按照开发指令在小程序插件中删除功能、增加功能、或者修改功能。
进一步地,本公开的实施例还考虑了小程序开发者在使用小程序插件时的安全性问题。为了避免小程序插件被未经授权的小程序开发者使用,可对小程序插件进行加密处理。图2示出对小程序插件进行加密的步骤的示意性流程图。
在框S120处获得小程序插件之后,在图2的框S202处,根据小程序插件的唯一标识符和版本号生成秘钥。小程序插件的唯一标识符和版本号可由插件开发者向当前开发平台提供。根据唯一标识符和版本号生成秘钥的算法可同步给目标运行平台,以便目标运行平台对小程序插件进行解密。
在框S204处,将小程序插件的代码进行分组。在本公开的一些实施例中,可遍历小程序插件的全部文件并获取文件内容。然后,按照固定长度对所获取的文件内容进行均匀分组。在这里,固定长度的值也同步给目标运行平台。
在框S206处,利用秘钥对每个分组进行加密以生成针对该分组的分组密文。这样,每个分组的代码都被转换成分组密文。
在框S208处,将所有分组密文组合成加密小程序插件包。
加密小程序插件包可被上传至目标运行平台。目标运行平台在解密时可按照事先同步好的生成秘钥的算法来根据小程序插件的唯一标识符和版本号来生成秘钥。然后,目标运行平台利用秘钥对加密小程序插件包进行分组解密,即可获得小程序插件。
通过对小程序插件进行加密,提高了小程序插件的使用安全性。
图3示出根据本公开的实施例的小程序插件的开发处理装置300的示意性框图。如图3所示,该开发处理装置300可包括处理器310和存储有计算机程序的存储器320。当计算机程序由处理器310执行时,使得开发处理装置300可执行如图1所示的方法100的步骤。在一个示例中,开发处理装置300可以是计算机设备或云计算节点。开发处理装置300可获取小程序插件代码包。开发处理装置300可按照文件类型将小程序插件代码包分成逻辑文件、页面样式文件和配置文件。开发处理装置300可从逻辑文件中获取JavaScript代码。开发处理装置300可从页面样式文件中获取XML代码和CSS代码。开发处理装置300可根据XML代码生成XML语法树。开发处理装置300可将XML语法树转换为小程序架构下的运行时。开发处理装置300可根据CSS代码生成CSS语法树。开发处理装置300可将CSS语法树转换为小程序架构下可解析结构的属性信息。开发处理装置300可从配置文件中获取小程序插件的配置信息。开发处理装置300可将JavaScript代码、小程序架构下的运行时、属性信息以及配置信息注入小程序以获得小程序插件。
在本公开的一些实施例中,开发处理装置300可根据小程序插件的唯一标识符和版本号生成秘钥。开发处理装置300可将小程序插件的代码进行分组。开发处理装置300可利用秘钥对每个分组进行加密以生成针对该分组的分组密文。开发处理装置300可将所有分组密文组合成加密小程序插件包。
在本公开的一些实施例中,开发处理装置300可初始化运行时队列。开发处理装置300可解析XML语法树以获取XML语法树中的每个元素。针对每个元素,开发处理装置300可根据该元素生成运行时函数。其中,该运行时函数的名称被设置为该元素的名称。针对每个元素,开发处理装置300可获取该元素的每个属性的唯一标识符和值,并将所获取的唯一标识符和值作为参数注入运行时函数。开发处理装置300可将运行时函数推入经初始化的运行时队列中以生成运行时。
在本公开的一些实施例中,开发处理装置300可初始化小程序页面结构。开发处理装置300可解析CSS语法树以获取CSS规则。针对每个CSS规则,开发处理装置300可获取该CSS规则的选择器。选择器定义待设置样式的元素。针对每个选择器,开发处理装置300可获取与该选择器相关联的申明语句所定义的属性和属性值。开发处理装置300可使用选择器定义的元素、所获取的属性和属性值来更新小程序页面结构。
在本公开的一些实施例中,开发处理装置300可预先确定针对多个候选运行平台的XML语法树解析规则和CSS语法树解析规则。开发处理装置300可确定小程序插件的目标运行平台。如果目标运行平台是多个候选运行平台中的一个,开发处理装置300可将与目标运行平台相对应的XML语法树解析规则和CSS语法树解析规则分别用于解析XML语法树和CSS语法树。如果目标运行平台不是多个候选运行平台中的一个,开发处理装置300可将默认的XML语法树解析规则和CSS语法树解析规则分别用于解析XML语法树和CSS语法树。
在本公开的一些实施例中,开发处理装置300可确定是否存在由其它开发平台生成的小程序插件代码包。其中,其它开发平台是与小程序插件的当前开发平台不同的开发平台。如果存在由其它开发平台生成的小程序插件代码包,开发处理装置300可直接接收由其它开发平台生成的小程序插件代码包。如果不存在由其它开发平台生成的小程序插件代码包,开发处理装置300可向用户开放在当前开发平台新建小程序插件代码包的权限并接收由用户新建的小程序插件代码包。
在本公开的一些实施例中,在获得小程序插件之后,开发处理装置300可接收来自用户的开发指令。开发指令指示对小程序插件进行删除功能、增加功能、或者修改功能的操作。开发处理装置300可按照开发指令在小程序插件中删除功能、增加功能、或者修改功能。
在本公开的一些实施例中,开发处理装置300可获取全部JavaScript文件。针对每个JavaScript文件,开发处理装置300可确定小程序插件的目标运行环境是否支持该JavaScript文件对应的ES5代码。如果确定目标运行环境支持该JavaScript文件对应的ES5代码,开发处理装置300可将该JavaScript文件中的JavaScript代码转换为ES5代码。ES5代码代替JavaScript代码被注入小程序。
在本公开的实施例中,处理器310可以是例如中央处理单元(CPU)、微处理器、数字信号处理器(DSP)、基于多核的处理器架构的处理器等。存储器320可以是使用数据存储技术实现的任何类型的存储器,包括但不限于随机存取存储器、只读存储器、基于半导体的存储器、闪存、磁盘存储器等。
此外,在本公开的实施例中,开发处理装置300也可包括输入设备330,例如键盘、鼠标等,用于输入小程序插件的唯一标识符、版本号和小程序插件代码包。另外,开发处理装置300还可包括输出设备340,例如显示器等,用于输出小程序插件和加密小程序插件包。
在本公开的其它实施例中,还提供了一种存储有计算机程序的计算机可读存储介质,其中,计算机程序在由处理器执行时能够实现如图1至图2所示的方法的步骤。
综上所述,根据本公开的实施例的小程序插件的开发处理方法通过对小程序插件代码包进行自动解析,按照文件类型生成与小程序插件相关的文件信息,并将该文件信息注入到小程序中来获得当前开发平台可开发的小程序插件。这样,能够实现在不同开发平台下开发的小程序插件代码包的自动转换,大大降低插件开发者的工作量,提高工作效率。进一步地,本公开的实施例可对小程序插件进行加密处理,避免小程序插件被未经授权的小程序开发者使用。
附图中的流程图和框图显示了根据本公开的多个实施例的装置和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
除非上下文中另外明确地指出,否则在本文和所附权利要求中所使用的词语的单数形式包括复数,反之亦然。因而,当提及单数时,通常包括相应术语的复数。相似地,措辞“包含”和“包括”将解释为包含在内而不是独占性地。同样地,术语“包括”和“或”应当解释为包括在内的,除非本文中明确禁止这样的解释。在本文中使用术语“示例”之处,特别是当其位于一组术语之后时,所述“示例”仅仅是示例性的和阐述性的,且不应当被认为是独占性的或广泛性的。
适应性的进一步的方面和范围从本文中提供的描述变得明显。应当理解,本申请的各个方面可以单独或者与一个或多个其它方面组合实施。还应当理解,本文中的描述和特定实施例旨在仅说明的目的并不旨在限制本申请的范围。
以上对本公开的若干实施例进行了详细描述,但显然,本领域技术人员可以在不脱离本公开的精神和范围的情况下对本公开的实施例进行各种修改和变型。本公开的保护范围由所附的权利要求限定。
Claims (9)
1.一种小程序插件的开发处理方法,其特征在于,所述开发处理方法包括:
获取小程序插件代码包;
按照文件类型将所述小程序插件代码包分成逻辑文件、页面样式文件和配置文件;
从所述逻辑文件中获取JavaScript代码;
从所述页面样式文件中获取XML代码和CSS代码;
根据所述XML代码生成XML语法树;
将所述XML语法树转换为小程序架构下的运行时;
根据所述CSS代码生成CSS语法树;
将所述CSS语法树转换为小程序架构下可解析结构的属性信息;
从所述配置文件中获取所述小程序插件的配置信息;以及
将所述JavaScript代码、所述小程序架构下的运行时、所述属性信息以及所述配置信息注入小程序以获得所述小程序插件;
其中,将所述XML语法树转换为小程序架构下的运行时包括:
初始化运行时队列;
解析所述XML语法树以获取所述XML语法树中的每个元素;
针对每个元素,根据该元素生成运行时函数,其中,该运行时函数的名称被设置为该元素的名称;
针对每个元素,获取该元素的每个属性的唯一标识符和值,并将所获取的唯一标识符和值作为参数注入所述运行时函数;以及
将所述运行时函数推入经初始化的运行时队列中以生成所述运行时。
2.根据权利要求1所述的开发处理方法,其特征在于,所述开发处理方法还包括:
根据所述小程序插件的唯一标识符和版本号生成秘钥;
将所述小程序插件的代码进行分组;
利用所述秘钥对每个分组进行加密以生成针对该分组的分组密文;以及
将所有分组密文组合成加密小程序插件包。
3.根据权利要求1或2所述的开发处理方法,其特征在于,将所述CSS语法树转换为小程序架构下可解析结构的属性信息包括:
初始化小程序页面结构;
解析所述CSS语法树以获取CSS规则;
针对每个CSS规则,获取该CSS规则的选择器,所述选择器定义待设置样式的元素;
针对每个选择器,获取与该选择器相关联的申明语句所定义的属性和属性值;以及
使用所述选择器定义的元素、所获取的属性和属性值来更新所述小程序页面结构。
4.根据权利要求1或2所述的开发处理方法,其特征在于,所述开发处理方法还包括:
预先确定针对多个候选运行平台的XML语法树解析规则和CSS语法树解析规则;
确定所述小程序插件的目标运行平台;
响应于所述目标运行平台是所述多个候选运行平台中的一个,将与所述目标运行平台相对应的XML语法树解析规则和CSS语法树解析规则分别用于解析所述XML语法树和所述CSS语法树;以及
响应于所述目标运行平台不是所述多个候选运行平台中的一个,将默认的XML语法树解析规则和CSS语法树解析规则分别用于解析所述XML语法树和所述CSS语法树。
5.根据权利要求1或2所述的开发处理方法,其特征在于,获取小程序插件代码包包括:
确定是否存在由其它开发平台生成的小程序插件代码包,其中,所述其它开发平台是与所述小程序插件的当前开发平台不同的开发平台;
响应于存在由所述其它开发平台生成的小程序插件代码包,直接接收由所述其它开发平台生成的小程序插件代码包;以及
响应于不存在由所述其它开发平台生成的小程序插件代码包,向用户开放在所述当前开发平台新建小程序插件代码包的权限并接收由用户新建的小程序插件代码包。
6.根据权利要求1或2所述的开发处理方法,其特征在于,所述开发处理方法还包括:
在获得所述小程序插件之后,接收来自用户的开发指令,所述开发指令指示对所述小程序插件进行删除功能、增加功能、或者修改功能的操作;以及
按照所述开发指令在所述小程序插件中删除功能、增加功能、或者修改功能。
7.根据权利要求1或2所述的开发处理方法,其特征在于,从所述逻辑文件中获取JavaScript代码包括:
获取全部JavaScript文件;
针对每个JavaScript文件,确定所述小程序插件的目标运行环境是否支持该JavaScript文件对应的ES5代码;以及
响应于确定所述目标运行环境支持该JavaScript文件对应的ES5代码,将该JavaScript文件中的JavaScript代码转换为ES5代码;
其中,所述ES5代码代替所述JavaScript代码被注入所述小程序。
8.一种小程序插件的开发处理装置,其特征在于,所述开发处理装置包括:
至少一个处理器;以及
存储有计算机程序的至少一个存储器;
其中,当所述计算机程序由所述至少一个处理器执行时,使得所述开发处理装置执行根据权利要求1至7中任一项所述的开发处理方法的步骤。
9.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序在由处理器执行时实现根据权利要求1至7中任一项所述的开发处理方法的步骤。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202311225434.7A CN116954571B (zh) | 2023-09-21 | 2023-09-21 | 小程序插件的开发处理方法及装置、计算机可读存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202311225434.7A CN116954571B (zh) | 2023-09-21 | 2023-09-21 | 小程序插件的开发处理方法及装置、计算机可读存储介质 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN116954571A CN116954571A (zh) | 2023-10-27 |
| CN116954571B true CN116954571B (zh) | 2023-12-22 |
Family
ID=88460552
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202311225434.7A Active CN116954571B (zh) | 2023-09-21 | 2023-09-21 | 小程序插件的开发处理方法及装置、计算机可读存储介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN116954571B (zh) |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN106980504A (zh) * | 2017-03-28 | 2017-07-25 | 腾讯科技(深圳)有限公司 | 一种应用程序开发方法及其工具、设备 |
| CN108804613A (zh) * | 2018-05-30 | 2018-11-13 | 国网山东省电力公司经济技术研究院 | 一种多源数据库实时融合系统及其融合方法 |
| CN113934405A (zh) * | 2021-10-21 | 2022-01-14 | 深圳市腾讯网域计算机网络有限公司 | 插件处理方法、装置、设备、存储介质及计算机程序产品 |
| CN114064003A (zh) * | 2021-11-16 | 2022-02-18 | 深圳前海微众银行股份有限公司 | 小程序生成方法、装置、设备及存储介质 |
| CN114115903A (zh) * | 2021-11-24 | 2022-03-01 | 支付宝(杭州)信息技术有限公司 | 一种对小程序的加固、小程序运行方法及装置 |
| CN116243923A (zh) * | 2023-02-15 | 2023-06-09 | 拉扎斯网络科技(上海)有限公司 | 一种小程序处理方法、装置及电子设备 |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP1452963A3 (en) * | 2003-02-28 | 2007-06-06 | Sap Ag | Providing runtime object by instantiating template-derived classes |
-
2023
- 2023-09-21 CN CN202311225434.7A patent/CN116954571B/zh active Active
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN106980504A (zh) * | 2017-03-28 | 2017-07-25 | 腾讯科技(深圳)有限公司 | 一种应用程序开发方法及其工具、设备 |
| CN108804613A (zh) * | 2018-05-30 | 2018-11-13 | 国网山东省电力公司经济技术研究院 | 一种多源数据库实时融合系统及其融合方法 |
| CN113934405A (zh) * | 2021-10-21 | 2022-01-14 | 深圳市腾讯网域计算机网络有限公司 | 插件处理方法、装置、设备、存储介质及计算机程序产品 |
| CN114064003A (zh) * | 2021-11-16 | 2022-02-18 | 深圳前海微众银行股份有限公司 | 小程序生成方法、装置、设备及存储介质 |
| CN114115903A (zh) * | 2021-11-24 | 2022-03-01 | 支付宝(杭州)信息技术有限公司 | 一种对小程序的加固、小程序运行方法及装置 |
| CN116243923A (zh) * | 2023-02-15 | 2023-06-09 | 拉扎斯网络科技(上海)有限公司 | 一种小程序处理方法、装置及电子设备 |
Non-Patent Citations (1)
| Title |
|---|
| 一种SQL注入攻击防御研究;杨晓磊等;科技传播(13);全文 * |
Also Published As
| Publication number | Publication date |
|---|---|
| CN116954571A (zh) | 2023-10-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9122490B2 (en) | Code dependency calculation | |
| US8997070B2 (en) | Extension mechanism for scripting language compiler | |
| JP5204070B2 (ja) | ソフトウェア成果物の第2バージョンに移行する際に、当該ソフトウェア成果物の第1バージョンになされたカスタマイズをマージするためのツールを生成する方法、コンピュータ使用可能な媒体及びデータ処理システム | |
| US7340718B2 (en) | Unified rendering | |
| CN110704064B (zh) | 编译和执行智能合约的方法及装置 | |
| CN110704063B (zh) | 编译和执行智能合约的方法及装置 | |
| US8850414B2 (en) | Direct access of language metadata | |
| TWI536263B (zh) | 將作業系統之原始應用程式介面投射至其它程式語言 | |
| US8191038B1 (en) | Using a templating language to produce a host language factory for a safe subset of a templated language | |
| CN110688122B (zh) | 编译和执行智能合约的方法及装置 | |
| US7130862B2 (en) | Methods, systems and computer program prodcuts for validation of XML instance documents using Java classloaders | |
| US20090019432A1 (en) | Generating A Dynamic Content Creation Program | |
| US20070050707A1 (en) | Enablement of multiple schema management and versioning for application-specific xml parsers | |
| CN108595334B (zh) | 一种计算Java程序动态切片的方法、装置及可读存储介质 | |
| US20190034178A1 (en) | Compiling non-native constants | |
| CN115686471A (zh) | 代码的生成方法及装置、处理器和电子设备 | |
| US9529573B2 (en) | Graphical user interface generation through use of a binary file | |
| CN116954571B (zh) | 小程序插件的开发处理方法及装置、计算机可读存储介质 | |
| CN115481346A (zh) | 一种资源信息处理方法、装置、设备及存储介质 | |
| US8856095B2 (en) | Configurable plug-in architecture for manipulating XML-formatted information | |
| CN119512559A (zh) | 一种文件处理方法、装置及相关设备 | |
| CN114625377A (zh) | 框架项目转换方法、框架项目转换装置、设备及存储介质 | |
| HK40021005B (zh) | 编译和执行智能合约的方法及装置 | |
| HK40021005A (zh) | 编译和执行智能合约的方法及装置 | |
| CN120508283A (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 |