前端 Prompt 工程实战:如何搭建场景化 Prompt 库

前端 Prompt 工程实战:如何搭建场景化 Prompt 库

一、这一章解决什么问题

前端开发里使用 AI,最常见的问题不是"AI 不会写代码",而是你给它的任务太模糊。

比如一句:

markdown 复制代码
帮我写一个用户列表页面

AI 很可能会给你一份看起来完整、实际很难接进项目的代码。它不知道你的技术栈,不知道接口结构,不知道组件规范,也不知道你们团队怎么处理 loading、错误态、权限和测试。

更好的做法是把常见任务沉淀成可复用的 Prompt 模板。模板不是为了把一句话写长,而是为了让 AI 每次都拿到足够的上下文、约束和验收标准。

读完本章,你应该能做到三件事:

  1. 为前端高频场景设计可复用 Prompt。
  2. 判断一个 Prompt 输出是否能进入项目。
  3. 在面试中讲清楚你如何用 AI 提升前端开发效率。

二、Prompt 工程的核心:把需求变成可执行指令

Prompt 工程可以简单理解为:用结构化语言告诉 AI 任务目标、上下文、限制条件和输出格式。

前端场景里,一个好 Prompt 通常包含六个部分:

markdown 复制代码
角色:你希望 AI 以什么身份回答
背景:项目技术栈、业务场景、已有约束
任务:这次具体要完成什么
输入:接口、字段、组件需求、错误信息或报告内容
约束:代码规范、边界条件、禁止事项
输出:希望 AI 按什么格式交付

可以记成一个公式:

markdown 复制代码
好 Prompt = 角色 + 背景 + 输入 + 约束 + 输出格式 + 验收标准

其中最容易被忽略的是"验收标准"。如果你只说"写得好一点",AI 很难稳定执行;如果你说"必须包含 loading、empty、error 三种状态,并提供基础测试用例",输出就会可控很多。


三、如何判断一个 Prompt 是否合格

在写模板前,可以先用下面这个检查表判断质量。

检查项 不合格写法 更好的写法
任务目标 帮我写个组件 生成一个 React 用户卡片组件,用于展示头像、姓名、部门和职位
技术上下文 用前端写 React 18 + TypeScript + Ant Design 5 + CSS Modules
输入信息 按常规来 给出 Props、接口字段、事件回调和默认值
输出格式 给我代码 按文件结构输出 index.tsx、types.ts、styles.module.css、测试文件
质量约束 代码规范一点 必须处理 loading、empty、error 状态,Props 完整类型定义
验收标准 能用就行 生成后能通过 TypeScript 检查,并覆盖 3 个核心交互测试

真正可复用的 Prompt,不是一次生成结果好看,而是换一个类似需求也能稳定输出。


四、场景一:组件开发标准化

1. 适用场景

当团队经常开发列表、表单、弹窗、详情卡片这类业务组件时,最适合沉淀组件生成 Prompt。

这类 Prompt 的重点不是"让 AI 写很多代码",而是让它遵守项目结构和团队规范。

2. React 业务组件 Prompt 模板

markdown 复制代码
你是一个资深前端工程师,请基于以下信息生成一个 React 业务组件。

【项目技术栈】
- React 18
- TypeScript
- Ant Design 5
- CSS Modules
- 测试框架:Vitest + React Testing Library

【组件信息】
组件名:{ComponentName}
业务用途:{说明这个组件解决什么业务问题}
使用页面:{在哪个页面或模块中使用}

【Props 定义】
- {propName}: {type} - {说明} - {是否必填} - {默认值}

【交互行为】
1. {交互行为一}
2. {交互行为二}
3. {交互行为三}

【状态要求】
- loading:{加载时如何展示}
- empty:{无数据时如何展示}
- error:{异常时如何展示}

【代码规范】
1. Props 必须有完整 TypeScript 类型定义。
2. 组件内部不要直接请求接口,数据通过 Props 传入。
3. 样式写在 styles.module.css 中。
4. 事件回调用 onXxx 命名。
5. 不要引入无关依赖。

【输出要求】
请按以下文件结构输出:
ComponentName/
├── index.tsx
├── types.ts
├── styles.module.css
└── ComponentName.test.tsx

每个文件单独用代码块输出。
最后补充一个"验收清单",说明生成代码满足了哪些要求。

3. 使用示例

markdown 复制代码
你是一个资深前端工程师,请基于以下信息生成一个 React 业务组件。

