ai时代前端技术栈推荐

前言

前端项目要区分做toB,toC,不同的风格技术栈完全不同,前端的风格也不同

ai编码工具推荐:

  • codex
  • claude code
  • github copilot cli

github copilot cli 支持 openaiclaude 模型

前端还是Claude 模型审美更好,使用 Claude opus 4.6 来编码

流程

AI时代的开发都是文档先行,代码不值钱,规划项目的能力是很重要的

1

1. 明确技术栈

明确自己项目的定位,明确技术栈使用哪些组件

AI特别喜欢自己造轮子,就任意失控,所以推荐自己想这些功能用哪些组件来实现

这就需要你对前端的技术有一点了解,不行和gpt5.5聊然后去看各大论坛和github大家使用反馈情况

判断是否选择这个技术站

比较推荐的技术栈就是 React,React生态下 AI巨会写相关的代码,写的很优秀

1

2. 编写 AGENTS.mdCLAUDE.md

编写指导AI编码、AI写文档、AI测试、AI review的提示词,将这些提示词作为资产放到项目中去

要用的时候给code agent来进行编码

2

  • 比如:
# AGENTS.md

## 1. 项目定位

本项目为 **虹启万象平台** 前端应用。

应用形态为:

- 企业级中后台管理系统
- Admin Dashboard Layout
- 面向 AI 能力、知识库、解决方案、应用聚合、大模型资源管理等场景
- 强调统一入口、统一管理、统一体验

应用名称:

​```text
虹启万象
​```

英文名称可使用:

​```text
HongQi WanXiang Platform / HQWX Platform
​```

---

## 2. 技术栈

前端基础技术:

| 类型                  | 技术                                  |
| --------------------- | ------------------------------------- |
| 框架                  | Vue 3                                 |
| 构建工具              | Vite                                  |
| UI 组件库             | Element Plus                          |
| 网络请求              | Axios                                 |
| 路由管理              | Vue Router                            |
| 状态管理              | Pinia                                 |
| 图表展示              | ECharts                               |
| 图标库                | lucide-vue-next                       |
| Office 文件预览       | vue-office                            |
| Markdown / KaTeX 渲染 | markdown-it-katex                     |
| 大模型图标            | https://icons.lobehub.com/components/ |

默认使用:

​```vue
<script setup lang="ts">
​```

必须优先使用:

- Composition API
- TypeScript
- 组件化拆分
- services 层统一请求
- composables 抽离复杂逻辑

---

## 3. 后端与鉴权约定

当前后端已实现认证服务与 API 网关能力。

数据流:

​```text
Client → Gateway → Auth Service
​```

统一鉴权方案:

- 使用 **Access JWT**
- 使用 **Refresh Token**
- 由 **API Gateway** 统一鉴权
- 服务内部默认带 `/api/v1` 前缀
- 网关可将外部路径映射到内部服务路径

开发时注意:

- 前端不直接绕过网关访问后端服务
- 请求统一走 Axios 封装
- Token 相关逻辑统一放在认证模块中处理
- 不要在业务组件中直接拼接鉴权 Header
- 不要在页面组件中直接写刷新 Token 逻辑

---

## 4. 推荐目录结构

​```text
src/
├── api/                  # API 类型定义或接口声明
├── assets/               # 静态资源
├── components/           # 通用组件
├── composables/          # 可复用逻辑
├── layouts/              # 页面布局
├── router/               # 路由配置
├── services/             # 请求服务封装
├── stores/               # Pinia 状态管理
├── styles/               # 全局样式
├── types/                # 全局类型定义
├── utils/                # 工具函数
└── views/                # 页面级组件
​```

建议页面模块:

​```text
views/
├── dashboard/
├── agent/
├── solutions/
├── knowledge-base/
├── applications/
├── playground/
│   ├── llm/
│   ├── image/
│   └── video/
├── model-center/
├── ai-model-management/
└── user-management/
​```

---

## 5. 编码规范

### 5.1 组件职责

一个组件只做一件事。

组件类型建议区分为:

- 展示组件
- 输入组件
- 容器组件
- 页面组件
- 业务弹窗组件
- 表格 / 列表组件

不要把请求、状态、复杂计算、表格渲染、弹窗逻辑全部写在一个组件里。

---

### 5.2 文件行数限制

建议控制:

| 文件类型     | 行数限制             |
| ------------ | -------------------- |
| 普通组件     | ≤ 200 行             |
| 页面组件     | ≤ 400 行             |
| composable   | ≤ 200 行             |
| service 文件 | 按模块拆分,避免过大 |
| store 文件   | 按业务域拆分         |

超过限制时必须拆分。

---

### 5.3 Vue 写法

统一使用:

​```vue
<script setup lang="ts">
​```

优先使用:

