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

设计强大 UI:NDC 大会分享构建用户友好设计的策略

  • 2023-10-04
    北京
  • 本文字数:1553 字

    阅读完需:约 5 分钟

大小:864.96K时长:04:55
设计强大UI:NDC大会分享构建用户友好设计的策略

UI 开发的关键挑战在于如何平衡易用性和可维护性以及规模和复杂性。要开发出既健壮又对用户友好的 UI,需要深思熟虑的组件设计和对常见使用路径的理解。而要提高代码库的效率和一致性,自动化是一个可以改变游戏规则的措施。


Glenn Reyes 在NDC Oslo 2023大会上谈到了如何开发健壮的 UI 组件。


Reyes 提到,UI 开发面临着一系列独特的挑战,尤其是在扩展方面。主要的困难在于如何在项目复杂性增长的同时保持简单性和健壮性。


Reyes 说,UI 开发的一个关键部分是保持组件的 API 表面积最小。这不仅可以减少出错的机会,而且组件更易于维护,更易于工程团队使用。这可以帮助他们避免深入到复杂的问题中,带来更顺畅、无错误的开发过程。


你需要按照一种自然的、能够把用户引导到最常见的、有效的使用路径的方式来构建 UI。要让常见的使用路径变得直观可能具有一定的挑战性,但这是确保组件被正确和有效使用所必需的。


Reyes 说,一些代码样式和格式化工具,如 Prettier 和 ESLint,可以简化你的工作流程。它们可以自动让代码风格保持一致,这样就不需要在代码评审时讨论格式问题。他提到,这可以让团队更多地关注代码的逻辑和功能,而不是其外观。


为了确保用户界面代码是可维护的,Reyes 提出了一些策略:


  • 采用设计系统:采用设计系统有助于保持 UI 组件的一致性和易维护性。它作为唯一的事实来源,提供了构成应用程序视觉语言的元素和指南。

  • 实现设计标记(Design Token):设计标记可以表示颜色、排版、间距等元素的值,有助于保持应用程序不同部分的一致性。你只需要修改单个标记,就可以在所有组件之间传播变更,使得更新变得更简单、更高效。

  • 管理组件间距:组件之间的间距应该由它们的父组件控制,而不是硬编码到每个组件中。这确保了更好的关注点分离,并使组件更易于重用和维护。

  • 使用 TypeScript:TypeScript 的静态类型可以显著提升可维护性。它可以让你很清楚地知道你处理的是多态组件还是复合组件,并且它鼓励你避免使用原始的 HTML 属性来进行样式化,如“style”和“class”。这可以带来更好的类型安全,实现早期错误检测,改进开发者体验,让你的 UI 代码更易于维护。


InfoQ 就如何开发健壮的 UI 组件采访了Glenn Reyes


InfoQ:你是如何定义“健壮的 UI”的?它们有什么特点?


Glenn Reyes:“健壮的 UI”是指强大、可靠且适用于所有人的 UI。以下是让 UI 变得健壮的要素:


1. 易于使用:它简单直观,便于人们理解和使用。

2. 一致性:它在任何时候、任何设备或浏览器上的外观和工作方式都是一样的。

3. 可以很好地处理错误:即使发生了意想不到的事情,比如遇到异常或错误的用户输入,它也不会发生崩溃。

4. 扩展就绪:它的构建方式可以很容易地随用户或项目的需求增长做出改变。

5. 无障碍:它的设计让每个人,包括残疾人,都可以舒适地使用。

6. 易于更新:可以很容易地进行修复或更新,不会引发问题或影响到其他部分。


总得来说,健壮的 UI 运行良好、对用户友好、可靠、扩展就绪,所有人都可以轻松使用,并且易于维护和更新。


InfoQ:有哪些现成的工具?它们能带来什么样的好处?


Reyes:在处理可变列表时,例如通过映射函数渲染的列表,可能会在代码中引入不可预测性。为了解决这个问题,你可以通过添加“顺序规则”来保证确定性。例如,按字母顺序排序或根据特定模式分组。这样可以确保一致性,并减少代码评审过程不必要的噪音,使评审过程更顺畅、更集中。