【项目技术栈】
- React 18
- TypeScript
- Ant Design 5
- CSS Modules
- 测试框架:Vitest + React Testing Library

【组件信息】
组件名:UserCard
业务用途:展示用户基础信息,支持点击进入用户详情
使用页面:后台用户管理列表

【Props 定义】
- userId: string - 用户 ID - 必填
- name: string - 用户姓名 - 必填
- avatarUrl?: string - 用户头像 - 非必填 - 默认展示占位头像
- department?: string - 所属部门 - 非必填
- title?: string - 职位 - 非必填
- loading?: boolean - 是否加载中 - 非必填 - 默认 false
- onCardClick?: (userId: string) => void - 点击卡片回调 - 非必填

【交互行为】
1. 点击卡片时,如果传入 onCardClick,则调用 onCardClick(userId)。
2. loading 为 true 时展示骨架屏,不触发点击事件。
3. avatarUrl 为空时展示默认头像。

【状态要求】
- loading:展示 Skeleton
- empty:name 为空时展示"未知用户"
- error:本组件不处理接口错误,由父组件传入 fallback 数据

【代码规范】
1. Props 必须有完整 TypeScript 类型定义。
2. 组件内部不要直接请求接口,数据通过 Props 传入。
3. 样式写在 styles.module.css 中。
4. 事件回调用 onXxx 命名。
5. 不要引入无关依赖。

【输出要求】
请按以下文件结构输出:
UserCard/
├── index.tsx
├── types.ts
├── styles.module.css
└── UserCard.test.tsx

每个文件单独用代码块输出。
最后补充一个"验收清单",说明生成代码满足了哪些要求。

4. 这个模板为什么有效

它把组件开发中最容易出问题的点提前说清楚了:数据从哪里来、状态怎么展示、事件怎么命名、文件怎么组织、测试覆盖什么。

注意不要把所有项目规范都塞进去。组件级 Prompt 只需要包含和当前组件生成强相关的规则。比如代码提交规范、路由权限设计、接口重试策略,就不应该放进这个 Prompt。


五、场景二:性能优化分析

1. 适用场景

性能优化类任务适合让 AI 做"分析和方案拆解",但不适合只给一句"帮我优化性能"。

你需要提供真实输入,例如 Lighthouse 报告、Bundle 分析结果、资源体积、首屏耗时、页面结构。没有这些输入,AI 只能给通用建议。

2. Lighthouse 报告分析 Prompt

markdown 复制代码
你是一个前端性能优化专家,请分析以下 Lighthouse 报告,并给出可执行的优化方案。

【项目背景】
- 框架:{React/Vue/Next.js/Nuxt}
- 构建工具:{Webpack/Vite/Rollup}
- 部署方式:{Nginx/CDN/Vercel/其他}
- 页面类型:{官网/中后台/移动端 H5/电商详情页}

【Lighthouse 得分】
- Performance: {分数}
- Accessibility: {分数}
- Best Practices: {分数}
- SEO: {分数}

【主要问题】
{粘贴 Lighthouse Opportunities 和 Diagnostics 内容}

【限制条件】
- 不改变现有技术栈。
- 优先给出 1 天内可以完成的优化。
- 涉及代码改动时,请给出示例代码或配置。
- 不要只解释理论。

【输出格式】
请按以下结构输出:

## 优先级排序
用表格列出问题、影响、优先级、预计收益。

## 快速优化项
列出 1 天内可完成的修改,给出具体代码或配置。

## 中长期优化项
列出需要重构或跨团队配合的优化。

## 验收方式
说明优化后应该如何重新测试。

3. Bundle 分析 Prompt

markdown 复制代码
你是一个前端构建优化专家,请根据以下信息分析打包体积,并给出代码分割方案。

【当前情况】
- 构建工具:{Webpack/Vite/Rollup}
- 主包大小:{xxx KB/MB}
- 路由数量:{数量}
- 最大依赖:{列出体积较大的依赖}
- 是否有 SSR:{是/否}

【Bundle 分析结果】
{粘贴 webpack-bundle-analyzer 或 rollup-plugin-visualizer 的主要信息}

【业务限制】
- 首屏必须加载的模块:{列出}
- 可以延迟加载的模块:{列出}
- 不允许改动的依赖:{列出}

【输出要求】
1. 识别可以懒加载的模块。
2. 给出路由级代码分割方案。
3. 给出第三方库按需引入方案。
4. 说明每项优化的风险。
5. 给出优化后的验证方式。

