【技术实现步骤摘要】
一种不同前端框架间的代码转换方法及系统及装置
[0001]本专利技术涉及前端
,具体地,涉及一种不同前端框架间的代码转换方法及系统及装置。
技术介绍
[0002]在现代web前端开发项目中,除极少数还在使用前后端不分离的开发模式外,几乎都是使用前端三大框架来开发web应用,三大框架分别是React、Vue和Angular,而国内大多数公司使用最多的是React和Vue框架,Vue作为框架中的后来者,有借鉴React和Angular的地方,所以Vue和React、Angular之间源码转换是可行且难度不高的,但在转换各种语法写法层面上重复繁琐,人工手动只能转少量的代码。目前还有一种针对React和Vue框架代码互转的方案是让不同框架共存一个项目里,可以不转换源码来使用多个框架,但项目整体不易于维护,对于要统一技术栈的项目来说不适用。因此如何解决不同前端框架组件之间的移植问题是很有意义的,现有技术中对于React和Vue框架代码之间的互转,是通过将Vue2单文件源码通过Vue官方提供的插件vue
‑
compiler
‑
sfc转换为AST(抽象语法树),再修改所得的AST使其符合React类组件的语法,然后再使用修改后的AST生成转换成React组件的源码。但上述框架间代码互转的方法无法处理一些框架独特语法的互转和用户自定义命令的互转,存在一定的局限性,对含有用户自定义命令和独特语法较多的框架代码互转整体效果较差。
技术实现思路
[0003]为提高不同前端框架间的代 ...
【技术保护点】
【技术特征摘要】
1.一种不同前端框架间的代码转换方法,其特征在于,所述方法包括以下步骤:S1.获取源文件组件的类型;S2.将所述源文件组件的类型与第一预设文件类型进行匹配,若匹配成功,则将所述源文件组件命名为第一文件组件并执行步骤S3,若匹配失败,则执行步骤S9;S3.对所述第一文件组件进行解析得到模板块、代码块和样式块;S4.对所述代码块进行解析得到第一抽象语法树;S5.对所述第一抽象语法树进行遍历得到第二抽象语法树包括,获取所述第一抽象语法树中节点类型并与第一预设节点类型进行匹配,若匹配成功,则使用第一规则对匹配成功的节点进行处理,若匹配失败,用户则对所有匹配失败的节点设置对应的第二规则进行处理;S6.对所述模板块进行遍历得到第三抽象语法树包括,获取所述第三抽象语法树中节点类型并与第二预设节点类型进行匹配,若匹配成功,则使用第三规则对匹配成功的节点进行处理,若匹配失败,用户则对所有匹配失败的节点设置对应的第四规则进行处理;S7.合并所述第二抽象语法树和所述第三抽象语法树得到第四抽象语法树;S8.基于所述第四抽象语法树,生成第一代码,将所述第一代码与所述样式块的代码进行合并,得到第一目标组件的文件代码;S9.将所述源文件组件的类型与第二预设文件类型进行匹配,若匹配成功,则将所述源文件组件命名为第二文件组件并执行步骤S10,若匹配失败,则退出;S10.对所述第二文件组件进行解析得到第五抽象语法树;S11.对所述第五抽象语法树进行遍历得到第六抽象语法树包括,获取所述第五抽象语法树中节点类型并与第三预设节点类型进行匹配,若匹配成功,则使用第五规则对匹配成功的节点进行处理,若匹配失败,用户则对所有匹配失败的节点设置对应的第六规则进行处理;S12.基于所述第六抽象语法树,生成第二代码,所述第二代码为第二目标组件的文件代码。2.根据权利要求1所述的一种不同前端框架间的代码转换方法,其特征在于,若匹配失败,用户则对所有匹配失败的节点设置对应的第二规则进行处理包括:a1.获取匹配失败对应节点的处理结果;a2.判断所述处理结果是否成功,若是,则执行步骤a3,若否,则执行步骤a4;a3.将匹配失败对应节点的节点类型添加到所述第一预设节点类型中,将匹配失败对应节点的第二规则添加到所述第一规则中;a4.为匹配失败对应节点设置第七规则进行处理;a5.循环步骤a1
‑
a4,直到所有匹配失败对应节点的处理结果都成功。3.根据权利要求1所述的一种不同前端框架间的代码转换方法,其特征在于,所述方法还包括,获取预设前端框架组件的版本信息,基于所述版本信息,获取所述预设前端框架组件的框架信息,基于所述框架信息,对所述第一预设节点类型、所述第一规则、所述第二预设节点类型、所述第三规则、所述第三预设节点类型和所述第四规则进行更新。4.根据权利要求1所述的一种不同前端框架间的代码转换方法,其特征在于,若匹配成功,则使用第一规则对匹配成功的节点进行处理包括,基于深度优先遍历方法,将匹配成功
的节点中的若干第一预设函数进行转换处理得到对应若干第一函数,所有所述第一函数均满足第一目标组件的第一语法。5.根据权利要求1所述的一种不同前端框架间的代码转换方法,其特征在于,若匹配成功,则使用第三规则对匹配成功的节点进行处理包括,基于深度优先遍历方法,将匹配成功的节点中的若干内置指令进行转换。6.根据权利要求1所述的一种不同前端框架间的代码转换方法,其特征在于,基于...
【专利技术属性】
技术研发人员:请求不公布姓名,
申请(专利权)人:成都数之联科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。