NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

避坑指南:如何在基于组件的应用中使用 CSS 架构

  • 2020-01-12
  • 本文字数:1233 字

    阅读完需:约 4 分钟

避坑指南:如何在基于组件的应用中使用CSS架构

CSS 架构是一个常被开发人员忽视的复杂问题。为简化开发人员的工作,可对每个组件封装(Encapsulate)CSS,由此避免许多 CSS 相关的坑,但这种“变通”做法是以降低可重用性和可扩展性为代价的。


一旦开发人员定义了一个 CSS 类,该类将自动作用于整个应用的范围之内,会修改所有相关元素及其子元素。对于那些结果可预测的简单应用,这种做法非常适用。但是随着应用和团队规模的增长,该做法立刻会出现问题,将导致一些不可预料的问题。


上述问题的最初解决方案是BEM(Block Element Modifier)规范。作为一种方法和命名规范,BEM 为开发人员清晰标识了每个类的行为,有助于避免产生冲突。例如,form__submit–disabled 指示开发人员正在表单内设置一个提交按钮的状态为禁用。


但作为命名规范,难以强制开发人员去遵守 BEM。此后,JavaScript 推出了一些更易于实现的解决方案,包括CSS ModulesStyled Components,并得到了开发人员的采纳。这些方法采用不同的技术路线,在单个组件中添加 CSS,同样解决了许多 BEM 所针对的问题。


解决组件化设计中缺少跨应用架构的问题,涉及三个独立的方面:


  1. UI:包括主题和一般应用行为。

  2. 布局组件(Layout Components):也常被称为“容器”或“智能组件”。布局组件确定指定组件在特定场景中的行为,通常是不可重用的。

  3. 展示组件(Presentational Components):是增强应用功能的可重用代码片段。为增加展示组件的多样性,其中应尽可能避免包含逻辑。

UI

UI 会定义在作用于整个应用的全局 CSS 文件中。主要包括两个方面:


  1. 常量类(Constant):开发人员过去会使用所有主流浏览器都支持的自定义CSS属性,最近可使用 SCSS 或 LESS 变量,


CSS 自定义属性主要有两方面优点。第一,可在运行时做修改。对于转换主题或支持夜景模式,这是一种很好的解决方案。第二,支持在布局组件中修改,开发人员更易于实现小范围内的设计调整。


  1. UI 状态(State)定义通常可分解为三方面:

  2. 修饰符(Modifier)状态:确定各元素的规格(大/小)、设计(主/次)等的变化。

  3. 行为(Behavioral)状态:包括整个应用范围的状态。例如,在线/离线、正在加载等。

  4. 伪(Pseudo)状态:启用/禁用等临时状态,以及:hover 和:focus 等 CSS 状态。

布局组件

布局组件会按指定方式在页面上组织可重用的组件。布局组件的功能可分解为两个方面,一是以设定属性和设计对可重用组件做初始化,二是使用 CSS Grid、Flexbox 等功能将其所控制区域设定为特定的布局。

可重用组件

可重用组件中几乎不包含逻辑。它们从布局组件接收数据,当布局组件执行操作时会触发相关事件(或回调)。


为确保组件的可重用性,开发人员应尽量避免在组件中添加逻辑和设计。具体而言,通常应避免添加显示、宽度、留白等属性。


这并非易事,因为可重用组件常常需要处理比其最初设计更多的场景,例如,支持多行文本的按钮,支持显示更多文本内容的标题等。但可重用组件确保了组件真正的可重用性,无需在应用下次使用时进行重写。


原文链接:


CSS Architecture for Component-Based Applications


2020-01-12 09:152192

评论

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

青椒云桌面云一体机的优势在哪里?

青椒云云电脑

桌面云一体机

使用 promise 重构 Android 异步代码

巫山老妖

android 异步编程

现在哪个云电脑更好用

青椒云云电脑

云电脑

亚马逊云 Lightsail:初创公司的福音

天黑黑

云服务器 亚马逊云 VPS

基于亚马逊云服务器+Grafana Loki日志采集方案部署

王坤祥

Grafana Loki 亚马逊云 亚马逊云科技 AWS EC2

inBuilder低代码平台新特性推荐-第六期

inBuilder低代码平台

低代码平台

什么是云电脑?云电脑怎么实现安全的远程办公环境?

青椒云云电脑

云电脑

2023-11-08:用go语言,字符串哈希原理和实现 比如p = 233, 也就是课上说的选择的质数进制 “ 3 1 2 5 6 ...“ 0 1 2 3 4 hash[0] = 3 * p的0

福大大架构师每日一题

福大大架构师每日一题

一个java文件的JVM之旅

快乐非自愿限量之名

Java JVM 系统架构

罗拉ROLA-IP代理IP:稳定性、纯净性、响应速度的保证

Geek_ccdd7f

罗拉ROLA-IP代理IP:稳定性、纯净性、响应速度的保证

Geek_ccdd7f

跨境电商

浪潮海岳inBuilder低代码开发认知实践营正式开营

inBuilder低代码平台

低代码平台

2023英特尔全栈解决方案服务商高层论坛成功举行

E科讯

大咖专场 | KaiwuDB 多模数据库 - 时序性能优化方案

KaiwuDB

KaiwuDB 大咖专场 数据库性能优化

十月份 NFT 市场显示复苏迹象,等待进一步的积极发展

Footprint Analytics

区块链游戏 NFT

设计师为什么要选择云电脑?

青椒云云电脑

云电脑

人工智能:何谓技术

不在线第一只蜗牛

人工智能 AI 人工智能技术

Databend Cloud 如何助力 AIGC 初创公司成本下降百倍

Databend

YashanDB发布会圆满收官,V23.1三大新品引领国产数据库技术与应用突破!

墨天轮

数据库 实时数仓 国产数据库 空间数据库 yashandb

第三方数据测评对比五大品牌HTTP代理!哪家代理最纯净稳定

Geek_ccdd7f

跨境电商

什么是云电脑?云电脑为何被企业青睐?

青椒云云电脑

云桌面 云电脑

图形工作站out?云电脑成设计师新宠

青椒云云电脑

云电脑

为什么明道云不提供原厂实施服务

明道云

iOS加固原理与常见措施:保护移动应用程序安全的利器

雪奈椰子

Kurator v0.5.0发布,打造统一的多集群备份与存储体验

华为云开发者联盟

云原生 开发工具 华为云 华为云开发者联盟

苹果windows都想要?上大学该怎么选笔记本电脑?

青椒云云电脑

云电脑

第三方数据测评对比五大品牌HTTP代理!哪家代理最纯净稳定

Geek_ccdd7f

Android发热监控实践

得物技术

性能优化 发热功耗 App体验 端侧监控

适合小团队协作的app推荐,这8款协同提效工具一定要知道!

彭宏豪95

效率工具 团队协作 在线白板 办公软件 团队协作工具

云电脑与5G网络的结合将会带来什么

青椒云云电脑

云电脑

产品化的GPT,能否为“百模大战”照亮未来?

脑极体

AI

避坑指南:如何在基于组件的应用中使用CSS架构_大前端_Guy Nesher_InfoQ精选文章