桔妹导读:历经近20个月打磨,滴滴在 GitHub 上开源的跨端解决方案 Chameleon(中文名卡梅龙,中文意思变色龙,简写CML),是一款真正专注于让一套代码运行多端的跨端框架,一端所见即多端所见。目前联合普惠出行共建整个跨端生态,各项规划在快速推进。
1.
Chameleon是什么?
2.
我们为什么要做跨端?
▍业务背景
2017腾讯推出微信小程序后,支付宝、百度、QQ紧随其后,纷纷推出自家小程序平台,在技术实现原理、接口设计刻意模仿微信小程序。对于业务来说,都希望搭上这些流量入口的便车。滴滴出行在微信钱包、支付宝、QQ、Android快应用都有相关入口,而且用户流量占比不低。
▍我们的目标是什么
早在2017年5月,我们就启动名为 MPV (MiniProgram View)一套代码运行Web和小程序的解决方案。当时微信小程序架构整体闭源,文档资料甚少,刚开始时走了不少弯路,比如在web端mock小程序环境执行,采用小程序的DSL,生命周期等等。MPV在webapp上实践最终实现效果如下:
Webapp交易流程(左) 微信交易流程(右)
在跨web和小程序的MPV实践积累下,在2018年启动跨N端的Chameleon项目,目标是:真正让一套代码运行N端,一端所见即多端所见。
终于在去年1月,经过数十位开发人员一年半的精细打磨和经验积累后,在上百页面中实践应用,在github上开源了,目前将近7500+star。
3.
背后的设计是什么?
View: Render Engine,包括微信/支付宝/百度/QQ/头条/钉钉小程序、web端、客户端(Weex),后续支持更多MVVM为标准的端。
View Model:CML(Chameleon Markup Language)作为框架定义的标准DSL,结合数据绑定、事件系统,可以构建出页面的结构。同时为了降低学习成本,还支持Vue Template语法。
Model: 使用JavaScript语言,其优点显著:学习成本低、具备跨端属性(基于V8、JavaScriptCore)和组件建设较好、生态活跃。同时提供大量基础统一API接口。
Chameleon是结合各种跨端技术(Weex、React-Native)和产品业务(微信/支付宝/百度/QQ小程序、快应用)的共同技术特点——MVVM架构设计的。终极目标是任意使用MVVM架构设计的终端,都能以Chameleon开发并运行。
定义标准的 Language(CML DSL)、Framework 与 Library(内置组件和 API)协议层;
在编译阶段将 CML DSL 转译成各端 DSL,只编译 Language 层面足够基础且稳定的代码;
在各端运行时阶段分别实现 Framework ;
在各端运行时阶段分别实现 Library(内置 组件和 API)。
为用户提供多态协议,方便扩展以上几方面的内容,触达底层端特殊属性,同时提升可维护性。
JavaScript 代码
CML Runtime 框架
Chameleon API:多态协议定义统一接口,cml.request、cml.store 等
其中,运行时和基础库部分利用多态协议实现各端的独立性与框架的统一性。Chameleon 目前支持的端都是采用这种方式,我们定义了扩展一个新端所需要实现的所有标准,用户只需要按照这些标准实现即可完成一个新端的扩展。
4.
Chameleon具备完善的功能
得益于团队在工程化设计上的尝试与实践,CML 拥有先进的工程化理念,整体开发、打包构建等流程非常高效。CML 解决了本地开发时的各种痛点,包括提供 dev 服务、mock 数据、热更新、自动刷新、调试窗口、线上资源代理等能力,大大提高本地开发效率。你可以自由引入各种 npm 依赖包,组件化开发,模块化复用,使用 ES6 特性以及 CSS 样式预处理等等。
Chameleon 的生态不管组件库、API库,还是编辑器插件、调试工具 DebugKit、Xeditor 都在疯狂迭代,持续更新。官方维护的 chameleon-ui-builtin、cml-ui、light-ui、chameleon-ui-miniapp 组件库已经超过 60+ 组件,由普惠出行前端团队主导合作共建的 c-design 组件库也包含了 20+ 组件
▍智能规范校验
具备全面的语法检查功能,Chameleon会严格“管制”输入输出值的类型和结构,同时会严格检查业务层 JS 代码,当出现不符合规范要求的代码时,编辑器会展示智能提示,不用挨个调试各端代码,同时命令行启动窗口也会提示代码的错误位置。
欢迎有兴趣的同学加入我们的用户群,也欢迎有共同愿景的同学加入我们一起共建。
作者简介 ▬ Chameleon负责人,专注于跨端开发领域,推动Chameleon在公司内外多个业务产品落地,致力于提升跨端研发效率和体验。
推荐阅读 ▬
更多推荐 ▬
技术干货 / Recommended Article