- `ref`
- `reactive`
- `computed`
- `watch`
- `onMounted`
- 自定义 composables

禁止在新代码中使用 Options API。

---

### 5.4 逻辑与视图分离

复杂逻辑必须抽离。

示例:

​```text
components/SolutionUploadDialog.vue
composables/useSolutionUpload.ts
services/solutionService.ts
​```

组件只负责:

- 展示数据
- 接收用户输入
- 触发事件
- 调用 composable 暴露的方法

复杂逻辑放到:

- `composables/useXxx.ts`
- `services/xxxService.ts`
- `stores/xxxStore.ts`
- `utils/xxx.ts`

---

### 5.5 请求统一管理

组件中禁止直接写:

​```ts
axios.get(...)
axios.post(...)
fetch(...)
​```

必须通过 `services` 调用。

推荐写法:

​```ts
// services/solutionService.ts
export function getSolutionList(params: SolutionListParams) {
  return request.get<SolutionListResponse>('/solutions', { params })
}
​```

页面中调用:

​```ts
const result = await getSolutionList(query)
​```

---

### 5.6 状态管理

状态分层:

| 状态类型       | 推荐方式                  |
| -------------- | ------------------------- |
| 单组件内部状态 | `ref` / `reactive`        |
| 父子组件通信   | `props` / `emit`          |
| 跨页面共享状态 | Pinia                     |
| 持久化登录状态 | Pinia + storage           |
| URL 状态       | Vue Router query / params |

不要把所有状态都塞进 Pinia。

---

### 5.7 模板保持简单

模板只负责展示。

复杂逻辑不要写在模板中。

不推荐:

​```vue
<div>{{ list.filter(item => item.enabled).map(item => item.name).join(',') }}</div>
​```

推荐:

​```ts
const enabledNames = computed(() =>
  list.value
    .filter(item => item.enabled)
    .map(item => item.name)
    .join(',')
)
​```

​```vue
<div>{{ enabledNames }}</div>
​```

---

### 5.8 重复逻辑处理

同一逻辑出现三次,必须抽象。

可抽象为:

- 通用组件
- composable
- util function
- service method
- Pinia action

---

### 5.9 错误处理

所有异步请求必须考虑错误处理。

推荐:

​```ts
try {
  loading.value = true
  const data = await getSolutionList(params)
  list.value = data.items
} catch (error) {
  ElMessage.error('获取解决方案列表失败')
} finally {
  loading.value = false
}
​```

不要静默吞掉异常。

---

### 5.10 TypeScript 要求

新代码必须补充基础类型。

禁止大量使用:

​```ts
any
​```

除非确实无法确定类型,并且需要加注释说明原因。

推荐:

​```ts
interface SolutionItem {
  id: string
  name: string
  provider?: string
  tags: string[]
  createdAt: string
}
​```

---

## 6. UI 与交互规范

整体风格:

- 企业级
- 简洁
- 白 / 红 / 灰为主
- 少用花哨动效
- 少用过度渐变
- 保持中后台系统的可读性和稳定感

页面设计原则:

- 信息层级清楚
- 操作按钮明确
- 表格、筛选、弹窗规范统一
- 空状态、加载态、错误态必须完整
- 危险操作必须二次确认
- 管理员操作需有明确视觉区分

常见状态必须覆盖:

| 状态     | 要求                   |
| -------- | ---------------------- |
| loading  | 使用骨架屏或加载组件   |
| empty    | 使用清晰空状态文案     |
| error    | 展示失败原因或重试入口 |
| success  | 给予必要反馈           |
| disabled | 明确不可操作原因       |

---

## 7. 路由规范

路由建议按业务模块拆分。

示例:

​```ts
{
  path: '/solutions',
  name: 'Solutions',
  component: () => import('@/views/solutions/index.vue'),
  meta: {
    title: '解决方案',
    requiresAuth: true
  }
}
​```

要求:

- 路由必须配置 `meta.title`
- 需要登录的页面必须配置 `requiresAuth: true`
- 管理员页面需要配置权限字段
- 页面组件使用懒加载

---

## 8. 接口与服务规范

### 8.1 Axios 封装

统一封装请求实例:

​```text
services/request.ts
​```

需要包含:

- baseURL
- timeout
- request interceptor
- response interceptor
- Access Token 注入
- 401 处理
- Refresh Token 处理
- 统一错误提示策略

---

### 8.2 Service 命名

推荐:

​```text
authService.ts
solutionService.ts
knowledgeBaseService.ts
applicationService.ts
modelService.ts
playgroundService.ts
userService.ts
​```

函数命名示例:

​```ts
login()
logout()
refreshToken()
getSolutionList()
uploadSolution()
deleteKnowledgeFile()
getModelList()
createChatCompletion()
generateImage()
​```

---

## 9. AI 生成代码要求

AI 生成代码后必须整理。

