【技术实现步骤摘要】
将RN样式代码转换为小程序样式代码的方法及装置
本专利技术涉及信息处理
,特别是涉及一种将RN样式代码转换为小程序样式代码的方法及装置。
技术介绍
在移动开发领域,自从Facebook推出ReactNative(简称RN)跨平台移动应用开发框架后,基于JavaScript的跨平台开发逐渐成为移动开发领域中的热门领域。RN推出不久,国内一些互联网公司基于本公司的平台,例如腾讯公司基于微信平台,推出了小程序开发框架,开发者可以在小程序开发框架下,开发能够在微信中运行的小程序。目前,虽然RN代码和小程序代码均是使用JavaScript语言开发的,但是由于语法规则彼此不同,因此开发者需要学习两套开发框架技术,开发两套代码,导致开发成本比较高。为了降低开发成本,迫切需要一种能够将RN代码转换为小程序代码的技术;在将RN代码转换为小程序代码的过程中,样式代码是业务开发的核心之一,涉及的情况比较复杂,因此如何将RN样式代码转换为小程序样式代码,已成为本领域技术人员亟待解决的问题。
技术实现思路
本专利技术实施例提 ...
【技术保护点】
1.一种将RN样式代码转换为小程序样式代码的方法,其特征在于,所述方法包括:/n若目标抽象语法树AST的视图节点中包括未封装格式的平台样式、且所述视图节点引用所述目标AST的样式节点中封装格式的非平台特有的变量样式,则将所述视图节点所引用的封装格式的非平台特有的变量样式插入到所述视图节点的未封装格式的平台样式中,生成小程序的第一类节点;/n若所述视图节点中包括未封装格式的平台样式、且所述视图节点引用所述目标AST的样式节点中封装格式的平台样式,则将所述视图节点所引用的封装格式的平台样式插入到所述视图节点的未封装格式的平台样式中,生成小程序的第二类节点;/n基于所生成的小程序 ...
【技术特征摘要】
1.一种将RN样式代码转换为小程序样式代码的方法,其特征在于,所述方法包括:
若目标抽象语法树AST的视图节点中包括未封装格式的平台样式、且所述视图节点引用所述目标AST的样式节点中封装格式的非平台特有的变量样式,则将所述视图节点所引用的封装格式的非平台特有的变量样式插入到所述视图节点的未封装格式的平台样式中,生成小程序的第一类节点;
若所述视图节点中包括未封装格式的平台样式、且所述视图节点引用所述目标AST的样式节点中封装格式的平台样式,则将所述视图节点所引用的封装格式的平台样式插入到所述视图节点的未封装格式的平台样式中,生成小程序的第二类节点;
基于所生成的小程序节点,生成小程序的布局文件;以及基于所述目标AST的样式节点中封装格式的常量样式,生成小程序的样式文件;其中,目标AST为待转换RN文件的AST,一个RN文件对应一个RN页面。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
遍历所述目标AST的样式节点,得到所述样式节点中封装格式的样式;
若所述封装格式的样式中包括封装格式的非平台特有的常量样式,则以所述封装格式的样式的样式名作为key值,将所述封装格式的样式中封装格式的非平台特有的常量样式保存至预设常量样式字典中;
若所述封装格式的样式中包括封装格式的非平台特有的变量样式,则以所述封装格式的样式的样式名作为key值,将所述封装格式的样式中封装格式的非平台特有的变量样式保存至预设变量样式字典中;
若所述封装格式的样式中包括封装格式的平台样式、且该平台样式中包括平台特有的常量样式,则以所述封装格式的样式的样式名+平台名作为key值,将所述封装格式的样式中封装格式的平台特有的常量样式保存至所述预设常量样式字典中;
若所述封装格式的样式中包括封装格式的平台样式、且该平台样式中包括平台特有的变量样式,则以所述封装格式的样式的样式名+平台名作为key值,将所述封装格式的样式中封装格式的平台特有的变量样式保存至所述预设变量样式字典中。
3.根据权利要求1或2所述的方法,其特征在于,所述小程序的第一类节点包括:第一小程序节点、第二小程序节点和第一条件运算节点;
所述将所述视图节点所引用的封装格式的非平台特有的变量样式插入到所述视图节点的未封装格式的平台样式中,生成小程序的第一类节点,包括:
获取所述视图节点所引用的封装格式的非平台特有的变量样式;
复制两个所述视图节点,将复制的一个节点设置为IOS平台样式得到第一备用节点,将复制的另一个节点设置为安卓平台样式得到第二备用节点;
将所述视图节点所引用的封装格式的非平台特有的变量样式插入到所述第一备用节点的未封装格式的平台样式中,得到第一小程序节点;以及,
将所述视图节点所引用的封装格式的非平台特有的变量样式插入到所述第二备用节点的未封装格式的平台样式中,得到第二小程序节点;
基于预设第一条件创建用于关联所述第一、二小程序节点的第一条件运算节点;其中,所述预设第一条件包括:判断当前平台是否为安卓平台,若当前平台为安卓平台,则展示安卓平台样式,否则展示IOS平台样式。
4.根据权利要求1或2所述的方法,其特征在于,所述小程序的第二类节点包括:第三小程序节点、第四小程序节点和第二条件运算节点;
所述将所述视图节点所引用的封装格式的平台样式插入到所述视图节点的未封装格式的平台样式中,生成小程序的第二类节点,包括:
获取所述视图节点所引用的封装格式的平台样式;
若所述视图节点所引用的封装格式的平台样式中包括变量样式,则复制两个所述视图节点,将复制的一个节点设置为IOS平台样式得到第三备用节点,将复制的另一个节点设置为安卓平台样式得到第四备用节点;
将所述视图节点所引用的封装格式的平台样式中的变量样式插入到所述第三备用节点的未封装格式的平台样式中,得到第三小程序节点;以及,
将所述视图节点所引用的封装格式的平台样式中的变量样式插入到所述第四备用节点的未封装格式的平台样式中,得到第四小程序节点;
基于预设第二条件创建用于关联所述第三、四小程序节点的第二条件运算节点;其中,所述预设第二条件包括:判断当前平台是否为安卓平台,若当前平台为安卓平台,则展示安卓平台样式,否则展示IOS平台样式。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述视图节点所引用的封装格式的平台样式中包括常量样式,则在向所述第三、四备用节点插入变量样式之前,将所述第三备用节点和所述第四备用节点的属性名均修改为:该常量样式的样式名该常量样式的样式名+平台名。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述变量样式字典中包括取值为第一样式名+平台名的key值、且该key值对应的数组不为空,则确定所述视图节点所引用的封装格式的平台样式中包括变量样式;
其中,所述第一样式名为所述视图节点所引用的封装格式的平台样式的样式名。
7.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述变量样式字典中包括取值为第二样式名的key值、且该key值对应的数组不为空,则确定所述视图节点引用所述目标AST的样式节点中封装格式的非平台特有的变量样式;
其中,所述第二样式名为所述视图节点中封装格式的样式的样式名。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述视图节点的属性名;
通过所述属性名+平台名对所述视图节点进行遍历,判断遍历结果是否为空,若为空,则不作处理,否则设置所述视图节点的平台key值为所述属性名+平台名。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
若所述视图节点的平台key值不为空,则确定所述视图节点引用所述目标AST的样式节点中封装格式的平台样式。
10.根据权利要求1所述的方法,其特征在于,所述基于所生成的小程序节点,生成小程序的布局文件,包括:
遍历所生成的小程序节点,将所述小程序节点中重复的平台判断内容删除,得到去重后的小程序节点;
将所述去重后的小程序节点解析为小程序代码,输出到小程序的布局文件中。
11.一种将RN样式代码转换为小程序样式代码的装置,其特征在于,所述装置包括:
第一生成模块,用于在目标抽象语法树AST的视图节点中包括未封装格式的平台样式、且所述视图节点引用所述目标AST的样式节点中封装格式的非平台特有的变量样式的情况下,将所述视图节点所引用的封装格式的非平台特有的变量样式插入到所述视图节点的未封装格式的平台样式中,生成小程序的第一类节点;
第二生成模块,用于在所述视图节点中包括未封装格式的平台样式、且所述视图节点引用所述目标AST的样式节点中封装格式的平台样式的情况下,将所述视图节点所引用的封装格式的...
【专利技术属性】
技术研发人员:朴惠姝,邓竹立,彭飞,
申请(专利权)人:五八有限公司,
类型:发明
国别省市:天津;12
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。