4. 性能类 Prompt 的关键

性能优化不能只问"怎么优化",要让 AI 基于证据判断优先级。

一个高质量性能 Prompt 至少要包含:

  1. 当前指标。
  2. 具体报告。
  3. 页面类型。
  4. 业务限制。
  5. 验收方式。

否则 AI 很容易给出"开启缓存、压缩图片、懒加载"这类正确但不够有用的泛泛建议。


六、场景三:团队协作提效

1. 适用场景

团队协作类 Prompt 适合沉淀那些重复但需要表达质量的任务,比如 Commit Message、PR 描述、技术文档、Code Review 总结。

这类任务的重点是统一格式,降低沟通成本。

2. Commit Message 生成 Prompt

markdown 复制代码
请根据以下改动生成符合团队规范的 Git Commit Message。

【Commit 规范】
格式:<type>(<scope>): <subject>

type 可选值:
- feat:新增功能
- fix:修复问题
- docs:文档修改
- style:格式调整,不影响逻辑
- refactor:重构
- perf:性能优化
- test:测试相关
- chore:工程配置或依赖调整

【本次改动】
{描述改了什么。如果有 git diff,可以粘贴关键 diff。}

【要求】
1. subject 使用中文。
2. subject 不超过 50 个字。
3. 说清楚改了什么,不要写"优化代码"这种模糊描述。
4. 如果是 fix,说明修复了什么问题。

请输出 3 个备选 Commit Message,并说明推荐使用哪一个。

3. PR 描述生成 Prompt

markdown 复制代码
请根据以下信息生成一份 Pull Request 描述。

【改动背景】
{为什么要做这个 PR}

【改动内容】
{列出主要改动点}

【影响范围】
{涉及页面、组件、接口或配置}

【测试情况】
- 单元测试:{通过/未执行/不涉及}
- 手动测试:{列出测试场景}
- 回归风险:{说明可能受影响的地方}

【输出格式】
请按以下结构输出:

## 改动说明

## 改动类型
- [ ] 新功能
- [ ] Bug 修复
- [ ] 重构
- [ ] 性能优化
- [ ] 文档更新

## 测试情况

## Review 重点

## 截图或录屏
如果是 UI 改动,提醒我补充截图或录屏。

要求:内容具体,避免套话,让 reviewer 能快速判断这个 PR 是否需要重点关注。

4. 技术文档 Prompt

markdown 复制代码
你是一个前端技术文档作者,请帮我写一份技术文档。

【文档类型】
{功能设计文档/接口说明/组件使用文档/项目架构说明}

【目标读者】
{前端新人/后端同事/测试同事/产品经理}

【背景信息】
- 项目名称:{项目名}
- 涉及模块:{模块名}
- 技术栈:{技术栈}
- 当前问题:{为什么需要这份文档}

【核心内容】
{用 bullet points 粗略列出要写的内容}

【输出要求】
1. 使用 Markdown。
2. 先写背景,再写方案。
3. 涉及流程时使用 Mermaid。
4. 涉及字段时使用表格。
5. 最后给出注意事项和 FAQ。

请写成可以直接放进团队文档库的版本。

七、Prompt 优化方法:从"能用"到"稳定可复用"

1. 拆解复杂任务

复杂任务不要一次性让 AI 从需求写到代码。

不推荐:

markdown 复制代码
帮我做一个用户管理页面。

更推荐:

markdown 复制代码
我要做一个用户管理页面,请先只完成第一步:设计页面数据结构和接口调用方案。

【页面功能】
- 用户列表
- 搜索筛选
- 新增用户
- 编辑用户
- 删除用户

【技术栈】
- React 18
- TypeScript
- Ant Design 5
- Zustand

【输出要求】
1. 列出需要的接口。
2. 设计前端状态结构。
3. 说明每个组件负责什么。
4. 暂时不要写具体 UI 代码。

先让 AI 做设计,再让它写组件,最后让它补测试。任务越复杂,越要拆成可验证的小步骤。

2. 提供正反示例

如果你希望 AI 按某种风格输出,直接给例子比抽象描述更有效。

markdown 复制代码
请帮我写表单校验函数,错误提示要具体。

【好的示例】
if (!email.includes('@')) {
  return { valid: false, message: '邮箱格式不正确,缺少 @ 符号' };
}

【不好的示例】
if (!validate(email)) {
  return { valid: false, message: '输入错误' };
}

请按照好的示例风格,生成手机号和身份证号的校验函数。

