写点什么

优酷暗黑模式(七):暗黑模式的技术支撑 Weex & H5

  • 2020-02-27
  • 本文字数:1140 字

    阅读完需:约 4 分钟

优酷暗黑模式(七):暗黑模式的技术支撑 Weex & H5

在本文中,我们会介绍优酷 App 的 Weex 和 H5 页面是如何尽可能复用 Native 端的实现方案,实现暗黑模式的。

一、适配原理

对于 Weex 和 H5 页面的暗黑模式支持,我们考虑了几种方案。


第一种方案,只提供视觉模式查询能力,由具体页面的开发同学来控制效果;


第二种方案,建立 JavaScript 版本的公共资源库和设计标准化体系;


第一种方案过于简单,难以对最终页面呈现结果做统一管控;


第二方案又比较重,需要较长的时间成本。


我们的最终的方案是:Native/Weex/H5 具体页面的开发都统一按照视觉标准化定义的 DesignToken 进行开发,这样同一套设计体系可以复用到不同的渲染方式。Native 容器在加载 Weex 或 H5 页面时,将当前的色值表传给 JavaScript 侧;JavaScript 侧不用关心当前所处的视觉模式,只需要读取色值表并设置到页面组件。


Weex/H5 页面实现暗黑模式的架构图:



Weex/H5 的实际使用场景一般是作为活动的承载页,内容的落地页,和跨应用业务的交互页。但不论是哪种,都是嵌入在整个原生页面交互链路上的。所以我们把 Native 当作是 Weex/H5 容器的运行环境,Native 触发动态页面的渲染时,我们会将色板从色彩管理器中取出,传递给 JavaScript 侧,然后借由 JavaScript 侧影响最终的视觉效果呈现。

1. Weex 页面的适配

Weex 渲染流程图:


2. H5 页面的适配

H5 渲染流程图:



色彩管理器向 JS 传递的色板数据


{    "cb_1":"rgba(36,165,255,0)",    "cb_2":"rgba(0,179,250,0)",    "cb_3":"rgba(25,69,121,0)",    "cd_1":"rgba(0,0,0,1)",    "cg_1":"rgba(28,32,41,0)",    ......    "ykn_belt":"rgba(37,37,43,0)",    "ykn_blackNavigationBar":"rgba(29,29,33,0)",    "ykn_elevatedPrimaryBackground":"rgba(37,37,43,0)",    "ykn_elevatedPrimaryGroupedBackground":"rgba(37,37,43,0)",    "ykn_elevatedSecondaryBackground":"rgba(37,37,43,0)",    "ykn_elevatedSecondaryGroupedBackground":"rgba(51,51,55,0)",    "ykn_elevatedTertiaryBackground":"rgba(66,66,69,0)"}
复制代码


通过这样的技术方案,我们最终达成了同一份业务代码,自动适配系统的视觉模式。无论是 Weex 页面还是 H5 页面,最终的视觉效果是和 Native 页面保持和谐统一的。

二、页面视觉效果

以下是 Weex/H5 页面最终呈现的视觉效果:

1. H5 页面视觉效果

H5 页面的普通模式:



H5 页面的暗黑模式 :


2. Weex 页面视觉效果

Weex 页面的正常模式:



Weex 页面的暗黑模式:



作者简介


涵父,阿里文娱无线开发专家。


相关阅读


优酷暗黑模式(一):是什么、为什么、如何落地?


优酷暗黑模式(二):如何建立设计语言标准化管理体系


优酷暗黑模式(三):暗黑模式设计指南


优酷暗黑模式(四):设计标准化的技术实现


优酷暗黑模式(五):暗黑模式的技术实现策略


优酷暗黑模式(六):暗黑模式的技术支撑 iOS


2020-02-27 10:001778

评论

发布
暂无评论
发现更多内容

ZStack 与龙蜥操作系统完成兼容性认证,共同打造安全可信的云+OS技术生态

OpenAnolis小助手

云计算 开源 操作系统 云平台

数字化背景下,为何J2PaaS低代码平台,能成为企业技术升级的优选?

J2PaaS低代码平台

低代码 数字化 企业数字化转型 低代码平台 企业级低代码平台

记某核心MongoDB集群索引优化实践

MongoDB中文社区

mongodb

数字化时代,银行如何建设管理小程序平台促进线上金融业务发展?

FinClip

小程序 银行

NFT卡牌盲盒游戏系统开发搭建

薇電13242772558

NFT

科创人·弘玑Cyclone CEO高煜光:从RPA到超自动化,以客户需求构建战略纵深

科创人

Apache Flink 在移动云实时计算的实践

Apache Flink

大数据 flink 开源 编程 实时计算

【云计算】云计算六大优点简单说明

行云管家

云计算 IT 企业上云 IT运维

MongoDB常见问题解答:时间与时区

MongoDB中文社区

mongodb

车辆GPS定位整套管理系统,轨迹播放,车辆管理,电子围栏,报警记录,数据库/人员定位/宠物定位/物流跟踪/资产定位

Geek_7jiynf

Java Java web GPS

web前端培训:js算法面试es6实现

@零度

JavaScript ES6

大数据培训:Kafka存储结构及Log清理机制

@零度

大数据 kafka log

【数据库】云数据库rds是什么意思?有什么优势?

行云管家

数据库 云数据库 RDS

高级IO模型之kqueue和epoll

程序那些事

Java io nio 程序那些事 3月月更

什么是SDK,它是怎样威胁我们的隐私?

郑州埃文科技

JAVA只要掌握内部类,多继承和单继承都不是问题

华为云开发者联盟

Java jdk 多继承 内部类 单继承

直播系统聊天技术(七):直播间海量聊天消息的架构设计难点实践

WorkPlus

深度文 | 一文看懂云原生时代 DevOps 如何选型

星汉未来

运维 云原生 降本增效

TiDB 5.4 发版丨新功能解读

PingCAP

【C语言】结构体

謓泽

C语言 结构体 3月月更

云开发在教育应用开发、运维全流程实践

阿里云云效

云计算 阿里云 DevOps 云原生 开发

45个 GIT 经典操作场景,专治不会合代码

程序员小富

git

福昕软件与中国船级社签署框架合作协议,共建数字船舶发展新高地

联营汇聚

云原生背景下的应用安全建设

火线安全

云原生 云安全

加入XTransfer,和技术大咖一起大展身手!

XTransfer技术

程序员 招聘 跨境支付

带你掌握Redis数据类型:string和Hash

华为云开发者联盟

redis string hash 数据类型

恒源云(Gpushare)_UNIRE:一种可以共享标签空间的方法

恒源云

OpenCV 计算机视觉 服务器

基于大数据的医疗健康疾病筛查及风险评估系统

Geek_7jiynf

医疗方案 医疗AI 医疗信息化

fastposter v2.5.1 发布 轻松在线作图

物有本末

深度剖析数仓CN增量备份技术

华为云开发者联盟

华为云 备份 GaussDB(DWS) 备份容灾 CN增量备份

不会Netty,你永远是个Java菜鸟

博文视点Broadview

优酷暗黑模式(七):暗黑模式的技术支撑 Weex & H5_移动_阿里巴巴文娱技术_InfoQ精选文章