Chameleon 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Chameleon 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Chameleon 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Chameleon 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Chameleon 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache-2.0
开发语言 JavaScript
操作系统 跨平台
软件类型 开源软件
所属分类 Web应用开发Web框架
开源组织 滴滴出行
地区 国产
投 递 者 程六金
适用人群 未知
收录时间 2019-01-29

软件简介

研发同学在端内既追求 H5 的灵活性,也要追求性能趋近于原生。 面对入口扩张,主端、独立端、微信小程序、支付宝小程序、百度小程序、安卓厂商联盟快应用,单一功能在各平台都要重复实现,开发和维护成本成倍增加。迫切需要维护一套代码可以构建多入口的解决方案,历经近 20 个月打磨,滴滴跨端解决方案 Chameleon 终于发布。真正专注于让一套代码运行多端。

设计理念

软件架构设计里面最基础的概念“拆分”和“合并”,拆分的意义是“分而治之”,将复杂问题拆分成单一问题解决,比如后端业务系统的”微服务化“设计;“合并”的意义是将同样的业务需求抽象收敛到一块,达成高效率高质量的目的,例如后端业务系统中的“中台服务”设计。

而 Chameleon 属于后者,通过定义统一的语言框架统一多态协议,从多端(对应多个独立服务)业务中抽离出自成体系、连续性强、可维护强的“前端中台服务”。

跨端目标

虽然不同各端环境千变万化,但万变不离其宗的是 MVVM 架构思想,Chameleon 目标是让 MVVM 跨端环境大统一

学习全景图

开发语言

从事过网页编程的人知道,网页编程采用的是 HTML + CSS + JS 这样的组合,同样道理,chameleon 中采用的是 CML + CMSS + JS。

JS 语法用于处理页面的逻辑层,与普通网页编程相比,本项目目标定义标准 MVVM 框架,拥有完整的生命周期,watch,computed,数据双向绑定等优秀的特性,能够快速提高开发速度、降低维护成本。

CML(Chameleon Markup Language)用于描述页面的结构,我们知道 HTML 是有一套标准的语义化标签,例如文本是<span> 按钮是<button>。CML 同样具有一套标准的标签,我们将标签定义为组件,CML 为用户提供了一系列组件。同时CML中还支持模板语法,例如条件渲染、列表渲染,数据绑定等等。同时,CML 支持使用类VUE语法,让你更快入手。

CMSS (Chameleon Style Sheets)用于描述 CML 页面结构的样式语言,其具有大部分 CSS 的特性,并且还可以支持各种 css 的预处语言 less stylus

通过以上对于开发语言的介绍,相信你看到只要是有过网页编程知识的人都可以快速的上手chameleon的开发。

丰富的组件

在用 CML 写页面时,chameleon 提供了丰富的组件供开发者使用,内置的有 button switch radio checkbox 等组件,扩展的有 c-picker c-dialog c-loading等等,覆盖了开发工作中常用的组件。

丰富的API

为了方便开发者的高效开发,chameleon 提供了丰富的API库,发布为 npm 包 chameleon-api,里面包括了网络请求、数据存储、地理位置、系统信息、动画等方法。

自由定制API和组件

基于强大的多态协议,可自由扩展任意 API 和组件,不强依赖框架的更新。各端原始项目中已积累大量组件,也能直接引入到跨端项目中使用。

智能规范校验

代码规范校验,当出现不符合规范要求的代码时,编辑器会展示智能提示,不用挨个调试各端代码,同时命令行启动窗口也会提示代码的错误位置。

渐进式跨端

既想一套代码运行多端,又不用大刀阔斧的重构项目,可以将多端重用组件用 Chameleon 开发,直接在原有项目里面调用。

先进前端开发体验

Chameleon 不仅仅是跨端解决方案。基于优秀的前端打包工具 Webpack,吸收了业内多年来积累的最有用的工程化设计,提供了前端基础开发脚手架命令工具,帮助端开发者从开发、联调、测试、上线等全流程高效的完成业务开发。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (8)

加载中
越来越棒!
2020/10/24 12:01
回复
举报
越来越完善了
2020/10/23 18:23
回复
举报
目前不建议入手,坑比较多
2019/06/06 12:17
回复
举报
不错,抽空试试
2019/02/15 11:42
回复
举报
怎么安装呢?
2019/02/02 10:12
回复
举报
京东也造了一套,哪个好?
2019/01/31 09:38
回复
举报
让我想到了黑苹果的引导器了
2019/01/30 13:24
回复
举报
新轮子吗?老司机求带
2019/01/30 10:25
回复
举报
更多评论
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2014/06/14 09:29

Rime&Contiki Chameleon

PAPER: An Adaptive communication Architecture for Wireless Sensor Nerworks 1.An architecture of WSN is difficult in the stack and a reasonable header packet. 2.The Chameleon architecture consists of two parts: the Rime communication stack and a set of packet transformation modules. The Chameleon Architecture Two applications communicating using Rime. 4.The Rime stack provides a set of communica...

