工程2026年10月

设计和代码用的是同一套结构

这篇写给已经用过 AI Coding、想把设计带进可上线页面的人。工具还会换。值得先记住的是两组对应:图层写的就是 HTML,组件写的就是封装。

对应一旦建立,样式和布局可以按像素去对,复杂模块也有了改动的资格。和前端一起排错时,你知道该看哪一层。生产环境里的交付会因此稳定下来。

篇幅长,适合卡在具体问题时回来查,不必一次读完。

它偏进阶,对应三种意愿:对话生成已经不够用,要把设计送进生产环境;想做 AI 时代的设计基建;想往 Design Engineer 走。

读之前,自动布局和组件化设计最好已经顺手,Figma 或 MasterGo 都行。AI Coding 产品用过、知道对话能改页面即可。代码环境这篇会碰到,但不从零教。

为什么这些判断还在起作用

设计师用上 AI Coding 之后,常见的卡点有三处。

工具和教程换得很快,旧文章对不上手头的产品,经验只能靠一次次踩坑慢慢攒。效果能生成,却不好控制,也好不好判断,于是不敢放进要上线的流程。有些做法其实做不到,有些做法其实做得到,两边都说不清,方案就在沟通里被退回来。

简单任务多磨几轮对话,往往能过去。任务一复杂,质量、步骤和细节一起变多,还要来回改。「改一句、跑一下、看一眼」会变得很痛苦。时间花得更多,算力也花得更多,结果却不稳定。

同样的模型,消耗可以差一倍

有人会问:生成又快又好,还要一点一点学专业知识吗?

可以先看一个概念,算力效率比(CER)。它问的是:时间相同、模型相同,一个人要烧掉多少算力,才能把某件有难度的事做完、做对。

任务更会指导模型的人(CER = 1)差距更不会指导的人(CER = 2)
简单,难度记为 101 × 10 = 10102 × 10 = 20
复杂,难度记为 10001 × 1000 = 100010002 × 1000 = 2000

差距会跟着任务变难而被放大。CER 更低的人,在这套工作方式里更强。要让它降下来,得知道怎样把任务讲准确。讲准确的前提,是你自己有方法。

生成看起来不用人动手,容易让人以为专业不重要了。实际发生的事更接近放大:你已经有的判断会被放大,你还没有的判断也不会凭空出现。

结果里有多少是你决定的

另一个有用的概念是意图密度。它看生成结果里,有多少来自使用者的主动决定,有多少只是「通常都这样」的默认路径。

创作可以拆成循环的两段。意图是你要做什么、为什么。执行是你怎么把它做出来。模型正在接手执行。人若把意图也交出去,内容会变空,也会变得彼此相像。

生成变得便宜之后,意图密度高、能和默认结果拉开距离的东西会更少。设计实践里也能感到:生成的界面常常差在细节上。

设计师写代码的用处,是把那些只读代码判断不了、用起来却构成体验的地方找出来,再磨平。外行说不清、也感觉不到差距的地方,往往就是产品的口味从哪来。海外设计工程师的招聘描述里,对细节的执着出现得又密又具体。

角色会走到设计判断和工程实现叠在一起的位置

专业能力影响你的 CER,意图密度影响产出的质量。两件事都在做的人,职位上常被叫做设计工程师。

综合 17 份有效的海外设计工程师招聘,这个角色用工程把设计品质做出来,也用设计判断去影响工程决策。价值在于减少设计和实现之间的损耗,并能独立走完从问题定义到上线的整段。

传统产品设计师Design Engineer
交出去的东西设计稿、标注、原型能跑的代码原型、设计系统
常开的工具Figma / MasterGo,Ae / RiveFigma,加上 Cursor / Claude Code,以及 GitHub / Gitee
和研发的关系稿子交出去,等还原自己参与实现,少一层理解损耗
怎么理解用户访谈、问卷、可用性测试模型辅助分析、定量数据,再加上原来的研究
怎样算做成了方案被采纳产品指标发生了变化
发言靠什么设计判断设计判断,加上可以验证的原型

会用 AI Coding 的设计师,位置可以停在交稿之前,也可以走到用工程能力解决设计问题。招聘里对能力的提及大致是这样:

