Chameleon/kmiln/,簡寫CML,中文名卡梅龍;中文意思變色龍,意味著就像變色龍一樣能適應不同環境的跨端整體解決方案。
CML 即 多端
支持平臺:web、微信小程序、支付寶小程序、百度小程序、android(weex)、ios(weex)、qq 小程序、字節跳動小程序、快應用、持續更新中
一端所見即多端所見——多端高度一致,無需關注各端文檔。
基於多態協議不影響各端差異化靈活性
背景
研發同學在端內既追求 h5 的靈活性,也要追求性能趨近於原生。面對入口擴張,App 客戶端、微信小程序、支付寶小程序、百度小程序、Android 廠商聯盟快應用、其他類小程序,單一功能在各平臺都要重複實現,開發和維護成本成倍增加。迫切需要維護一套代碼可以構建多入口的解決方案,滴滴跨端解決方案 Chameleon 終於發布。真正專注於讓一套代碼運行多端。
設計理念
軟體架構設計裡面最基礎的概念「拆分」和「合併」,拆分的意義是「分而治之」,將複雜問題拆分成單一問題解決,比如後端業務系統的」微服務化「設計;「合併」的意義是將同樣的業務需求抽象收斂到一塊,達成高效率高質量的目的,例如後端業務系統中的「中臺服務」設計。
而 Chameleon 屬於後者,通過定義統一的語言框架+統一多態協議,從多端(對應多個獨立服務)業務中抽離出自成體系、連續性強、可維護強的「前端中臺服務」。
跨端目標
雖然不同各端環境千變萬化,但萬變不離其宗的是 MVVM 架構思想,Chameleon 目標是讓 MVVM 跨端環境大統一。
多端高度一致
深入到程式語言維度保障一致性,包括框架、生命周期、內置組件、事件通信、路由、界面布局、界面單位、組件作用域、組件通信等高度統一
豐富的組件
在用 CML 寫頁面時,chameleon 提供了豐富的組件供開發者使用,內置的有button switch radio checkbox等組件,擴展的有c-picker c-dialog c-loading等等,覆蓋了開發工作中常用的組件。
豐富的 API
為了方便開發者的高效開發,chameleon 提供了豐富的 API 庫,發布為 npm 包chameleon-api,裡面包括了網絡請求、數據存儲、地理位置、系統信息、動畫等方法。
自由定製 API 和組件
基於強大的多態協議,可自由擴展任意 API 和組件,不強依賴框架的更新。各端原始項目中已積累大量組件,也能直接引入到跨端項目中使用。
基於強大的多態協議,充分隔離各端差異化實現,輕鬆維護一套代碼實現跨多端
智能規範校驗
代碼規範校驗,當出現不符合規範要求的代碼時,編輯器會展示智能提示,不用挨個調試各端代碼,同時命令行啟動窗口也會提示代碼的錯誤位置。
漸進式跨端
既想一套代碼運行多端,又不用大刀闊斧的重構項目?不僅可以用 cml 開發頁面,也可以將多端重用組件用 cml 開發,直接在原有項目裡面調用。
先進前端開發體驗
Chameleon 不僅僅是跨端解決方案。基於優秀的前端打包工具 Webpack,吸收了業內多年來積累的最有用的工程化設計,提供了前端基礎開發腳手架命令工具,幫助端開發者從開發、聯調、測試、上線等全流程高效的完成業務開發。
項目地址
官方網站:https://cmljs.org/github地址:https://github.com/chameleon-team