2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

优酷暗黑模式(七):暗黑模式的技术支撑 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:002130

评论

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

「SQL数据分析系列」13. 索引和约束

Databri_AI

sql 分布式

网络攻防学习笔记 Day91

穿过生命散发芬芳

网络攻防 7月日更

架构实战营 模块 4 作业

Geek_8c5f9c

架构实战营

2021谈一下当下最合适的Java架构,感悟分享

Java 程序员 面试 后端

网络安全现状,一个黑客真实的收入

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞分析

Introduction to the Keras Tuner

毛显新

tensorflow

Druid 查询返回引擎版本困惑的地方

HoneyMoose

极客时间-大数据-作业三-HBase 创建表

西伯利亚鼯鼠

2021网易Java高级面试题总结,面试篇

Java 程序员 面试 后端

毕业总结

请弄脏我的身体

架构实战营

面试官:聊聊JVM吧?

程序员阿杜

Java JVM JVM原理

Linux之vmstat命令

入门小站

Linux

音视频详细学习路线和权威资料

hanaper

音视频 ffmpeg 语音识别 语音合成 图形图像处理

开发者必备神器,你真的会用吗?

Jackpop

外包学生管理系统的架构设计

架构0期-Bingo

2021最新腾讯Java高级面试题总结,Java篇

Java 程序员 面试 后端

Text classification with TensorFlow Hub: Movie reviews

毛显新

tensorflow

想要跳槽拿高薪,却没有大型性能调优经验怎么办?淘宝架构师手把手带你前进

Java架构师迁哥

java 虐“狗”日常

喵叔

7月日更

2021最新Java高频精选面试题讲解,绝对干货

Java 程序员 面试 后端

2021最新华为Java校招面试题,看完直呼内行

Java 程序员 面试 后端

详解Java内存模型

程序员阿杜

Java JVM Java虚拟机

北鲲云超算平台如何提高高性能计算在云环境下的可行性?

北鲲云

在线生成制作Pornhub的微信公众号封面图

入门小站

工具

2021最新网易Java面经,面试必会

Java 程序员 面试 后端

2021最新阿里Java面经,一篇文章帮你解答

Java 程序员 面试 后端

各国纷纷推出数字货币,数字货币发展正当其时

CECBC

区块链产业政策红利加速释放

CECBC

Vue进阶(幺柒柒):Vue 应用 Sass、Scss、Less 和 Stylus

No Silver Bullet

Vue 7月日更 预处理器

Vue进阶(幺陆陆):组件实例 $el 详解

No Silver Bullet

Vue 7月日更 $el

熬夜整理的c/c++万字总结(一)

C语言与CPP编程

c c++

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