能力17 份里提到招聘里常见的说法
前端工程(React / TypeScript)17/17proficient in React / Next.js
从概念走到上线16/17from concept to production
产品感觉15/17you know when something feels right
搭建和维护设计系统14/17own the design system
动效和交互13/17fluid animations, expressive gestures
熟练使用 Figma12/17mastery of Figma
用户研究和需求8/17work closely with users to deeply understand their needs

想稳定地自己闭环,就得掌握一部分工程知识和方法。只靠工具,或只靠不停对话,接不住要上线的质量。

补丁工具会换,结构不会换

为了把设计和代码接上,行业做过很多针对某一环的产品:

  • 低代码建站:Framer、Webflow
  • 设计工具:Figma、MasterGo
  • 切图和标注:蓝湖、Figma Dev Mode
  • 设计转代码:Builder、Anima、Figma2Code,以及 MasterGo 的 NoCode D2C 插件
  • 写代码时的可视编辑:Cursor 的 Visual Edit,以及和编辑器接在一起的画布 Pencil、Paper
  • 稿子和编辑器之间的通道:MCP、API、CLI

这些工具各自补一块。设计和落地之间的整段,目前还没有一块补丁能一次盖住,于是补丁上面再打补丁。使用变繁琐。每个补丁也要等研发资源,问题来了不能立刻处理。

懂一点代码,常常可以绕过其中一块补丁。和学习成本比,这笔账是划算的。原理不跟着工具的换代一起作废。

学习改成对上你已经在用的概念

以前的学法现在更有效的学法
先把一门学科的框架学完,再开下一门先抓住核心概念,把流程走熟
靠大量写代码、大量画稿来覆盖在真实任务里积累方法

我从 2025 年初开始碰,到 2026 年初把它收进日常产出,中间有三次对上:

  1. 图层和 HTML 标签是同一层结构。
  2. 设计组件和代码组件是同一种复用。
  3. 交互逻辑和代码逻辑用的是同一套因果。

转得动,是因为设计流程里已经有很多图和方法,和工程思维长在同一套结构上。要做的事是把设计概念当成锚,实践里再把代码那一侧补上。遇到什么需求,就往那个领域深一点。

从设计概念对上代码概念的三层从设计概念对上代码概念的三层

所以工程化设计思维是:弄清代码在做什么,再反过来整理画稿的习惯,让设计思路和实现之间少一层空隙。稿子本身就能成为实现的草稿。

图层写的就是 HTML

这一组对应的是静态样式和空间结构。下面会分开写「是什么」「为什么要在意」「可以怎么练」。方法比语法更重要。

设计师用图层安排视觉上的包含关系。工程师用盒模型安排 DOM。两边写的是同一件事:谁包着谁,谁跟谁排,间距是多少。

图层怎样变成标签

稿子里怎么分层,DOM 树就是什么形状,可以逐层对上。只要改的是元素之间的结构,改的就是某种 <标签>。标签名、放进去的属性和包住的内容,决定它是哪一种「图层」。

设计里的东西代码里的东西
图层 / Frame,渲染之后成为一个 DOM 节点HTML 标签
快捷操作面板的界面,用来对照它在设计稿里的图层分组。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。 同一块界面拆开后的图层名单,包含装饰、箭头、猫头、文字和页脚。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。快捷操作面板在页面上的样子,进度是 1/3,并有一个确认按钮。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。 与图层对应的 HTML 片段,普通容器和带布局的容器叠在一起。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。 编辑器里的 DOM 树,绝对定位的那一层被标出来。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。
普通图层 一个标成 frame 的普通容器图层。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可,用来对上 div。<div> … </div>
<img src="存储路径" className="图片如何显示">
<video src="存储路径" className="视频如何显示">
带自动布局的图层 弹性布局和网格布局两种自动布局图层的标识。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。<div className="flex 以及主轴、交叉轴的排列"> … </div>
<div className="grid 以及网格的行列"> … </div>
带绝对定位的图层 带滚动和脱离文档流的图层标识,用来对上 absolute。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。<div className="absolute right-0 top-0 以及具体方位">
绝对定位的元素,通常放在带布局的图层里面
</div>
文本图层 选中文字图层后的标识,用来区分块级、段落和行内文字。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。<div className="文本样式">块级文本,长短都独占一行</div>
<p className="文本样式">段落,独占一行</p>
<span className="文本样式">行内文字,可以和别的字混排</span>
<a href="跳转链接" className="文本样式">链接文字</a>
组件图层 组件文件路径旁的组件图标,用来对上代码里的组件标签。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。// 成对标签,中间可以插入内容
<组件名 className="从外面传入的样式" props="value">
</组件名>
// 单个标签
<组件名 className="从外面传入的样式" props="value" />