"具体"本身不够具体。把你想要的输出长什么样写出来,AI 才更容易复刻。

3. 明确输出格式

当 AI 输出要进入文档、脚本或系统时,格式必须明确。

markdown 复制代码
请整理以下接口字段。

【输入】
{粘贴接口字段}

【输出格式】
只输出 Markdown 表格,字段如下:

| 字段名 | 类型 | 必填 | 默认值 | 说明 |
| --- | --- | --- | --- | --- |

不要输出表格以外的解释。

这类 Prompt 的核心是减少后处理成本。你越明确,AI 的输出越容易直接复用。

4. 增加验收清单

很多人写 Prompt 只写生成要求,不写验收要求。建议在模板最后固定加一段:

markdown 复制代码
输出完成后,请补充一个验收清单,逐项说明:
1. 是否满足技术栈要求。
2. 是否覆盖 loading、empty、error 状态。
3. 是否有完整 TypeScript 类型。
4. 是否存在你做出的假设。
5. 哪些地方需要我根据项目实际情况调整。

这样做的好处是,AI 会主动暴露假设和风险,方便你 review。


八、如何建设团队 Prompt 库

Prompt 库不应该只是一个"常用语句收藏夹",而应该像代码片段库一样被管理。

1. 推荐目录结构

markdown 复制代码
prompts/
├── component/
│   ├── react-component.md
│   ├── vue-component.md
│   └── component-doc.md
├── performance/
│   ├── lighthouse-analysis.md
│   ├── bundle-splitting.md
│   └── image-optimization.md
├── collaboration/
│   ├── commit-message.md
│   ├── pr-description.md
│   └── tech-doc.md
└── README.md

每个 Prompt 文件建议包含:

  1. 适用场景。
  2. 输入字段说明。
  3. Prompt 模板。
  4. 使用示例。
  5. 输出验收标准。
  6. 版本记录。

2. 版本管理

Prompt 也需要迭代。建议记录每次修改原因。

markdown 复制代码
## 版本记录

### v1.0
- 初始版本,支持基础 React 组件生成。

### v1.1
- 增加 loading、empty、error 状态要求。
- 增加测试文件输出要求。

### v1.2
- 删除过重的 JSDoc 要求,避免生成冗余注释。
- 增加"组件内部不直接请求接口"的约束。

版本记录不是形式主义。它能帮助团队知道:这个 Prompt 为什么变成现在这样,以及它解决过什么问题。

3. 迭代流程

建议按这个流程维护 Prompt:

  1. 记录问题:AI 输出哪里不符合项目要求。
  2. 修改模板:补充缺失的上下文或约束。
  3. 重新生成:用同一个案例验证结果是否改善。
  4. 代码 Review:确认生成内容能否进入项目。
  5. 更新版本:记录改动原因。

不要因为某次输出不好就直接否定 AI。先判断是模型能力问题,还是 Prompt 缺少上下文。


九、面试中如何表达这类经验

如果面试官问:"你平时怎么使用 AI 提升前端开发效率?"

不要只回答:

markdown 复制代码
我会用 AI 写代码、生成文档、优化性能。

这个回答太泛,听不出你的工程判断。

可以这样答:

markdown 复制代码
我不会直接让 AI 写完整业务代码,而是把前端高频任务拆成几个可控场景,比如组件生成、性能分析、PR 描述和技术文档。

对于组件生成,我会在 Prompt 里明确技术栈、Props、状态要求、文件结构和测试要求,避免 AI 生成不能接入项目的代码。

对于性能优化,我会把 Lighthouse 或 Bundle 分析结果作为输入,让 AI 按影响范围和实施成本排序,而不是只给通用建议。

团队层面,我会把这些高频 Prompt 沉淀成模板库,配合版本记录和验收清单持续迭代。这样 AI 不只是个人提效工具,而是团队规范的一部分。

这个回答体现了三点:

  1. 你知道 AI 适合做什么,也知道它的边界。
  2. 你能把 Prompt 工程落到前端实际工作流。
  3. 你有团队协作和质量控制意识。

如果想继续加分,可以补一句:

markdown 复制代码
我会把 AI 生成结果当成初稿,而不是最终答案。涉及业务逻辑、权限、安全和性能的地方,仍然需要人工 review 和测试验证。

这句话能体现成熟度。AI 提效不是跳过工程流程,而是把重复劳动前置自动化,把人的精力留给判断和验证。


十、实战练习

练习一:写一个组件生成 Prompt

