[发明专利]一种代码转换方法、装置、计算机设备和存储介质在审
申请号: | 202111250749.8 | 申请日: | 2021-10-26 |
公开(公告)号: | CN113971027A | 公开(公告)日: | 2022-01-25 |
发明(设计)人: | 向松涛 | 申请(专利权)人: | 北京字节跳动网络技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京中知法苑知识产权代理有限公司 11226 | 代理人: | 李明 |
地址: | 100041 北京市石景山区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 代码 转换 方法 装置 计算机 设备 存储 介质 | ||
本公开提供了一种代码转换方法、装置、计算机设备和存储介质,其中,该方法包括:获取服务端中目标运行环境对应的运行时代码;运行时代码包括基于第一语法规范形成的后端子代码和基于第二语法规范形成的前端子代码;目标运行环境用于实现前端子代码对后端子代码的调用;基于第二语法规范,将后端子代码转换为与第二语法规范相匹配的目标子代码;基于目标子代码和前端子代码,确定运行时代码对应的转换代码;其中,转换代码用于运行在浏览器中。本公开实施例能够将运行时代码准确地转换为能够在浏览器运行的转换代码,并保证得到的转换代码的准确性。
技术领域
本公开涉及代码转换技术领域,具体而言,涉及一种代码转换方法、装置、计算机设备和存储介质。
背景技术
Nodejs作为一个跨平台的javascript运行时,包括前端的JavaScript代码和后端的C++代码,利用Nodejs开发的代码模块或应用可以在服务端对应的各个操作系统中运行,而由于C++代码无法在浏览器中完美兼容,所以利用Nodejs开发的代码模块或应用也没法在浏览器中准确运行。
现有技术中,为了解决上述问题,通常利用构建工具(如抽象语法树)将代码模块对应的JavaScript代码和C++代码一起转化为浏览器能够运行的代码。但是,由于JavaScript代码为动态语言,直接利用构建工具对其进行分析的行为为静态的分析,将导致无法获取到JavaScript代码中的部分动态变量的准确值,进而导致转换后的代码的运行结果与原有的代码模块对应的运行结果不符,从而降低了代码运行的准确性。
发明内容
本公开实施例至少提供一种代码转换方法、装置、计算机设备和存储介质。
第一方面,本公开实施例提供了一种代码转换方法,包括:
获取服务端中目标运行环境对应的运行时代码;所述运行时代码包括基于第一语法规范形成的后端子代码和基于第二语法规范形成的前端子代码;所述目标运行环境用于实现前端子代码对后端子代码的调用;
基于所述第二语法规范,将所述后端子代码转换为与所述第二语法规范相匹配的目标子代码;
基于所述目标子代码和所述前端子代码,确定所述运行时代码对应的转换代码;其中,所述转换代码用于运行在浏览器中。
在一种可能的实施方式中,在确定所述转换代码之后,所述方法还包括:
从服务端获取所述目标子代码对应的目标文件;
将所述目标文件存储在所述浏览器对应的内部文件系统中,以使所述浏览器在运行所述转换代码的过程中,从所述内部文件系统中获取所述目标文件。
在一种可能的实施方式中,所述基于所述第二语法规范,将所述后端子代码转换为与所述第二语法规范相匹配的目标子代码,包括:
利用预设的代码转换工具,基于所述第二语法规范和所述第一语法规范之间的转换关系,将所述后端子代码转换为与所述第二语法规范相匹配的目标子代码。
在一种可能的实施方式中,所述基于所述目标子代码和所述前端子代码,确定所述运行时代码对应的转换代码,包括:
创建所述运行时代码对应的代码运行环境,并基于所述代码运行环境、所述目标子代码和所述前端子代码,确定所述转换代码。
在一种可能的实施方式中,所述创建所述运行时代码对应的代码运行环境,包括:
确定所述后端子代码对应的至少一个应用程序接口API,并针对每个所述API,创建该API对应的独立运行环境;
基于每个API对应的独立运行环境,创建所述运行时代码对应的代码运行环境。
在一种可能的实施方式中,在所述基于第二语法规范,将所述后端子代码转换为与所述第二语法规范相匹配的目标子代码之前,还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京字节跳动网络技术有限公司,未经北京字节跳动网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111250749.8/2.html,转载请声明来源钻瓜专利网。