CN116126348A - 一种实时预览的低代码应用程序的文件编译方法 - Google Patents
一种实时预览的低代码应用程序的文件编译方法 Download PDFInfo
- Publication number
- CN116126348A CN116126348A CN202310408491.2A CN202310408491A CN116126348A CN 116126348 A CN116126348 A CN 116126348A CN 202310408491 A CN202310408491 A CN 202310408491A CN 116126348 A CN116126348 A CN 116126348A
- Authority
- CN
- China
- Prior art keywords
- file
- compiling
- target
- structural feature
- low
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000012986 modification Methods 0.000 claims abstract description 49
- 230000004048 modification Effects 0.000 claims abstract description 49
- 230000003068 static effect Effects 0.000 claims description 19
- 238000009877 rendering Methods 0.000 claims description 18
- 238000013500 data storage Methods 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 10
- 238000004458 analytical method Methods 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 6
- 238000000889 atomisation Methods 0.000 claims description 4
- 239000000284 extract Substances 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 230000001360 synchronised effect Effects 0.000 claims description 3
- 238000012546 transfer Methods 0.000 claims description 3
- 238000012795 verification Methods 0.000 claims description 3
- 238000003032 molecular docking Methods 0.000 claims description 2
- 238000012935 Averaging Methods 0.000 claims 1
- 230000006855 networking Effects 0.000 abstract description 4
- 238000012423 maintenance Methods 0.000 abstract description 2
- 238000013519 translation Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- 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/37—Compiler construction; Parser generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45529—Embedded in an application, e.g. JavaScript in a Web browser
-
- 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)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种实时预览的低代码应用程序的文件编译方法,该方法包括构建低代码应用程序的文件编译***;启动服务器,通过服务器在编辑器和所述文件编译***之间建立长连接;编辑器发起Schema文件修改请求,并将所述Schema文件修改请求发送至所述文件编译***;文件编译***理解并动态编译所述Schema文件修改请求,呈现预览体验。本申请针对低代码应用的文件设置了统一的编译***,能将编辑器的修改瞬时呈现在联网并登陆的设备上,提高了编译平台的自定义能力及可扩展性,更易于用户维护。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种实时预览的低代码应用程序的文件编译方法。
背景技术
Schema文件是低代码平台开发的低代码应用程序对应的结构化描述文件,低代码开发平台例如为Zion平台,Zion平台是一个所见即所得的低代码应用开发及运营平台,基于自动代码生成技术,在无需工程师的参与下,非技术人员(产品经理、设计师等)就能够自主完成完整的跨平台产品的实现及迭代。用户可在Zed平台中编辑出待上线产品对应的Zion Schema文件。Zed平台是Zion产品框架中面向终端用的可视化编辑器,Zion Schema文件是一份描述Zion应用的元数据,最后基于Zion Schema文件进行编译后可得到编译结果。
现有技术中,由于Zion Schema文件只是一份描述文件,其并不具备运行能力,因此目前在基于Zion Schema文件进行编译时,需要通过第三方工具(例如ZType)对ZionSchema文件进行处理,并将处理结果与预设项目模板进行结合后生成中间工程代码,以及对中间工程代码进行构建后才能生成最终可运行的运行时代码,可见,现有的方式不能将编辑器的修改瞬时呈现在联网并登陆的设备上,因此导致目前所谓的无代码平台或者低代码平台存在自定义能力及可扩展性差的问题,不易于维护。
发明内容
本申请实施例提供了一种实时预览的低代码应用程序的文件编译方法。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。
本申请实施例提供了一种实时预览的低代码应用程序的文件编译方法,方法包括:
构建低代码应用程序的文件编译***;
启动服务器,通过服务器在编辑器和所述文件编译***之间建立长连接;
编辑器发起Schema文件修改请求,并将所述Schema文件修改请求发送至所述文件编译***;
文件编译***理解并动态编译所述Schema文件修改请求,呈现预览体验。
可选的,所述编辑器发起Schema文件修改请求,并将所述请求发送至所述文件编译***包括:
所述编辑器发起Schema文件修改请求,Schema文件修改请求通过所述长连接实时同步到服务器,经服务器校验并处理后得到更新Schema,再将更新Schema发送至文件编译***。
可选的,所述Schema文件修改请求包括封装成原子化的diff修改和基础Schema信息。
可选的,低代码应用程序的文件编译***包括:
节点服务模块、转译器模块以及浏览器模块;其中,
节点服务模块、转译器模块以及浏览器模块通信连接;其中,
节点服务模块,用于在接收到用户请求时,通过预先调用的服务接口获取用户请求对应的低代码应用程序的目标Schema文件;所述目标Schema文件是在低代码平台编辑的低代码应用程序的结构化描述文件;
转译器模块,用于将目标Schema文件的原始数据结构转译为目标数据结构,得到转译的目标应用数据;
节点服务模块,还用于根据目标应用数据进行超文本标记语言渲染,得到HTML文本,并发送至浏览器模块;
浏览器模块,用于对HTML文本进行解释执行,生成最终编译结果进行展示。
可选的,将目标Schema文件的原始数据结构转译为目标数据结构,得到转译的目标应用数据,包括:
获取目标Schema文件的组件元信息的描述,得到低代码应用程序的邻接表;邻接表描述了程序组件之间的从属信息;
将邻接表递归渲染成组件实例树;
采用后序遍历方式确定组件实例树中每个组件实例的数据结构;
将每个组件实例的数据结构输入预先生成的数据结构转换器中,输出每个组件实例的转译的目标应用数据。
可选的,采用后序遍历方式确定组件实例树中每个组件实例的数据结构,包括:
采用后序遍历方式遍历获取组件实例树中每个组件实例;
加载预先存储的组件实例与数据存储路径的映射关系;
在映射关系中获取每个组件实例对应的组件数据存储路径,得到每个组件实例的数据存储路径;
基于每个组件实例的数据存储路径获取每个组件实例对应的数据描述;
根据每个组件实例对应的数据描述确定每个组件实例对应的数据结构。
可选的,预先生成的数据结构转换器包括标准模板分析模块、结构特征比对模块以及结构转换模块;
将每个组件实例的数据结构输入预先生成的数据结构转换器中,输出每个组件实例的转译的目标应用数据,包括:
标准模板分析模块获取预先设定的目标数据结构的目标模板,并按照自上而下的顺序提取目标模板中数据结构的每个第一结构特征,得到第一结构特征序列;
结构特征比对模块按照自上而下的顺序提取每个组件实例的数据结构的每个第二结构特征,得到第二结构特征序列,并计算第一结构特征序列与第二结构特征序列之间的相关性值,以及将计算的相关性值取平均值,得到目标相关性值;
结构转换模块在目标相关性值小于等于预设相关性阈值时,将每个组件实例的数据结构转换为目标模板的数据结构,得到每个组件实例的转译的目标应用数据。
可选的,计算第一结构特征序列与第二结构特征序列之间的相关性值,包括:
获取第一结构特征,第一结构特征为第一结构特征序列中任意一个结构特征;
在第二结构特征序列中确定第一结构特征对应的第二结构特征;
对第一结构特征进行向量编码,得到第一特征向量;
对第一结构特征对应的第二结构特征进行向量编码,得到第二特征向量;
计算第一特征向量与第二特征向量之间的相似距离,并将计算出的每个相似距离确定为第一结构特征序列与第二结构特征序列之间的相关性值;相似距离计算公式为:
;
其中,为第一结构特征序列中任意一个结构特征,为在第二结构特征序列中确定的与对应的第二结构特征,p为第一结构特征序列中的第一结构特征数量。
可选的,根据目标应用数据进行超文本标记语言渲染,得到HTML文本,并发送至浏览器模块,包括:
请求低代码应用程序的静态资源链接;
执行目标应用数据,以请求到用户请求对应的业务数据;
基于静态资源链接和业务数据进行HTML渲染,得到基于超文本标记语言的HTML文本;
将HTML文本发送至浏览器模块。
可选的,基于静态资源链接和业务数据进行HTML渲染,包括:
请求静态资源链接对应的页面静态资源数据;
利用预设JavaScript脚本在业务数据中进行抓取,得抓取的关键数据;
对抓取的关键数据进行解析,得到以Json字符串格式存储的目标元素;
根据静态资源数据与目标元素进行前端页面渲染操作。
可选的,对HTML文本进行解释执行,生成最终编译结果进行展示,包括:
获取HTML文本的信息,并基于获取的信息确定HTML文本的目标类型;
根据目标类型对接符合HTML文本的浏览器内核;
根据浏览器内核处理HTML文本,生成最终编译结果;
将最终编译结果进行展示。
可选的,根据目标类型对接符合HTML文本的浏览器内核,包括:
在目标类型为WAP类型的情况下,选择浏览器开发方提供的浏览器内核;
在目标类型不为WAP类型的情况下,则判定HTML文本的首行代码起始是否为预设标识符开头;当HTML文本的首行代码起始为预设标识符开头时,选择浏览器开发方提供的浏览器内核;当HTML文本的首行代码起始不为预设标识符开头时,则判断浏览器所在终端是否为万维网代理模式;如果是代理模式,则选择后台中转;如果不是代理模式,则选择浏览器所在终端提供的浏览器内核。
可选的,文件编译***理解并动态编译所述Schema文件修改请求后还包括:文件编译***对所述修改请求的实时渲染得到HTML文本,并发送至浏览器模块对HTML文本进行解释执行。
本申请实施例提供的技术方案可以包括以下有益效果:
在本申请实施例提供的低代码应用程序的文件编译方法中,构建低代码应用程序的文件编译***;启动服务器,通过服务器在编辑器和所述文件编译***之间建立长连接;编辑器发起Schema文件修改请求,并将所述Schema文件修改请求发送至所述文件编译***;文件编译***理解并动态编译所述Schema文件修改请求,呈现预览体验。由于本申请针对低代码应用的文件设置了统一的编译***,能将编辑器的修改瞬时呈现在联网并登陆的设备上,提高了编译平台的自定义能力及可扩展性,更易于用户维护。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是本申请实施例提供的一种实时预览的低代码应用程序的文件编译方法的流程示意图;
图2是本申请实施例提供的一种组件遍历示意图。
具体实施方式
以下描述和附图充分地示出本申请的具体实施方案,以使本领域的技术人员能够实践它们。
应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
到目前为止,由于低代码应用程序的Zion Schema文件只是一份描述文件,其并不具备运行能力,因此目前在基于Zion Schema文件进行编译时,需要通过第三方工具(例如ZType)对Zion Schema文件进行处理,并将处理结果与预设项目模板进行结合后生成中间工程代码,以及对中间工程代码进行构建后才能生成最终可运行的运行时代码,现有的方式不能将编辑器的修改瞬时呈现在联网并登陆的设备上,因此导致目前所谓的无代码平台或者低代码平台存在自定义能力及可扩展性差的问题,不易于维护。为此,本申请提供了一种实时预览的低代码应用程序的文件编译方法,以解决上述相关技术问题中存在的问题。在本申请实施例提供的低代码应用程序的文件编译方法中,构建低代码应用程序的文件编译***;启动服务器,通过服务器在编辑器和所述文件编译***之间建立长连接;编辑器发起Schema文件修改请求,并将所述Schema文件修改请求发送至所述文件编译***;文件编译***理解并动态编译所述Schema文件修改请求,呈现预览体验。由于本申请针对低代码应用的文件设置了统一的编译***,使得低代码应用的文件在不依赖第三方工具的前提下,可在任何安装了该编译***的设备上进行自主编译,提升了低代码应用源码文件的编译效率;并且在编辑器上进行任何修改,都能在瞬间内实时呈现在任何联网并登录的设备上,无需经过编译或部署流程,从而解决了无代码平台或者低代码平台存在自定义能力及可扩展性差的问题,使产品更易于用户维护。下面采用示例性的实施例进行详细说明。
请参见图1,为本申请实施例提供了一种应用于低代码应用程序的文件编译***的可实现实时预览的低代码应用程序的文件编译方法的流程示意图。如图1所示,本申请实施例的检测方法可以包括以下步骤:
S101,构建低代码应用程序的文件编译***。
具体的,所述***包括:节点服务模块、转译器模块以及浏览器模块;其中,节点服务模块、转译器模块以及浏览器模块通信连接;其中,节点服务模块,用于在接收到用户请求时,通过预先调用的服务接口获取用户请求对应的低代码应用程序的目标Schema文件;所述目标Schema文件是在低代码平台编辑的低代码应用程序的结构化描述文件;转译器模块,用于将目标Schema文件的原始数据结构转译为目标数据结构,得到转译的目标应用数据;节点服务模块,还用于根据目标应用数据进行超文本标记语言渲染,得到HTML文本,并发送至浏览器模块;浏览器模块,用于对HTML文本进行解释执行,生成最终编译结果进行展示。
在本申请实施例中,***在将目标Schema文件的原始数据结构转译为目标数据结构,得到转译的目标应用数据时,首先获取目标Schema文件的组件元信息的描述,得到低代码应用程序的邻接表;邻接表描述了程序组件之间的从属信息,然后将邻接表递归渲染成组件实例树,其次采用后序遍历方式确定组件实例树中每个组件实例的数据结构,最后将每个组件实例的数据结构输入预先生成的数据结构转换器中,输出每个组件实例的转译的目标应用数据。
具体的,后序遍历方式也可理解为自底向上的遍历方式,在具体的代码实现中,特定类型的组件会预先提供可控后置关联组件修改目标组件的状态的方法,当后置关联组件进行处理时,再对目标组件进行信息补充。例如图2所示,按照顺序遍历邻接表,C 组件完成处理后处理 D 和E组件,但此时如果 C 组件的信息并不完整,在遍历到 F,G 组件时才能完成对 C组件所需信息的补充。实际上即便 F,G 完成处理之后,C 组件仍然无法确认自身状态是否完整,因为无法确认后置组件是否仍然会有 C 所需的信息。计算机语言可以从语法上保证这一点,对应 LR(k)Parser 的遍历过程,但Schema文件的组件无序性和设计时信息离散性,导致部分组件必须在整个Schema文件全部遍历完成之后才能完成转译。
需要说明的是,组件是对一系列的视图、交互的封装,状态是对组件当前形态的描述,状态由数据接口相应,用户交互事件,环境数据(页面、路由等)和其他触发器(定时器等)产生,状态决定了一个组件的视图现状和可能的交互行为。
在本申请实施例中,在采用后序遍历方式确定组件实例树中每个组件实例的数据结构时,首先采用后序遍历方式遍历获取组件实例树中每个组件实例,然后加载预先存储的组件实例与数据存储路径的映射关系,其次在映射关系中获取每个组件实例对应的组件数据存储路径,得到每个组件实例的数据存储路径,再基于每个组件实例的数据存储路径获取每个组件实例对应的数据描述,最后根据每个组件实例对应的数据描述确定每个组件实例对应的数据结构。
在本申请实施例中,预先生成的数据结构转换器包括标准模板分析模块、结构特征比对模块以及结构转换模块。
具体的,在将每个组件实例的数据结构输入预先生成的数据结构转换器中,输出每个组件实例的转译的目标应用数据时,首先标准模板分析模块获取预先设定的目标数据结构的目标模板,并按照自上而下的顺序提取目标模板中数据结构的每个第一结构特征,得到第一结构特征序列,然后结构特征比对模块按照自上而下的顺序提取每个组件实例的数据结构的每个第二结构特征,得到第二结构特征序列,并计算第一结构特征序列与第二结构特征序列之间的相关性值,以及将计算的相关性值取平均值,得到目标相关性值,其次结构转换模块在目标相关性值小于等于预设相关性阈值时,将每个组件实例的数据结构转换为目标模板的数据结构,得到每个组件实例的转译的目标应用数据。
在本申请实施例中,在计算第一结构特征序列与第二结构特征序列之间的相关性值时,首先获取第一结构特征,第一结构特征为第一结构特征序列中任意一个结构特征,再在第二结构特征序列中确定第一结构特征对应的第二结构特征,然后对第一结构特征进行向量编码,得到第一特征向量,其次对第一结构特征对应的第二结构特征进行向量编码,得到第二特征向量,最后计算第一特征向量与第二特征向量之间的相似距离,并将计算出的每个相似距离确定为第一结构特征序列与第二结构特征序列之间的相关性值;相似距离计算公式为:
;
其中,为第一结构特征序列中任意一个结构特征,为在第二结构特征序列中确定的与对应的第二结构特征,p为第一结构特征序列中的第一结构特征数量。
在一种可能的实现方式中,在进行具体的转译时,其本质就是将目标Schema文件的数据结构由一个特定的数据结构转变为另一个特定的数据结构,因此上述转译的具体算法可以封装为一个Transpiler类的getMeta()方法,此时Transpiler类构造函数中需要传入Schema文件,作为转换的输入,Transpiler 类提供一个泛型类型,子实类可以通过该泛型指定自身转译的目标结构。transpile 异步抽象方法为每一个子实类必须实现的方法,该方法必需返回一个在子实类声明时的泛型结构。具体执行 transpile 方法的时机取决于类实例的持有者何时调用getMeta()方法通过懒执行的方式调用 transpile,执行转换,得到最终的目标数据结构。
在本申请实施例中,在得到目标数据结构后,需要节点服务模块根据目标应用数据进行超文本标记语言渲染,得到HTML文本,并发送至浏览器模块。首先请求低代码应用程序的静态资源链接,然后执行目标应用数据,以请求到用户请求对应的业务数据,其次基于静态资源链接和业务数据进行HTML渲染,得到基于超文本标记语言的HTML文本,最后将HTML文本发送至浏览器模块。
具体的,在基于静态资源链接和业务数据进行HTML渲染时,首先请求静态资源链接对应的页面静态资源数据,然后利用预设JavaScript脚本在业务数据中进行抓取,得抓取的关键数据,其次对抓取的关键数据进行解析,得到以Json字符串格式存储的目标元素,最后根据静态资源数据与目标元素进行前端页面渲染操作。
在本申请实施例中,在浏览器模块得到HTML文本后,首先获取HTML文本的信息,并基于获取的信息确定HTML文本的目标类型,然后根据目标类型对接符合HTML文本的浏览器内核,其次根据浏览器内核处理HTML文本,生成最终编译结果,最后将最终编译结果进行展示。
具体的,在根据目标类型对接符合HTML文本的浏览器内核时,首先在目标类型为WAP类型的情况下,选择浏览器开发方提供的浏览器内核,然后在目标类型不为WAP类型的情况下,则判定HTML文本的首行代码起始是否为预设标识符开头;当HTML文本的首行代码起始为预设标识符开头时,选择浏览器开发方提供的浏览器内核;当HTML文本的首行代码起始不为预设标识符开头时,则判断浏览器所在终端是否为万维网代理模式;如果是代理模式,则选择后台中转;如果不是代理模式,则选择浏览器所在终端提供的浏览器内核。
使用上述低代码应用程序的文件编译***的好处在于,由于设置了统一的编译***,使得低代码应用的文件在不依赖第三方工具的前提下,可在任何安装了该编译***的设备上进行自主编译,从而实现了跨平台编译,能够提升低代码应用文件的编译效率。
S102,启动服务器,通过服务器在编辑器和所述文件编译***之间建立长连接。
S103,编辑器发起Schema文件修改请求,并将所述请求发送至所述文件编译***。
具体的,Schema文件修改请求通过长连接实时同步到服务器,经服务器校验并处理后得到更新Schema,再将更新Schema发送至文件编译***。
在本申请实施例中,所述Schema文件修改请求包括封装成原子化的diff修改和基础Schema信息。diff修改表示Schema文件修改的差异,具体包括修改人、修改时间和修改的信息,并标识出这些差异的过程。
在本申请实施例中,优选的,为了提升Schema同步效率,编辑器和文件编译***通过渐进式加载的方式实现数据同步,具体的,针对所有的Schema修改请求,文件编译***会不断基于本地信息加载原子化的diff修改实现数据同步。S104,文件编译***理解并动态编译所述Schema文件修改请求,呈现预览体验。
在本申请实施例中,所述文件编译***理解并动态编译所述Schema文件修改请求后还包括:文件编译***对所述修改请求的实时渲染,得到HTML文本,并发送至浏览器模块对HTML文本进行解释执行,生成预览展示。优选的,基于渐进式的加载方式,在渲染层,根据diff修改仅需加载最小差值变化就能实现更新效率的提升。
在本申请实施例中,还可以使用CDN网络对动态编译后的修改请求分配静态资源链接,保证负载均衡。
由于本申请针对低代码应用的文件设置了统一的编译***,使得低代码应用的文件在不依赖第三方工具的前提下,可在任何安装了该编译***的设备上进行自主编译,提升了低代码应用源码文件的编译效率;并且在编辑器上进行任何修改,都能在瞬间内实时呈现在任何联网并登录的设备上,无需经过编译或部署流程,从而解决了无代码平台或者低代码平台存在自定义能力及可扩展性差的问题,使产品更易于用户维护。
本申请还提供一种计算机可读介质,其上存储有程序指令,该程序指令被处理器执行时实现上述各个方法实施例提供的实时预览的低代码应用程序的文件编译方法。
本申请还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个方法实施例的实时预览的低代码应用程序的文件编译方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,实时预览的低代码应用程序的文件编译的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,实时预览的低代码应用程序的文件编译的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (10)
1.一种实时预览的低代码应用程序的文件编译方法,其特征在于,所述方法包括:
S101,构建低代码应用程序的文件编译***;
S102,启动服务器,通过服务器在编辑器和所述文件编译***之间建立长连接;
S103,编辑器发起Schema文件修改请求,并将所述Schema文件修改请求发送至所述文件编译***;
S104,文件编译***理解并动态编译所述Schema文件修改请求,呈现预览体验。
2.根据权利要求1所述的一种实时预览的低代码应用程序的文件编译方法,其特征在于,所述编辑器发起Schema文件修改请求,并将所述请求发送至所述文件编译***包括:所述编辑器发起Schema文件修改请求,Schema文件修改请求通过所述长连接实时同步到服务器,经服务器校验并处理后得到更新Schema,再将更新Schema发送至文件编译***。
3.根据权利要求1或2所述的一种实时预览的低代码应用程序的文件编译方法,其特征在于,所述Schema文件修改请求包括封装成原子化的diff修改和基础Schema信息。
4.根据权利要求1所述的一种实时预览的低代码应用程序的文件编译方法,其特征在于,所述低代码应用程序的文件编译***包括:
节点服务模块、转译器模块以及浏览器模块;其中,
所述节点服务模块、转译器模块以及浏览器模块通信连接;其中,
所述节点服务模块,用于在接收到用户请求时,通过预先调用的服务接口获取所述用户请求对应的低代码应用程序的目标Schema文件;所述目标Schema文件是在低代码平台编辑的低代码应用程序的结构化描述文件;
所述转译器模块,用于将所述目标Schema文件的原始数据结构转译为目标数据结构,得到转译的目标应用数据;
所述节点服务模块,还用于根据所述目标应用数据进行超文本标记语言渲染,得到HTML文本,并发送至浏览器模块;
所述浏览器模块,用于对所述HTML文本进行解释执行,生成最终编译结果进行展示。
5.根据权利要求4所述的一种实时预览的低代码应用程序的文件编译方法,其特征在于,所述文件编译***理解并动态编译所述Schema文件修改请求后还包括:文件编译***对所述修改请求的实时渲染得到HTML文本,并发送至浏览器模块对HTML文本进行解释执行。
6.根据权利要求4所述的一种实时预览的低代码应用程序的文件编译方法,其特征在于,所述将所述目标Schema文件的原始数据结构转译为目标数据结构,得到转译的目标应用数据,包括:
获取所述目标Schema文件的组件元信息的描述,得到低代码应用程序的邻接表;所述邻接表描述了程序组件之间的从属信息;
将所述邻接表递归渲染成组件实例树;
采用后序遍历方式确定所述组件实例树中每个组件实例的数据结构;
将所述每个组件实例的数据结构输入预先生成的数据结构转换器中,输出所述每个组件实例的转译的目标应用数据。
7.根据权利要求6所述的一种实时预览的低代码应用程序的文件编译方法,其特征在于,所述采用后序遍历方式确定所述组件实例树中每个组件实例的数据结构,包括:
采用后序遍历方式遍历获取所述组件实例树中每个组件实例;
加载预先存储的组件实例与数据存储路径的映射关系;
在所述映射关系中获取每个组件实例对应的组件数据存储路径,得到每个组件实例的数据存储路径;
基于所述每个组件实例的数据存储路径获取每个组件实例对应的数据描述;
根据所述每个组件实例对应的数据描述确定每个组件实例对应的数据结构。
8.根据权利要求6所述的一种实时预览的低代码应用程序的文件编译方法,其特征在于,所述预先生成的数据结构转换器包括标准模板分析模块、结构特征比对模块以及结构转换模块;
所述将所述每个组件实例的数据结构输入预先生成的数据结构转换器中,输出所述每个组件实例的转译的目标应用数据,包括:
标准模板分析模块获取预先设定的目标数据结构的目标模板,并按照自上而下的顺序提取所述目标模板中数据结构的每个第一结构特征,得到第一结构特征序列;
结构特征比对模块按照自上而下的顺序提取所述每个组件实例的数据结构的每个第二结构特征,得到第二结构特征序列,并计算所述第一结构特征序列与所述第二结构特征序列之间的相关性值,以及将计算的相关性值取平均值,得到目标相关性值;
结构转换模块在所述目标相关性值小于等于预设相关性阈值时,将所述每个组件实例的数据结构转换为所述目标模板的数据结构,得到每个组件实例的转译的目标应用数据;
其中,所述计算所述第一结构特征序列与所述第二结构特征序列之间的相关性值,包括:
获取第一结构特征,所述第一结构特征为所述第一结构特征序列中任意一个结构特征;
在所述第二结构特征序列中确定所述第一结构特征对应的第二结构特征;
对所述第一结构特征进行向量编码,得到第一特征向量;
对所述第一结构特征对应的第二结构特征进行向量编码,得到第二特征向量;
计算所述第一特征向量与所述第二特征向量之间的相似距离,并将计算出的每个相似距离确定为所述第一结构特征序列与所述第二结构特征序列之间的相关性值;所述相似距离计算公式为:
;
其中,为所述第一结构特征序列中任意一个结构特征,为在所述第二结构特征序列中确定的与对应的第二结构特征,p为第一结构特征序列中的第一结构特征数量。
9.根据权利要求4所述的一种实时预览的低代码应用程序的文件编译方法,其特征在于,所述根据所述目标应用数据进行超文本标记语言渲染,得到HTML文本,并发送至浏览器模块,包括:
请求所述低代码应用程序的静态资源链接;
执行所述目标应用数据,以请求到所述用户请求对应的业务数据;
基于所述静态资源链接和所述业务数据进行HTML渲染,得到基于超文本标记语言的HTML文本;
将所述HTML文本发送至浏览器模块;
其中,所述基于所述静态资源链接和所述业务数据进行HTML渲染,包括:
请求所述静态资源链接对应的页面静态资源数据;
利用预设JavaScript脚本在所述业务数据中进行抓取,得抓取的关键数据;
对抓取的所述关键数据进行解析,得到以Json字符串格式存储的目标元素;
根据所述静态资源数据与所述目标元素进行前端页面渲染操作。
10.根据权利要求4所述的一种实时预览的低代码应用程序的文件编译方法,其特征在于,所述对所述HTML文本进行解释执行,生成最终编译结果进行展示,包括:
获取所述HTML文本的信息,并基于获取的信息确定所述HTML文本的目标类型;
根据所述目标类型对接符合所述HTML文本的浏览器内核;
根据所述浏览器内核处理所述HTML文本,生成最终编译结果;
将所述最终编译结果进行展示;
其中,所述根据所述目标类型对接符合所述HTML文本的浏览器内核,包括:
在所述目标类型为WAP类型的情况下,选择浏览器开发方提供的浏览器内核;
在所述目标类型不为WAP类型的情况下,则判定所述HTML文本的首行代码起始是否为预设标识符开头;当所述HTML文本的首行代码起始为预设标识符开头时,选择浏览器开发方提供的浏览器内核;当所述HTML文本的首行代码起始不为预设标识符开头时,则判断所述浏览器所在终端是否为万维网代理模式;如果是代理模式,则选择后台中转;如果不是代理模式,则选择所述浏览器所在终端提供的浏览器内核。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310408491.2A CN116126348B (zh) | 2023-04-17 | 2023-04-17 | 一种实时预览的低代码应用程序的文件编译方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310408491.2A CN116126348B (zh) | 2023-04-17 | 2023-04-17 | 一种实时预览的低代码应用程序的文件编译方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116126348A true CN116126348A (zh) | 2023-05-16 |
CN116126348B CN116126348B (zh) | 2023-07-07 |
Family
ID=86295970
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310408491.2A Active CN116126348B (zh) | 2023-04-17 | 2023-04-17 | 一种实时预览的低代码应用程序的文件编译方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116126348B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060101438A1 (en) * | 2004-10-21 | 2006-05-11 | Microsoft Corporation | Conditional compilation of intermediate language code based on current environment |
US20150212838A1 (en) * | 2014-01-24 | 2015-07-30 | International Business Machines Corporation | Just-in-time expensive compilation hints |
CN114168117A (zh) * | 2021-10-27 | 2022-03-11 | 福建亿榕信息技术有限公司 | 一种基于设计器的信创低代码开发工具和存储设备 |
CN115202626A (zh) * | 2022-06-23 | 2022-10-18 | 苏州卓力创智科技有限公司 | 一种支持多技术栈组件的低代码前端开发方法 |
CN115407977A (zh) * | 2021-05-28 | 2022-11-29 | 腾讯科技(深圳)有限公司 | 一种信息编译方法、装置、设备及计算机可读存储介质 |
CN115587075A (zh) * | 2022-12-05 | 2023-01-10 | 北京合思信息技术有限公司 | 版式文件处理方法、装置、终端设备及存储介质 |
CN115639984A (zh) * | 2022-09-09 | 2023-01-24 | 金现代信息产业股份有限公司 | 一种前端线上编译引擎的实现方法及*** |
CN115712413A (zh) * | 2022-11-15 | 2023-02-24 | 广东中设智控科技股份有限公司 | 低代码开发方法、装置、设备及存储介质 |
CN115951875A (zh) * | 2022-12-28 | 2023-04-11 | 科大国创云网科技有限公司 | 一种DSL语言与Vue代码互相转换的解决方法及*** |
-
2023
- 2023-04-17 CN CN202310408491.2A patent/CN116126348B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060101438A1 (en) * | 2004-10-21 | 2006-05-11 | Microsoft Corporation | Conditional compilation of intermediate language code based on current environment |
US20150212838A1 (en) * | 2014-01-24 | 2015-07-30 | International Business Machines Corporation | Just-in-time expensive compilation hints |
CN115407977A (zh) * | 2021-05-28 | 2022-11-29 | 腾讯科技(深圳)有限公司 | 一种信息编译方法、装置、设备及计算机可读存储介质 |
CN114168117A (zh) * | 2021-10-27 | 2022-03-11 | 福建亿榕信息技术有限公司 | 一种基于设计器的信创低代码开发工具和存储设备 |
CN115202626A (zh) * | 2022-06-23 | 2022-10-18 | 苏州卓力创智科技有限公司 | 一种支持多技术栈组件的低代码前端开发方法 |
CN115639984A (zh) * | 2022-09-09 | 2023-01-24 | 金现代信息产业股份有限公司 | 一种前端线上编译引擎的实现方法及*** |
CN115712413A (zh) * | 2022-11-15 | 2023-02-24 | 广东中设智控科技股份有限公司 | 低代码开发方法、装置、设备及存储介质 |
CN115587075A (zh) * | 2022-12-05 | 2023-01-10 | 北京合思信息技术有限公司 | 版式文件处理方法、装置、终端设备及存储介质 |
CN115951875A (zh) * | 2022-12-28 | 2023-04-11 | 科大国创云网科技有限公司 | 一种DSL语言与Vue代码互相转换的解决方法及*** |
Non-Patent Citations (2)
Title |
---|
YENIER T. IZQUIERDOGRETTEL M. GARCÍAMARCO A. CASANOVA: ""Keyword search over schema-less RDF datasets by SPARQL query compilation"", 《INFORMATION SYSTEMS》 * |
盛振华: ""面向物联网的低代码建模平台的设计与实现"", 《中国优秀硕士学位论文全文数据库(电子期刊)》, no. 12 * |
Also Published As
Publication number | Publication date |
---|---|
CN116126348B (zh) | 2023-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112579097B (zh) | 软件项目构建方法、装置、存储介质及电子设备 | |
JP5225399B2 (ja) | デスクトップ・アプリケーション移行のためのシステムと方法 | |
US20180314622A1 (en) | System and method for implementing an api validator tool | |
US10108715B2 (en) | Transformation and presentation of on-demand native application crawling results | |
CN109032917B (zh) | 页面调试方法和***、移动终端以及电脑端 | |
CN103389895B (zh) | 一种前端页面的生成方法及*** | |
CN108415702B (zh) | 一种移动终端应用界面动态渲染方法和装置 | |
US8949792B2 (en) | Methods and systems for data service development | |
CN112329945A (zh) | 一种模型部署及推理的方法和装置 | |
US10021165B2 (en) | Method of sharing browsing on a web page displayed by a web browser | |
KR20140038459A (ko) | 통합 개발 환경에서의 라이브 브라우저 툴 제공 기법 | |
US20140330899A1 (en) | Data Infrastructure For Providing Interconnectivity Between Platforms, Devices, and Operating Systems | |
CN104572072A (zh) | 一种对基于mvc模式的程序的语言转换方法与设备 | |
JP2004362000A (ja) | ウェブアプリケーション開発支援装置、コンポーネント呼び出し監視装置、データ処理方法及びプログラム | |
CN108536431A (zh) | 一种全局命令行创建前端项目方法及*** | |
CN114706579A (zh) | 页面开发方法、装置、服务器及存储介质 | |
CN116126347B (zh) | 一种低代码应用程序的文件编译***和方法 | |
CN111310005B (zh) | 网络请求的处理方法及装置、服务器和存储介质 | |
CN112083926A (zh) | 一种Web用户界面生成方法及装置 | |
CN115408169A (zh) | 远程过程调用方法、装置、设备及可读存储介质 | |
CN116126348B (zh) | 一种实时预览的低代码应用程序的文件编译方法 | |
CN114610301A (zh) | 前端代码生成方法、装置、电子设备及存储介质 | |
CN105025065B (zh) | 将Web网站转换为Web应用的方法、装置与*** | |
CN105808727A (zh) | 基于html5的网站跨屏适配技术架构和适配方法 | |
CN112199094B (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 |