Skip to content

小程序转换器,支持各家不同小程序之间互相切换

Notifications You must be signed in to change notification settings

Lyanbin/smart-app-converter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

smart app converter

使用方式

git clone
npm link
killswan -w <srcPath> [outputPath]

使用前提

  • 对于template的传参,请使用扩展符{{...data}},如果实在你憋不住使用了{{a:1,b:2}}这种写法,对象逗号之间请不要换行,后续考虑支持下,暂时没时间了
  • 对于template,请不要给这个标签上加class
  • 一切模板到js的内容,请使用{{}}包裹,不管当前有没有报错,都要这么处理,不然会gg
  • 样式文件中,请尽量不要使用通配符*,否则会给将*转换为所有的组件名字
  • 请定时查阅小程序官方文档,使用推荐语法开发
  • setData()的参数,请使用setData({a: 1})这样的写法,不要写setData(a, 1),没空转了

脚本都做了啥

模板相关

  • 使用<!--weixin begin--> your code <!--weixin end-->来标注独占功能
  • import模板的后缀名修改
  • 对不支持的组件替进行替换,目前替换成<view>
  • 对双向绑定的语法进行替换
  • 对事件的语法进行替换
  • 对指令的语法进行替换
  • 如果模板中一个标签内,同时使用if、elseif、elsefor会将条件判断进行提升,并使用block包裹

js相关

  • 使用/***weixin begin***/ your code /***weixin end***/来标注独占功能
  • 使用以上语法可能再无法通过eslint,例如同时对一个变量使用let会提示错误,那么在globalData里注入了__type__,页面可以根据这个值来进行判断
  • 对命名空间进行替换

样式相关

  • 支持less(注:less会替换到当前文件夹下的css文件
  • 由于微信小程序不允许样式文件中background引用本地资源,统一做了base64转换
  • 对通配符*做了替换

其他

  • 对文件后缀名替换
  • 在项目根目录添加conver.config.json文件,目前支持配置pages参数,配置后,会在转换时将pages目录下不相关目录删除,同时会删除app.json下的pages变量,示例:
{
    "baidu": {
        "pages": [
            "pages/index/index",
        ]
    },
    "weixin": {
        "pages": [
            "pages/index/index",
        ]
    },
    "zhifubao": {
        "pages": [
            "pages/index/index",
        ]
    }
}

TODO

  • 对不支持的api需要warning
  • 对自定义组件需要优化
  • 对自闭合标签需要收集,目前只处理了import, include, input
  • 对json的配置需要优化
  • 没有对模板语法中的括号进行递归判断,默认用户的输入是合法的

About

小程序转换器,支持各家不同小程序之间互相切换

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published