基础

Antmove并不是开发框架,准确的说是源码到源码的转换器。意思是向Antmove提供微信、支付宝等多端小程序的源码,通过Antmove转换为其他小程序。

基本原理

  • Antmove转换小程序大致分为三个阶段,分别为转换前、转换中和转换后
  • 转换前,Antmove对小程序做了预处理,包括判断小程序的平台、使用者配置的开发环境、判断转换的完整小程序还是组件维度等。
  • 转换中,Antmove对模版,样式,Json,Js等文件进行处理,以达到跨平台开发的目的。
  • 转换后,在转换后的文件中生成_antmove文件,该文件中包含对API、组件、生命周期的差异支持和抹平。

文件结构对象(parseDir)

  • 介绍

在解析项目时会使用到一个文件结构对象fileInfo,上面记录了文件路径、文件名称、文件结构等相关信息。

  • 对象字段说明
  1. {
  2. "type" : "file", // 文件类型
  3. "path" : "User/../UserLogin/login.wxml", // 文件路径
  4. "filename" : "login.wxml", // 文件名称
  5. "extname" : ".wxml", // 扩展名称
  6. "dirname" : "User/../UserLogin", // 目录名称
  7. "basename" : "UserLogin", // 基础名称
  8. "children" : {
  9. "type" : "",
  10. "path" : "",
  11. //...
  12. // 结构与外层相同
  13. },
  14. "parent" : {
  15. // 结构与children相同
  16. },
  17. "deep" : 3, // 相对小程序根目录的结构深度
  18. "entry" : "", // 输入路径
  19. "dist" : "", // 输出路径
  20. }

• 如何使用(配合代码示例) • 插件代码示例

编译时文件对象

在config里记录了组件、API、JSON配置、生命周期的描述文件。在Antmove编译时参照config中描述进行编译。同时根据描述制作了Antmove的官网文档等。

组件描述对象

  1. {
  2. "componentName" : { // 组件
  3. "name" : "", // 组件名称
  4. "url" : {
  5. "beforeUrl" : "", //转换前平台该API参考网址
  6. "afterUrl" : "" //转换后平台该API参考网址
  7. },
  8. "desc" : "" , // 组件描述
  9. "props" : { // 属性
  10. "propName" : { // 属性名
  11. "type" : "", // 支持差异(值与API描述对象的支持差异相同)
  12. "status" : "", // 支持程度
  13. "desc" : "" // 属性描述
  14. },
  15. },
  16. }
  17. }

API 描述对象

  1. {
  2. "apiName (api名称)" : {
  3. "status (支持程度)" : ,// 0 - 完整支持 / 1 - 部分支持 / 2 - 不支持
  4. "desc (api的描述)" : "" ,
  5. "url" : {
  6. "beforeUrl" : "转换前平台该API参考网址",
  7. "afterUrl" : "转换后平台该API参考网址"
  8. },
  9. "body" : {
  10. "msg" : "api抹平描述信息",
  11. "returnValue (返回值)" : {
  12. "props" : {
  13. "returnValueName (返回值名称)" : {
  14. "type (支持差异)" :
  15. /**0 - missing - 不支持该属性/
  16. 1 - diff - 命名格式说明/
  17. 3 - difftype - 类型不同/
  18. 4 - defaultValue - 默认值不同/
  19. 5 - wrapComponent - 使用自定义组件/
  20. 6 - diff tagName/
  21. 7 - equal - 完全支持*/ ,
  22. "desc" : "返回值描述信息"
  23. }
  24. }
  25. },
  26. "params (入参)" : {
  27. /**
  28. 结构与返回值相同
  29. */
  30. }
  31. }
  32. }
  33. }

json 配置描述对象

  1. {
  2. "JSONName" : { // 配置
  3. "name" : "", // 配置名称
  4. "url" : {
  5. "beforeUrl" : "", //转换前平台该API参考网址
  6. "afterUrl" : "" //转换后平台该API参考网址
  7. },
  8. "desc" : "" , // 配置描述
  9. "props" : { // 属性
  10. "propName" : { // 属性名
  11. "type" : "", // 支持差异(值与API描述对象的支持差异相同)
  12. "status" : "", // 支持程度
  13. "desc" : "" // 属性描述
  14. },
  15. },
  16. }
  17. }

App/Page/Component 描述对象

  1. {
  2. "lifeName (生命周期名称)" : {
  3. "status (支持程度)" : ,//0 - 完整支持 / 1 - 部分支持 / 2 - 不支持
  4. "desc (api的描述)" : "" ,
  5. "url" : {
  6. "beforeUrl" : "转换前平台该API参考网址",
  7. "afterUrl" : "转换后平台该API参考网址"
  8. },
  9. "body" : {
  10. "msg" : "api抹平描述信息",
  11. "returnValue (返回值)" : {
  12. "props" : {
  13. "returnValueName (返回值名称)" : {
  14. "type (支持差异)" :
  15. /**0 - missing - 不支持该属性/
  16. 1 - diff - 命名格式说明/
  17. 3 - difftype - 类型不同/
  18. 4 - defaultValue - 默认值不同/
  19. 5 - wrapComponent - 使用自定义组件/
  20. 6 - diff tagName/
  21. - equal - 完全支持*/ ,
  22. "desc" : "返回值描述信息"
  23. }
  24. }
  25. },
  26. "params (入参)" : {
  27. /**
  28. 结构与返回值相同
  29. */
  30. }
  31. }
  32. }
  33. }