(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{147:function(t,a,s){t.exports=s.p+"assets/img/mvvm.d3d8fa2d.png"},174:function(t,a,s){t.exports=s.p+"assets/img/efficient.b332565c.gif"},175:function(t,a,s){t.exports=s.p+"assets/img/web.bc6eb39a.jpg"},176:function(t,a,s){t.exports=s.p+"assets/img/wx.be86faff.jpg"},177:function(t,a,s){t.exports=s.p+"assets/img/weex.e4798e03.jpg"},178:function(t,a,s){t.exports=s.p+"assets/img/baidu.dac15eb3.png"},179:function(t,a,s){t.exports=s.p+"assets/img/alipay.bca51bfe.png"},478:function(t,a,s){"use strict";s.r(a);var e=s(17),n=Object(e.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"介绍"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#介绍"}},[t._v("#")]),t._v(" 介绍")]),t._v(" "),e("p",[t._v("CML (Chameleon) 是一个跨多端开发的统一解决方案,它可以像变色龙一样适应不同的环境。")]),t._v(" "),e("p",[t._v("一次开发,多端运行,一端所见即多端所见。")]),t._v(" "),e("h2",{attrs:{id:"cml"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#cml"}},[t._v("#")]),t._v(" CML")]),t._v(" "),e("blockquote",[e("p",[t._v("多端高度一致,无需关注各端文档。基于多态协议,不影响各端的差异化与灵活性。")])]),t._v(" "),e("p",[e("a",{attrs:{href:"https://github.com/beatles-chameleon/cml-demo",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:s(174),alt:"使用效果"}}),e("OutboundLink")],1)]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Web")]),t._v(" "),e("th",[t._v("微信小程序")]),t._v(" "),e("th",[t._v("Weex")]),t._v(" "),e("th",[t._v("百度小程序")]),t._v(" "),e("th",[t._v("支付宝小程序")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("a",{attrs:{href:"https://github.com/beatles-chameleon/cml-demo",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:s(175),width:"200px"}})])]),t._v(" "),e("td",[e("a",{attrs:{href:"https://github.com/beatles-chameleon/cml-demo",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:s(176),width:"200px"}})])]),t._v(" "),e("td",[e("a",{attrs:{href:"https://github.com/beatles-chameleon/cml-demo",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:s(177),width:"200px"}})])]),t._v(" "),e("td",[e("a",{attrs:{href:"https://github.com/beatles-chameleon/cml-demo",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:s(178),width:"200px"}})])]),t._v(" "),e("td",[e("a",{attrs:{href:"https://github.com/beatles-chameleon/cml-demo",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:s(179),width:"200px"}})])])])])]),t._v(" "),e("h2",{attrs:{id:"背景"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#背景"}},[t._v("#")]),t._v(" 背景")]),t._v(" "),e("p",[t._v("研发同学在端内既追求 H5 的灵活性,也要追求性能趋近于原生。面对入口扩张,主端、独立端、微信小程序、支付宝小程序、百度小程序、Android 厂商联盟快应用,单一功能在各平台都要重复实现,开发和维护成本成倍增加。迫切需要维护一套代码可以构建多入口的解决方案,滴滴跨端解决方案 CML 终于发布。真正专注于让一套代码运行多端。")]),t._v(" "),e("h2",{attrs:{id:"设计理念"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#设计理念"}},[t._v("#")]),t._v(" 设计理念")]),t._v(" "),e("p",[t._v("软件架构设计里面最基础的概念“拆分”和“合并”,拆分的意义是“分而治之”,将复杂问题拆分成单一问题解决,比如后端业务系统的”微服务化“设计;“合并”的意义是将同样的业务需求抽象收敛到一块,达成高效率高质量的目的,例如后端业务系统中的“中台服务”设计。")]),t._v(" "),e("p",[t._v("而 CML 属于后者,通过定义统一的语言框架 + 统一多态协议,从多端(对应多个独立服务)业务中抽离出自成体系、连续性强、可维护强的“前端中台服务”。")]),t._v(" "),e("p",[t._v("虽然各端环境千变万化,但万变不离其宗的是 MVVM 架构思想,CML 目标是让 MVVM 跨端环境大统一。")]),t._v(" "),e("p",[e("img",{attrs:{src:s(147),alt:"MVVM"}})]),t._v(" "),e("h2",{attrs:{id:"开发语言"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#开发语言"}},[t._v("#")]),t._v(" 开发语言")]),t._v(" "),e("p",[t._v("从事网页编程的人知道,网页编程采用 HTML + CSS + JS 这样的组合,同样道理,CML(框架)中采用的是 CML + CMSS + JS。")]),t._v(" "),e("p",[t._v("CML (Chameleon Markup Language) 用于描述页面的结构。我们知道 HTML 是有一套标准的语义化标签,例如文本是 "),e("code",[t._v("")]),t._v(" 按钮是 "),e("code",[t._v("