如果你直接在应用程序中开发 UI 组件,在可以构建目标组件之前可能需要进行多次交互。这种方式效率低下,特别是在处理依赖于特定状态的组件时,例如表单字段的错误消息。你可以不用手动去诱导引发这些错误状态,而是使用其他工具或方法让你能够立即看到和处理这些状态。这不仅可以节省时间,还能够让你完全专注于手头的组件,不受到周围环境的干扰。


原文链接

https://www.infoq.com/news/2023/09/UI-robust-user-friendly/

2023-10-04 08:005968

评论

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

Redis 部署模式详解

电子尖叫食人鱼

redis

【2/100】英伟达没做到的事,国产的 HAMi 做到了!

霓漠Nimbus

nvidia k8s MLOps GPU容器虚拟化 AI Infra

解析vLLM架构及源码系列-整体架构

Jason黄

vLLM vLLM优化 vLLM源码

分享一个 MySQL binlog 分析小工具

不在线第一只蜗牛

MySQL 数据库

PandasAI连接LLM进行智能数据分析

不在线第一只蜗牛

数据分析

MySQL有哪些“饮鸩止渴”提高性能的方法?

量贩潮汐·WholesaleTide

MySQL 数据库

“子弹弹夹”装弹和出弹的抽象原理实战:掌握栈的原理与实战

电子尖叫食人鱼

JavaScript 数据结构 算法

类似CrossOver的软件哪个最好用?苹果电脑除了虚拟机用什么软件能独立运行游戏?

凡凡不烦

虚拟机 Mac软件 CrossOver Mac下载 如何在Mac上运行win游戏

基于深度学习的YOLO框架的人脸表情检测识别系统【附完整源码+数据集】

程序员Geek

人工智能、

利用Amazon Bedrock生成AI增强设备维护建议

qife122

设备维护 Amazon Bedrock

Playwright 自动化测试 | 测试框架集成​​Page Object 模式

测试人

软件测试

寻疗智慧 IOT 数字健康服务平台

微擎应用市场

速卖通商品详情API详解

tbapi

速卖通API 速卖通商品详情接口 速卖通数据采集

欢乐互娱:StarRocks 助力游戏数据平台实现极速分析与高效运营

镜舟科技

存算分离架构 StarRocks 湖仓一体 实时分析 Bitmap索引

论一个流程清晰,管理有序,人员配合的企业对系统上线的帮助到底有多大!

积木链小链

数字化转型 智能制造

告别堡垒机时代!某电力公司如何用CloudQuery解决2000+数据库的安全困局?

BinTools图尔兹

基于vLLM与AWS Trainium的冷启动推荐优化

qife122

推荐系统 vLLM

GPUStack v0.7重磅更新:macOS与Windows安装包、昇腾MindIE多机推理、模型使用计量与寒武纪MLU支持

GPUStack

人工智能 AI 大模型 LLM

豆包编程邀你来玩|一起来听「北大同学的 AI 玩学指南」

字节跳动终端技术

AI编程 豆包

阿里云可观测 2025 年 6 月产品动态

阿里巴巴云原生

阿里云 云原生 可观测

Lakehouse: Unifying DW & Advanced Analytics in Open Platforms

数新网络官方账号

7 月 29 日晚,一场发布会,重新定义什么叫“数据在说话”

TDengine

tdengine 时序数据库

AWS MemoryDB 可观测最佳实践

观测云

AWS

从一起知名线上故障,谈配置灰度发布的重要性

阿里巴巴云原生

阿里云 云原生 nacos

mdraid、mdadm 与 Linux 软件 RAID 终极指南

Sergey Platonov

raid storage xiRAID MDraid

Go 原理之 GMP 并发调度模型

秃头小帅oi

北大张牧涵团队依托昇腾突破推理效率瓶颈 大模型推理百万tokens 成本仅 1 元

极客天地

速卖通商品详情API响应数据python解析

tbapi

速卖通API 速卖通商品详情接口 速卖通数据采集

Coze开源版?别吹了!

王磊

天润融通助力Wagas用Agent接管80%咨询,多语种服务全球客户

天润融通

Java注解底层竟然是个Map?

量贩潮汐·WholesaleTide

Java

设计强大UI:NDC大会分享构建用户友好设计的策略_工程化_Ben Linders_InfoQ精选文章