选择你项目中最常见的组件类型,比如表单、列表、弹窗或详情卡片。

要求:

  1. 写清楚技术栈。
  2. 写清楚 Props。
  3. 写清楚 loading、empty、error 状态。
  4. 写清楚输出文件结构。
  5. 让 AI 生成测试用例。

验收方式:

  1. 生成代码能否通过 TypeScript 检查。
  2. 是否需要大量手工修改。
  3. 是否符合团队命名和目录规范。

练习二:优化一个旧 Prompt

找一个你之前用过但效果不稳定的 Prompt,按下面格式复盘:

项目 说明
原始 Prompt 当时怎么写的
问题 AI 输出哪里不符合预期
缺失信息 少了技术栈、输入、约束还是输出格式
优化版本 新 Prompt 怎么改
验证结果 输出是否变稳定

练习三:建立一个小型团队 Prompt 库

先不用追求完整,建议从 5 个模板开始:

  1. React/Vue 组件生成。
  2. 组件文档生成。
  3. Lighthouse 报告分析。
  4. Commit Message 生成。
  5. PR 描述生成。

每个模板都要有"适用场景"和"验收清单"。没有这两项,Prompt 很容易变成复制粘贴的长文本。


十一、常见问题

Q1:Prompt 是不是越详细越好?

不是。

Prompt 的目标是提供必要上下文,而不是把所有团队规范都塞进去。过长的 Prompt 会稀释重点,也会让 AI 在多个目标之间摇摆。

好的做法是:当前任务需要什么,就提供什么。组件生成 Prompt 不要混入部署规范,性能分析 Prompt 不要混入 Commit 规范。

Q2:为什么同一个 Prompt 每次输出还会不一样?

因为大模型本身有生成随机性,且不同模型对约束的遵守程度不同。

如果你希望输出更稳定,可以:

  1. 明确输出格式。
  2. 提供正反示例。
  3. 使用"必须""禁止"等强约束词。
  4. 把复杂任务拆成多轮。
  5. 对关键输出加验收清单。

Q3:Prompt 库需要维护吗?

需要。

只要项目技术栈、代码规范、组件结构发生变化,Prompt 就应该同步更新。否则 AI 生成的内容会逐渐和真实项目脱节。

Q4:团队如何避免每个人写一套 Prompt?

可以把 Prompt 放进团队文档或代码仓库,并在 Code Review 中反向沉淀。

如果大家发现某类代码经常需要重复修改,就说明 Prompt 模板需要更新。Prompt 库不是一次性产物,而是跟着团队实践一起演进的工具。


十二、本章总结

前端 Prompt 工程的价值,不是让 AI 替你完成所有开发,而是把高频、重复、规则明确的任务标准化。

一个合格的场景化 Prompt,至少要包含:

  1. 明确的任务目标。
  2. 必要的项目上下文。
  3. 可执行的输入信息。
  4. 清晰的质量约束。
  5. 固定的输出格式。
  6. 可检查的验收标准。

当你能把组件开发、性能优化、团队协作这些场景沉淀成模板库,AI 才真正从"临时聊天工具"变成"工程效率工具"。

对面试来说,重点也不是背几个 Prompt 技巧,而是讲清楚:你如何把 AI 接入真实前端工作流,如何控制输出质量,如何让个人经验沉淀成团队资产。

相关推荐
阿瑞IT1 小时前
2026年 AI Agent 生产化落地全景:四大高频故障根因分析与工程解法
前端
木木剑光1 小时前
我开源了一个 React 组件库,沉淀了多个高频组件和实用 Hooks
前端·javascript·react.js
kyriewen1 小时前
DeepSeek API 高峰时段涨价 2 倍,便宜大碗的时代要结束了?
前端·ai编程·deepseek
Java转AI1 小时前
ChatGPT 凭什么记住你上句说的?Spring AI 多轮对话记忆,3 步搞定
ai编程
AI小老六1 小时前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent
后端·算法·ai编程
Moment2 小时前
牛逼,NextJs 从 16.3 开始全面拥抱 Agent Native 🥰🥰🥰
前端·后端·面试
沸点小助手2 小时前
6月沸点活动获奖名单公示|本周互动话题上新🎊
前端·后端
Csvn2 小时前
React 19 `use()` 来了:以后数据加载可以不用 useEffect?
前端·react.js
没落英雄2 小时前
从零开始搭建一个 AI Agent —— LangChain + TypeScript 实战手记
前端·人工智能·架构