基础
Antmove并不是开发框架,准确的说是源码到源码的转换器。意思是向Antmove提供微信、支付宝等多端小程序的源码,通过Antmove转换为其他小程序。
基本原理
- Antmove转换小程序大致分为三个阶段,分别为转换前、转换中和转换后
- 转换前,Antmove对小程序做了预处理,包括判断小程序的平台、使用者配置的开发环境、判断转换的完整小程序还是组件维度等。
- 转换中,Antmove对模版,样式,Json,Js等文件进行处理,以达到跨平台开发的目的。
- 转换后,在转换后的文件中生成_antmove文件,该文件中包含对API、组件、生命周期的差异支持和抹平。
文件结构对象(parseDir)
- 介绍
在解析项目时会使用到一个文件结构对象fileInfo,上面记录了文件路径、文件名称、文件结构等相关信息。
- 对象字段说明
{
"type" : "file", // 文件类型
"path" : "User/../UserLogin/login.wxml", // 文件路径
"filename" : "login.wxml", // 文件名称
"extname" : ".wxml", // 扩展名称
"dirname" : "User/../UserLogin", // 目录名称
"basename" : "UserLogin", // 基础名称
"children" : {
"type" : "",
"path" : "",
//...
// 结构与外层相同
},
"parent" : {
// 结构与children相同
},
"deep" : 3, // 相对小程序根目录的结构深度
"entry" : "", // 输入路径
"dist" : "", // 输出路径
}
• 如何使用(配合代码示例) • 插件代码示例
编译时文件对象
在config里记录了组件、API、JSON配置、生命周期的描述文件。在Antmove编译时参照config中描述进行编译。同时根据描述制作了Antmove的官网文档等。
组件描述对象
{
"componentName" : { // 组件
"name" : "", // 组件名称
"url" : {
"beforeUrl" : "", //转换前平台该API参考网址
"afterUrl" : "" //转换后平台该API参考网址
},
"desc" : "" , // 组件描述
"props" : { // 属性
"propName" : { // 属性名
"type" : "", // 支持差异(值与API描述对象的支持差异相同)
"status" : "", // 支持程度
"desc" : "" // 属性描述
},
},
}
}
API 描述对象
{
"apiName (api名称)" : {
"status (支持程度)" : ,// 0 - 完整支持 / 1 - 部分支持 / 2 - 不支持
"desc (api的描述)" : "" ,
"url" : {
"beforeUrl" : "转换前平台该API参考网址",
"afterUrl" : "转换后平台该API参考网址"
},
"body" : {
"msg" : "api抹平描述信息",
"returnValue (返回值)" : {
"props" : {
"returnValueName (返回值名称)" : {
"type (支持差异)" :
/**0 - missing - 不支持该属性/
1 - diff - 命名格式说明/
3 - difftype - 类型不同/
4 - defaultValue - 默认值不同/
5 - wrapComponent - 使用自定义组件/
6 - diff tagName/
7 - equal - 完全支持*/ ,
"desc" : "返回值描述信息"
}
}
},
"params (入参)" : {
/**
结构与返回值相同
*/
}
}
}
}
json 配置描述对象
{
"JSONName" : { // 配置
"name" : "", // 配置名称
"url" : {
"beforeUrl" : "", //转换前平台该API参考网址
"afterUrl" : "" //转换后平台该API参考网址
},
"desc" : "" , // 配置描述
"props" : { // 属性
"propName" : { // 属性名
"type" : "", // 支持差异(值与API描述对象的支持差异相同)
"status" : "", // 支持程度
"desc" : "" // 属性描述
},
},
}
}
App/Page/Component 描述对象
{
"lifeName (生命周期名称)" : {
"status (支持程度)" : ,//0 - 完整支持 / 1 - 部分支持 / 2 - 不支持
"desc (api的描述)" : "" ,
"url" : {
"beforeUrl" : "转换前平台该API参考网址",
"afterUrl" : "转换后平台该API参考网址"
},
"body" : {
"msg" : "api抹平描述信息",
"returnValue (返回值)" : {
"props" : {
"returnValueName (返回值名称)" : {
"type (支持差异)" :
/**0 - missing - 不支持该属性/
1 - diff - 命名格式说明/
3 - difftype - 类型不同/
4 - defaultValue - 默认值不同/
5 - wrapComponent - 使用自定义组件/
6 - diff tagName/
- equal - 完全支持*/ ,
"desc" : "返回值描述信息"
}
}
},
"params (入参)" : {
/**
结构与返回值相同
*/
}
}
}
}