
被简化的“黑白切换”幻想

深色模式虽然只是让页面自由切换黑色和白色,但它的开发难度是真的高,这也是为什么大多数网站或APP仍然不支持深色模式,并且已经支持深色模式的网站或APP依然在部分页面上会出现配色问题。不但在一般人眼中,深色模式很简单,它的难度也很容被新手开发者忽视。
失控的样式与状态管理

以网页为例子,网页的显示依赖于CSS样式,而深色模式的CSS样式可能与现有样式发生冲突。例如,某按钮在浅色模式下通过 !important 强制设置了背景色,深色模式下需要覆盖该属性,可能导致样式优先级混乱。尽管如此,还是有很多人认为调试CSS样式只是比较费时间。然而,前端技术对于数据状态(程序运行时某一时刻所有数据的具体取值与存在形式的集合)的管理太混乱了。比如,HTML的原生组件可以独立管理状态,JavaScript甚至可以通过DOM(文档对象模型,JavaScript操作 HTML/XML 文档的接口)来任意修改页面。更疯狂的是SCSS的出现,让CSS样式都开始支持if-else逻辑了。而VUE,React,Angular等框架称霸前端的今天,更是出现了CSS-in-JS的这种将JavaScript和CSS样式混合在一起的让不确定性翻倍的写法。
项目管理病灶

在项目管理方面,由于IT项目的开发往往注重快速迭代,因此没法重视安全,容错即维护等任务,导致项目管理相对宽松,并且一个IT项目往往是由多个程序员共同开发的,所以代码中对于数据状态的管理常常出现百花齐放的场面,更不用说开发者的流动性和代码风格的不同了。
无解的权限扩张与认知偏差

让人沮丧的是,目前为止并没有什么好的方法能让深色模式的开发变得简单。由于各种ISO标准和兼容需求,是不可能收走已经存在的前端控制权限的,它只会被赋予更多的权限,这也导致可以干涉最终渲染效果的方式越来越多。并且,很多开发者在开发深色模式中遇到问题时,往往会以一种孤立,静止,片面的眼光看待这些问题,而忽略了在项目管理中存在的不规范行为。