必须检查:

- 是否有冗余代码
- 是否补充 TypeScript 类型
- 是否有错误处理
- 是否有 loading 状态
- 是否直接在组件里写请求
- 是否把复杂逻辑堆在页面里
- 是否出现重复逻辑
- 是否有无用 import
- 是否违反组件行数限制
- 是否影响现有路由和页面结构

禁止直接提交未经整理的 AI 生成代码。

---

## 10. 开发任务处理原则

当需要新增功能时,优先按以下顺序处理:

1. 明确页面归属模块
2. 明确是否已有 service
3. 明确是否已有 store
4. 明确是否需要新增组件
5. 明确是否需要新增路由
6. 明确接口数据结构
7. 实现页面和交互
8. 补充错误态、加载态、空状态
9. 简单自测
10. 清理冗余代码

---

## 11. 禁止事项

禁止:

- 直接在组件中写 Axios 请求
- 直接在页面中处理复杂鉴权逻辑
- 新代码使用 Options API
- 大量使用 `any`
- 一个页面文件无限堆逻辑
- 重复复制相同代码
- 无 loading、无错误处理、无空状态
- 未确认接口结构时强行写死字段
- 擅自修改全局布局和主题风格
- 删除已有功能但不说明原因

---

## 12. 输出代码时的要求

生成或修改代码时,需要尽量做到:

- 文件路径清晰
- 给出完整代码
- 标明新增文件和修改文件
- 不要只给片段,除非用户明确要求
- 保持项目现有风格
- 不引入不必要的新依赖
- 优先复用已有组件、service、store、utils
- 改动范围尽量小
- 保证代码可读、可维护

---

## 13. 项目当前重点模块

当前平台重点模块包括:

- 仪表盘
- Agent
- 解决方案
- 公共知识库
- AI 应用
- AI 操场
  - LLM 调试
  - Image 调试
  - Video 调试
- 大模型中心
- AI 模型管理
- 用户管理

开发时应优先保证这些模块的导航、布局、权限、数据流和交互体验一致。

---

## 14. 总体原则

本项目的核心目标不是堆功能,而是形成一个稳定、清晰、可维护的企业级 AI 平台前端。

所有代码应优先满足:

1. 结构清楚
2. 职责明确
3. 易于维护
4. 易于扩展
5. 风格统一
6. 可被团队继续接手

最终目标:

​```text
让下一个开发者 30 秒内能看懂组件结构,3 分钟内能定位业务逻辑,10 分钟内能完成小改动。
​```

3. 出稿图

3

3.1 使用gpt-image-2生成参考图

当你不知道web前端要弄成什么样子就可以使用gpt image2 来生成

描述清楚你的需求,页面风格,使用gpt image2 就能生成一个很好的参考图,抽奖

提示词可以去别的找找参考参考,自己积累积累,或者之直接让AI生成

比如:

hqwx平台页面

img

3.2 figma 或者 google stitch 生成草稿

figma的 ai 生成 能快速出一个react 相关的组件十分好用,如果满意可以直接导出

然后交给AI复用这些组件,进一步迭代功能

figma

google stitch 为直接生成参考页面,量大管饱,纯抽奖,不过现在比较推荐gpt-image-2

4. 让AI查看接口文档来实现需求

4

推荐使用md文档,并让文档中编写好接口并附带说明,比如下面的例子

### 1. 创建用户

- **接口地址**:`POST /api/v1/admin/users`
- **请求参数**(JSON):
  - `username`(string):用户名
  - `password`(string):密码
  - `email`(string,可选):邮箱
  - `display_name`(string,可选):展示名称
  - `avatar_url`(string,可选):头像地址
- **返回结果**:
  - `success`(bool)
  - `message`(string)
  - `data`(object,可选):创建的用户信息

**请求exp**

​```json
{
  "username": "string",
  "password": "string",
  "email": "string",
  "display_name": "string",
  "avatar_url": "string"
}
​```

**响应exp**

​```json
{
  "success": true,
  "message": "user created, user_id=2",
  "data": {
    "id": 2,
    "username": "string",
    "email": "string"
  }
}

​```

md先行,对AI友好型,不推荐直接导出openapi.json文件,因为单个文件太大了,AI上下文很容易爆掉

5. AI完成编码人进行完成的E2E测试

5

功能测试这一块AI全替代成本太高,最好还是人来进行AI测试

虽然Agent 有 computer use,使用playwright能实现对浏览器的原生操作进行测试,单还是不保险

另一种可行的方式是直接让AI将测试流程固定下来E2E测试每次CI触发,进行全流程测试,也不失一种选择

人的工作

human

人需要的是对整个项目的把控

  1. 架构的把控
  2. 技术栈的把控
  3. 复杂事务的拆分
  4. 文档的编写(给AI提供方向和提示词的编写)
github