背景
最近公司有计划开发飞书小程序,飞书小程序和头条小程序应该类似,所以需要做一重代码转换。 因为公司开发没用各类型的框架,所以需要自己转一遍。
调研
调研了不少方案,可行的方案有两种:
- taro, 先将微信小程序转换taro项目的小程序,在通过taro转换为头条小程序
- 通过头条小程序的搬家工具
wx-to-tt,可以将原生的微信小程序转换成头条小程序。
方案对比
- 性能对比,使用taro 需要转成taro的形式使用小程序,目前taro是用动态渲染页面的方式,性能上会有损耗,原生小程序在性能上会有优势。
- 使用头条自研工具转换的话,可以完全复用代码,只是修改了调用到的底层逻辑,后续有问题也方便排查。 最终选择方案为使用头条小程序的搬家工具转换微信小程序
遇到的问题
- wxs 文件没有转换为sjs
- wxml 内的wxs的js脚本被编译过,无法正常运行
处理方案
- 运行搬家脚本前,先将wxml文件内wxs标签内容先取出来并用一串占位符替换,记录映射关系,并将引用到的wxs文件路径后缀改为sjs
- 将wxs的文件后缀改为sjs,并将wxs文件内部引用到的外部wxs文件路径改为sjs后缀。
- 运行搬家脚本
- 搬家完成后,将取出来的wxs文件先将内部引用的wxs文件路径替换,再和占位符替换
流程图
实现方法
使用的工具为:gulp + wx-to-tt 源码:github.com/aa875982361… 今晚更新源码