0
0
发表了博客
2020/06/06 10:56

didi出品 夜莺

http://n9e.didiyun.com/docs/install/compile/

0
0
2020/06/08 12:26

CML (Chameleon) 周报 2020'' | 6.01 - 6.05

> CML,一套代码运行多端,一端所见即多端所见 > GitHub: [https://github.com/didi/chameleon](https://github.com/didi/chameleon) ## 最新动态 * 【版本发布】 * `chameleon-tool@1.0.6-alpha.6` 发布 - web 端 dev 模式下如何支持跨域 - 构建过程警告信息支持配置是否输出,可以排查重复 `npm` 包的安装 - 压缩过程删除多余 `console` - windows 下 subProject 配置 npmName 的路径适配修复 - 修复项目内安装 cli 通过 npm ...

0
0
2020/06/01 11:15

CML (Chameleon) 周报 2020'' | 5.25 - 5.29

> CML,一套代码运行多端,一端所见即多端所见 > GitHub: [https://github.com/didi/chameleon](https://github.com/didi/chameleon) ## 最新动态 * 【New Feature】 - 完成 web 端 polyfill 支持 - 调研小程序端最优 `babel` 配置 - 支持构建过程引入不同版本的重复npm包的时候警告提示 * 【版本发布】 * `chameleon-ui-builtin@1.0.7-alpha.5` 发布 - `scroller` 组件优化动画能力 - `refresh-view` 组件优化 * 【组件扩展】 ...

0
0
2020/06/15 10:54

CML (Chameleon) 周报 2020'' | 6.08 - 6.12

> CML,一套代码运行多端,一端所见即多端所见 > GitHub: [https://github.com/didi/chameleon](https://github.com/didi/chameleon) ## 【New-Feature】 * windows 路径下 `tabbar` 配置 bug * `chameleon-sdk` 增加调试本地文件能力 * `light-ui`官网组件动态展示,进度20%; * `chameleon` 升级:小程序端编译,进度10% ## 【组件扩展】 * `c-design` 完成 `avatar` 和 `resource` 组件 ## 【规范和建议】 * npm 包重复警告:...

0
0
发表了博客
2020/08/17 14:18

CML (Chameleon) 周报 2020'' | 8.10 - 8.14

> CML,一套代码运行多端,一端所见即多端所见 > GitHub: [https://github.com/didi/chameleon](https://github.com/didi/chameleon) ## 【版本发布】 - chameleon-tool@1.0.8-alpha.1 1. 支持多页面构建 2. hash、history模式下适配多页面 3. 预览页面跳转以及二维码适配 4. 本地服务配置支持多页面配置 5. 工程化配置适配多页面 6. 路由文件支持配置多页面参数 ## 【案例/解决方案】 - [web多页面构建demo](https://github.co...

0
0
发表了博客
2014/06/14 09:36

Contiki——Chameleon理解

Chameleon结构的作用在Chameleon的pack_header()函数中体现了出来(这里的打包方式像以前自己讨论过的一个问题,是在组织数据时直接将数据写入发送缓冲区中,还是保存在一个结构体中到最后一起打包)。Chameleon的方式,属于将需要打包的数据先放在一个结构体中,在最后将要发送时,调用pack_header函数将数据写入发送缓冲区中。这样会浪费一些内存。但是,折中的结果是通过Chameleon我们可以同时兼容多种协议,也是Contiki的最...

0
0
2020/08/10 11:47

CML (Chameleon) 周报 2020'' | 8.03 - 8.07

> CML,一套代码运行多端,一端所见即多端所见 > GitHub: [https://github.com/didi/chameleon](https://github.com/didi/chameleon) ## 【版本发布】 - chameleon-tool@1.0.8-alpha.0 发布 * 支持chameleon-api-miniapp按需加载 * 支持组件动态加载 * 支持路由懒加载 * 基本使用demo参考:https://github.com/chameleon-team/cml-component-dynamic ## 【New-Feature】 * 支持web端多页面构建,修改能力点如下: - 路由配置支持...

0
0
2020/08/03 11:14

CML (Chameleon) 周报 2020'' | 7.27 - 7.31

> CML,一套代码运行多端,一端所见即多端所见 > GitHub: [https://github.com/didi/chameleon](https://github.com/didi/chameleon) ## 【最新动态】 * 支持 chameleon-api-miniapp 按需加载 * web 端支持组件异步加载 * web 端支持路由懒加载 * 支持构建进程终端显示可配置 * Chameleon-IOS-SDK 升级 * rich-text 组件能力升级 ## 【组件扩展】 - c-design 官网开发完成 - c-design 完成 checkbox 以及 indexes 组件 ## 【运营...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
8 评论
183 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部