鱼C论坛

 找回密码
 立即注册
查看: 729|回复: 2

[技术交流] 08 - 「CSS原子化」的前因

[复制链接]
发表于 2023-6-26 20:28:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2023-6-26 20:28 编辑

0_0.png

每种被广泛使用的技术都有自己的一套理念和哲学,它们是技术的“灵魂”。

从历史角度看 CSS,占据主流的是:

组件化思想。

在软件开发领域,组件化几乎是永恒的“基础哲学”。

因为在软件开发领域,组件化是提升开发效率、实现可维护性的基石。

因此,CSS 诞生以后,产生的各种以 CSS 为核心的 UI 层框架就把组件化当作重点。

基于这种思想,把各种常用的网页样式需求提炼和抽象出来,以为开发人员提供各种“开箱即用”的组件。

例如,假设页面上有一个“警告框”类,可以给它起一个名字,叫作 alert-box。

然后定义好它的 CSS 样式属性,假设是这样:
.alert-box{
    padding-top: .75rem;
    padding-bottom: .75rem;
    background-color: rgba(86,61,124,0.15);
    border: 1px solid rgba(86,61,124,0.2);
}
有了这个预先定义好的 CSS 类,以后在同一个项目中。

所有用到这个样式的地方都可以直接在某个 HTML 元素上使用这个 alert-box 组件,这确实是非常高效的做法。

更重要的是,使用了组件的方式后,对于大规模的项目,若需要多名开发人员来共同完成。

则他们可以使用同一套预先定义好的组件库,这样可以大大提高代码的一致性,对于后期的维护也会非常有帮助。

如果需要修改这个样式,只要修改一次,所有使用这个样式的页面就都会被修改。

如果不这样做,一个项目中的多名开发人员“各自为战”来修改一个相同的样式就会复杂得多。

事实上,早期的 Bootstrap 就预先定义好了大量的 CSS 类和复杂的组件。

用户只要按照约定编写 HTML 结构,并配合相应的 CSS 类。

就可以实现精致的、具有充足设计感的网页效果,这也给开发人员带来了极大的便利。

但是,随着时间的推移,人们逐渐发现,基于组件化 CSS 的设计哲学仅仅是“看起来很美好”。

在实际开发中,尤其是项目规模扩大之后,隐藏的种种问题就会逐渐暴露出来。

并且会给开发人员带来相当大的困扰,主要有以下几点:

  • CSS 中所有的样式都是全局作用的,只能通过复杂的选择器实现作用范围内的具体化。这会导致容易发生重名或者不经意间错误地覆盖规则。
  • 复杂的规则重叠、代码冗余和“膨胀”、难以消除无用代码。
  • 在组件化开发中,需要大量的具有准确语义、易于理解和记忆的名称,这对于开发团队内部保证命名规则的一致性非常困难

这些问题使得对 CSS 代码的管理和维护变得非常困难,导致的结果是基于组件的 CSS 项目只在开始的时候降低了复杂度。

随着项目不断进展,组件化反而会提高项目开发的复杂度。

由此,近年在CSS工程领域,出现了一种新的 CSS 哲学——原子化

游客,如果您要查看本帖隐藏内容请回复


这位鱼油,如果喜欢本帖子,请订阅>>> 专辑 <<<(不喜欢更要订阅


官方 Web 课程:

评分

参与人数 1贡献 +3 收起 理由
鱼C-小师妹 + 3 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-27 13:41:23 | 显示全部楼层
第一
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-30 19:27:51 | 显示全部楼层
thanx
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 11:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表