MorJS 是什么?
开源地址:https://github.com/eleme/morjs
简介
Mor (发音为 /mɔːr/,类似 more) 是饿了么开发的一款基于小程序 DSL 的,可扩展的多端研发框架。
使用 MorJS,我们只需书写一套(微信或支付宝)小程序,就可以通过 MorJS 的转端编译能力,将源码分别编译出可以发布在不同端(微信/支付宝/百度/字节/钉钉/快手/QQ/淘宝/H5)的产物。MorJS 还支持小程序、小程序插件、小程序分包之间的形态转换,同时也配备了从源码到构建产物全阶段的插件体系,满足各类功能扩展,提升开发体验和开发效率。
示例
以下是饿了么-美食外卖频道在微信、支付宝、抖音小程序及 H5 中的表现:
为什么要做 MorJS?
目前各大平台都相继推出了自己的小程序,饿了么 C 端业务需要在不同平台小程序进行投放,这些项目大多是以支付宝或微信原生 DSL 编写,面对业务渠道的不断增加,我们尝试了多种方法来兼容多端适配,但由于不同平台间小程序代码写法、能力支持的差异性逐步变大,过去的方案无法满足新业务的需求,我们需要一套跨端研发框架能解决以下诉求:
- 原生 DSL 支持,方便现有小程序 DSL 编写的存量业务使用;
- 降低性能开销,尽可能轻运行时,减少编译构建的时长;
- 便捷的使用,一键转换为支持各小程序平台使用的产物;
- 拓展的功能,提供针对大型复杂小程序的解耦方案;
- 灵活的配置,能够简单的增加修改多套不同端的项目配置;
- 产物优化能力,压缩构建产物体积,减少小程序包大小;
在明确这几点后,我们调研了业界所有主流技术框架,