css的设计缺陷
- 无法找到引用关系。这本来不是问题,浏览器通过页面隔离了代码,而一个页面能有多少css呢?但是一旦你想开发一个复杂的webApp的时候,css代码就像全局变量一样影响整个项目,更恐怖的是,你无法准确地找到谁在用它。所以如果不想让你的项目失控,请第一开始就放弃传统的css。
- 没有继承和变量
- 缺少包管理
- 支持嵌套逻辑。 如此复杂的样式逻辑,我该怎么快速定位呢
.someClass .child a{ color:red; } - 其他编程语言应有的能力的缺失。css是表达语言,而非编程语言,优点是非常明了简洁,缺点是缺失逻辑。这个缺陷并不突出,毕竟样式里哪有那么多逻辑,js+css的操作才是正道。
需求误区
一键换肤这种需求想起来很好,实际做起来就是在自找麻烦。增加了开发的复杂度,又破坏了产品的整体性。
如果真的想让页面多一些配置,可以基于组件的配置,比如输入框,下拉框,文章内容等具体组件设置样式变量,增加small,default,large,highlight模式。highlight模式其实并不多见,需要支持色弱人群的产品得是什么级别的产品呢?
解决方案
- 全局css应当是只读。比如引入ant.desgin样式后,就不要改动。
- css module。reactJS的开发环境可以很好地支持css module
- 在单个模块中使用bem命名。不要使用嵌套css
- 建立一套统一的命名规则,用一个sqlite存储这中英名关系。这个很重要,但是很难做,毕竟上面的三条可以通过技术就能实现。