侧边栏里的参数就是 CSS

选中图层之后,右侧已经设好的样式,就是这一层 HTML 节点上的 CSS。只要改的是外观和效果,改的就是 属性: 值,或者原子类里的 属性-值。

设计字段CSSTailwind在管什么
一块按钮长什么样一枚蓝底白字的按钮,用来展开下面这行样式分别写在哪。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。<div style="background-color:#3b82f6; color:white; padding:8px 16px; border-radius:6px; text-align:center; font-weight:500; cursor:pointer;">按钮</div><div className="bg-blue-500 text-white px-4 py-2 rounded-md text-center font-medium cursor-pointer hover:bg-blue-600 transition-colors duration-200">按钮</div>自动布局面板里的宽高和间距,用来说明这些数值会进到样式里。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。
位置元素对齐display justify-content align-itemsflex justify-center items-start主轴和交叉轴上怎么对齐
文本对齐text-align vertical-aligntext-left text-center align-middle字在盒子里靠哪
内边距padding 以及单边p-1 pt-2 px-4内容到边框内侧的距离
外边距margin 以及单边m-4 mt-2 mx-auto这个盒子和外面的距离。设计稿里常常没有这一项
旋转transform: rotate()rotate-45 -rotate-6角度可以任意
布局布局类型displayflex grid block inline-flex容器用哪种排列
尺寸width heightw-64 h-32 w-full固定,或跟着空间走
最大和最小max-width min-heightmax-w-md min-h-screen弹性布局里给边界
固定比例aspect-ratioaspect-square aspect-video图片或模块保持比例
样式填充background-colorbg-gray-200 bg-[#fafafa]调色板或自定义色
混合mix-blend-modemix-blend-multiply和底下的画面怎么叠
描边border border-color border-widthborder border-2 border-gray-300边的粗细和颜色
不透明度opacityopacity-50 opacity-80整层的透明度
圆角border-radiusrounded rounded-lg rounded-fullTailwind 默认有多档圆角
效果投影box-shadowshadow shadow-lg shadow-inner阴影的层级
背景模糊backdrop-filter: blur()backdrop-blur backdrop-blur-md需要浏览器支持
状态Hover:hoverhover:bg-blue-600指针停在上面
Active:activeactive:scale-95按下的那一下
Focus:focusfocus:outline键盘或程序把焦点放上来
Disabledopacity 和 cursordisabled:opacity-50 disabled:cursor-not-allowed不可用
交互指针cursor: pointercursor-pointer select-none指针变成什么样,字能不能被选中
过渡transitiontransition-colors duration-200变化沿哪条曲线发生

约束让稿子能跟着内容变

可以拿这份跟练稿练。打开后用标题下拉菜单复制一份自己的。

布局约束让元素之间有方向、有间距、能响应变化。这决定稿子能不能被工程实现。元素如果只是手摆的,内容一变,整页就散。那种稿子是静止的。

自查时,找一份准备交给代码的稿子,拖容器,按下面每一层看约束有没有设。原型预览多开几次。排查页面时,也可以用同一套动作。

概念常见程度在设计工具里它在保证什么在代码里
尺寸:固定、由内容撑开、填满剩余空间常见Figma:Figma 的尺寸约束,固定宽度、Hug contents 和填满都在这个面板里。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。
MasterGo:MasterGo 里选中充满容器的尺寸菜单。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。 MasterGo 里添加最小宽度和最大宽度的菜单。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。
宽度、高度和内容多少变化时,每个容器怎么伸。漏掉之后,转代码的容器都是硬的,尺寸一变就错位,基础问题也不好发现。{/* 固定,不跟内容和父级走 */}
<div className="w-[22px] h-[32px]">...</div>
{/* 由内容决定 */}
<div className="w-fit h-fit">...</div>
{/* 填满剩余空间,要放在 flex 里 */}
<div className="w-full self-stretch">...</div>
<div className="h-full flex-1">...</div>
尺寸的上下限需要时再加和上面的尺寸策略一起,规定极端情况。漏掉之后,更进一步的弹性布局做不出来。{/* 随内容,但落在 120 到 400 之间 */}
<div className="w-fit min-w-[120px] max-w-[400px]">...</div>
{/* 高度随内容,空的时候也不低于 48 */}
<div className="h-fit min-h-[48px]">...</div>
溢出:内容、文字、图片超出盒子常见Figma:Figma 的 Clip content,超出容器的部分会被裁掉。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。 Figma 的文本截断,可设最大行数和省略号。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。
MasterGo:MasterGo 的裁剪超出内容。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。 MasterGo 的省略文本菜单。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。
裁切决定内容停在哪,留白才稳得住。动态文案要先留好截断。漏掉之后,真实数据一进来就会顶出页面,挡住别的东西。<div className="overflow-hidden">...</div>
<div className="overflow-auto">...</div>
<div className="overflow-x-hidden overflow-y-auto">...</div>
<p className="truncate">单行省略</p>
<p className="line-clamp-2">最多两行</p>
绝对定位:方向、缩放、离边的距离常见Figma:Figma 的绝对定位,含坐标、缩放和约束方向。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。
MasterGo:MasterGo 的约束方向和固定行为。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。
用来放异形切图、角标、浮层和遮罩。漏掉之后,这些东西会跟着普通流一起跑。没有约束时角标和主体错位的例子。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。<div className="relative">
<span className="absolute top-0 right-0">99+</span>
<button className="absolute bottom-4 right-4">+</button>
<div className="absolute bottom-0 left-1/2 -translate-x-1/2">...</div>
<div className="absolute inset-0 bg-black/50">...</div>
</div>
断点:同一页的多端尺寸需要时再加有插件可以协助一个页面要在多种宽度下都成立<div className="hidden md:block">宽屏才显示</div>
<div className="block md:hidden">窄屏才显示</div>
<div className="flex flex-col md:flex-row">...</div>
<div className="w-full md:w-[1200px] mx-auto">...</div>

Tailwind 的断点前缀大致是 sm 640、md 768、lg 1024、xl 1280。父级要先是 relative,子级的 absolute 才相对它。

这些对应用来守上线前的最后一点

这一节给出的是细调界面的思路,尤其是上线前剩下的那一小截差异。它不要求每份稿子都画成同一种样子。

把意图设清楚验收和调试
在稿子里知道参数在哪之后,点两下就能设完。自由度高,也快。拖、输入、清空、开原型,都能立刻看。
在代码里要先找到那一段,再改,再核对。自由度低,也重。要靠开发者工具、假数据和定位,才能把某个状态调出来。

意图若先在稿子里定完,代码侧就少一轮试。问题若先在代码里被看见,也可以映回稿子:稿子怎么改,代码就怎么改。稿子侧的调试做熟之后,有些调整可以不经过稿子,直接改那几个样式值。

还不会对的时候会对上之后
整理图层被当成额外劳动。转成代码之后,还原对不上,原因也说不清。画的时候就把布局和样式的意图组织进图层。转代码时,定义是清楚的,还原问题从源头少一截。
对着生成页面一句一句说:「这个按钮往左」「这行和标题对齐」。一个点一轮对话。找到对应节点,改有限的几个 CSS 值。位置问题从布局关系入手,样式问题直接看那一层的 CSS。
线上的展示问题先记下来,再排队等研发。新页面里没画到的极端情况,完全看研发是否留意。展示类的问题可以自己判断、自己改。极端情况可以按约束表去补。

画稿在人要自己守细节的时候仍然有用。它是设计意图的整理器。画的过程会逼人把问题定位清楚。这一步看起来慢,是为了后面少返工。

用在不同难度上,大致是:

难度用在哪会看到什么
基线设计转代码细节留得住,人工对的问题少,一次就能过
中线自己改设计验收和体验修补:展示细节和展示类问题可以自己收
中线自己做的项目布局不必停在现成模板里,想得到的自适应可以自己实现
高线设计基建把一套独特风格收成互不重叠、合起来完备的 Design Token
高线给模型的规则理解上下文怎么被记住,写出模型能稳定遵守的样式约束

可以这样练

从拉扯稿子开始。把每个元素看成延展性不同的盒子,再把盒子装到一起。

看到任何界面,按这个顺序问:

  1. 容器是什么关系:父子、同级,还是绝对定位。
  2. 排列用的是 flex、grid,还是 absolute。
  3. 尺寸是由内容撑开、填满、固定,还是带了最小和最大。
  4. 对齐、截断、溢出和各种状态有没有被定义。

这四问在稿子里答完,代码里的答案已经在了。

单个页面的细节有办法守住之后,下一问是:同样的页面,还要整页再写一遍吗?

组件写的就是封装

这一组对应的是复用。

你可能听过两种话。研发说,这个页面会用现成组件,样式可以收,结构不要大改。自己做的时候,从 React Bits 一类站点拿一个动效模块,先下载到本地,再改参数。

两边都在用现成的轮子。组件是前端里最小、也最好传递的复用单位。插进去就能用,需要时再改。

设计师用组件库管理可复用的界面单元。工程师用 React 或 Vue 的组件管理可复用的代码。两边做的是同一件事:把重复出现的东西收成一个有名字、有参数、能配置的单元。

名字、实例和参数,各端是同一套

技术栈不同,组件、实例、Props 的模型是一样的。

设计ReactVueSwiftUI
一个带图标的按钮带回形针图标的组件,旁边是层级、状态和是否只显示图标。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。<IconTextButton icon={<FileIcon />} onClick={handleAttachment} variant="ed" size="md" tooltip="上传附件" /><IconTextButton :icon="FileIcon" @click="handleAttachment" variant="ed" size="md" tooltip="上传附件" />IconTextButton(icon: Image(systemName: "paperclip"), action: handleAttachment, variant: .ed, size: .md, tooltip: "上传附件")
组件:可复用的那一个定义组件function Button() {}defineComponent({ name: "Button" })struct Button: View {}
实例:用出去的那一个,跟着定义走实例<Button /><Button />Button()
交互状态default / hover / active / disabled伪类加状态,:hover、useState伪类加 ref().buttonStyle 加 @State
变体:同一组件的不同形态Variantvariant="primary"variant="primary"variant: .primary
布尔:某部分出不出现BooleanshowIcon={true}:showIcon="true"showIcon: true
文本:里面可替换的字Textlabel="提交"label="提交"label: "提交"

什么时候该拆,什么时候不该堆

一个组件只做一件事。职责叠得太多,就难复用,也难改。原子能力先封装好,再组合起来,复杂系统才维护得住、扩得开。交给研发的代码也一样:尽可能拆开,每一块都能单独验证,闭环尽量小。

设计侧代码侧
什么时候封装多个页面都要用;或者变体太多,不拆就预览不了同一段出现了多次;或者一个文件长到读不动
封装之后得到什么类似场景能复用,效果能集中预览,转代码时指令更清楚少重复,模块之间少缠在一起,以后好改,出错也好定位
做得好时长什么样组件互相嵌套,而不是把所有形态平铺。原子足够小,才能通用模块边界清楚,找得到、加得上、改得动
做得差时长什么样把特性的排列组合全部画成变体 把表单的各种组合都画成独立变体,数量会膨胀。此图嵌在对照表中,说明只给读屏使用,页面上不重复显示,对照时看图即可。文件又肿又难找。新需求只能在上面打补丁

看起来一样的界面,工程师常常宁可自己写,也不愿拼一份按整页交出来的代码。差别在结构:

拆得好和拆得碎的两套结构拆得好和拆得碎的两套结构

设计稿里,人习惯按视觉边界拆:看起来是一块,就抽成一个组件。代码里,能封装的不止界面。

不变的值可以抽成配置。Design Token、中英文案、环境变量都是。改一处,全局跟着走。不抽的话,它们散在文件里,改的时候容易漏。

一段能单独讲清的行为,可以抽成函数或自定义 Hook。搜索时的防抖、滚到底再加载、是否有权限,都和某一块具体界面无关,抽出来就能多处用。

封装少掉的是散落,多出来的是边界:会一起变的放在一处,不会一起变的隔开。系统因此撑得住更复杂的业务。

做出来还不等于完成:它对外承诺了什么

设计组件和代码组件都有一份没写在面上的约定:对外承诺什么,对内藏起什么。

维度设计侧代码侧
能传什么属性的类型和可选值Props 的类型,通常用 TypeScript
极端情况空、超长、数量很多空数据、加载中、出错
怎么响应Hover、Active、Disabled 有没有标事件回调怎么定义

约定若是空的,稿子看起来完整,真实数据一来,边界没人设计过,研发和模型只能猜。代码组件没有类型,调用方传错,要跑起来才爆。改一处,别处跟着坏,是因为边界没划清,耦合太深。

看懂边界,才有改这块的资格

这一节要练的是判断:一个复杂模块好不好,该往哪改。它不要求所有组件都按同一种方式建。

还看不见边界的时候看见复用之后
每个页面重新画,没有可复用的组件抽出组件,把变体和属性定义清楚
改需求时一页一页改,会漏,也会不一致改定义的那一处,用到它的地方一起更新
提交之后,研发说动到了业务逻辑,不方便收分得清哪些是内部实现,哪些是对外的接口
提需求时说不清改的是哪一层说得清是改主组件,还是只覆盖某一个页面
难度用在哪会看到什么
基线设计规范稿子里的组件,结构、类型和边界都写清了
中线自己改某个场景可以独立把组件交成代码
中线自己推动的体验修改改到组件时,能判断动的是哪一层
高线设计基建按组件的作用,为产品抽出一套通用组件库
高线给模型的规则写出模型能稳定遵守的组件层约束

可以这样练

为了复制方便而做的「组件」,还不是组件化。真正要问的是:哪一部分稳定,哪一部分会变。稳定的做成结构,会变的做成参数,比如变体、尺寸和状态。

一个按钮有多少种状态,就能看出你对它的边界想了多清楚。

从合并同类项开始。重复出现的模块收成组件,再把页面的构成和调用关系理顺。

看到重复的元素,先问三句:

  1. 输入有哪些:参数和变体。
  2. 边界有哪些:没有数据、文字极长、图片缺失。
  3. 行为有哪些:hover、active、disabled 是否定义。不变的是结构,变的是参数,谁来决定这些值,是数据从哪来。

再往上一层:信息结构和数据流

这一组是系统设计上的对应,当作延伸来看。

产品、传统软件与 Agent 的分层对照产品、传统软件与 Agent 的分层对照

信息结构如何对上数据流信息结构如何对上数据流

如果用用户体验要素当框架,产品侧和技术侧想的事情可以摆在一起。绿色更接近设计师加上 AI Coding 之后容易碰到的一层。黄色是更往下的一层,也更难。

产品设计传统软件开发Agent 开发
战略层:用户需求和业务目标
范围层:功能和规格系统设计:数据库、架构、API 约定
结构层:交互和信息架构模块架构:前端模块、路由、状态能力层:命令行、工具函数、原子操作
框架层:布局和导航组件通信:数据流、Props、事件编排层:理解意图、拆任务、规划调用
表现层:视觉和动效表达层:设计系统、结构化数据、动效

眼下它有两种用处。简单的用处,是帮你把对话生成推进到更完整的产品演示。复杂的用处,是去找一种组件渲染方案,让生成的界面稳定遵守规范。

离开时可以记住的两段

空间结构管的是静态样式。图层对 HTML,样式对 CSS,布局约束在稿子和代码里互通。练法是从拉扯稿子开始,把元素装进延展性不同的容器。它用来守上线前最后那一点差异,让样式和布局可以被精确掌握。

复用管的是组件。稿子和代码的组件结构互通,拆分决定以后能不能改。练法是从合并同类项开始,把页面收成维护得住的系统。它给你的是判断、修改和维护一块模块的资格。

另外两句。有条件就自己做 side project,业务里的发挥空间有时是被档期卡住的,案例常常比意愿先到来。画稿仍然有用:它是成本最低的试错,也是把设计细节送进实现的入口,同时还是思考用的工具。

这些材料影响了这篇