从 PHP 到 AI + Golang,程序员自救转型手记(三十九):前端上传组件实现

这是一个系列 Blog,作者将以一个 PHP 全栈工程师的身份,利用 AI 工具(claude code、codex、deepseek、豆包等):从零开始学习 golang 语言,并最终完成 ai-go-admin(github | gitee)开源项目的制作,全程记录分享。

在上一期,我们进行了 "获取资源完整路径的前后端函数实现",本期将完成:前端上传组件实现

前端上传组件实现

在之前,我们已经准备好了上传接口,甚至准备好了前端上传请求函数和获取资源完整路径的 fullURL 函数。

上传是典型的大组件,因为涉及的功能非常多,希望 AI 能给力一点吧,现在直接让 AI 参考 BuildAdmin 的上传组件代码,该组件使用多年,受众多用户认可,提示词如下:

参考 @../buildadmin-v2.3.7/web/src/components/baInput/components/baUpload.vue 实现 @web/src/components/agInput/ 的 agUpload.vue 组件:

  1. 封装好的上传请求函数位于 @web/src/api/common.ts
  2. ba 开头的 class、变量 等,都适应化的改为 ag,比如 ba-upload-wrapper
  3. 原组件已标记废弃的 props 无需实现
  4. 于 @xxx/index.vue(一个空白 vue 文件),生成使用示例,以便我测试。

总体来讲 AI 这次没有让人失望,虽然代码是现成的,但对工作效率的提升依旧非常恐怖:

AI 成功的将 BuildAdmin 上传组件的 单图、多图、单文件、多文件 功能全部实现。

且该组件原有的扩展功能,如:剪切板粘贴上传、拖拽上传、拖拽排序、强制上传到本地等 props、插槽、各种事件 等等,全部成功移植。

最关键的是它只做了适应化移植,并没有一通瞎改,这让上传这种大组件的人工 review 工作也变得相当容易(不过这可能也是我们任务拆分做的好的原因,哈哈)。

我直接利用代码对比工具进行了人工 review,并对细节处略作调整,这里提取一两处 AI 做的微调出来供大家欣赏(仅代码层面,非功能层面):

这些修改,不是我让它改的,提示词没有提及任何需要让它改动或是优化的词语,都是它自己在整理过程中进行的修改,AI 版本好在哪里,欢迎大佬们评价。

ts 复制代码
const { oldIndex, newIndex } = evt

// 交换变量,原版
[state.fileList[oldIndex], state.fileList[newIndex]] = [state.fileList[newIndex], state.fileList[oldIndex]]

// AI 版
state.fileList[newIndex] = [state.fileList[oldIndex], (state.fileList[oldIndex] = state.fileList[newIndex])][0]
ts 复制代码
// 原版
const isImageType = () => props.type == 'image' || props.type == 'images'

// AI 版
const isImageType = computed(() => props.type == 'image' || props.type == 'images')

最终效果如下:

相关推荐
云浪4 小时前
Go 并发实战:从零实现一个高并发安全的任务调度器
javascript·后端·go
Ward的AI产品实战7 小时前
多个订阅接多个 Agent 怎么管?我从 CC-Switch 迁移到了开源 AI 网关 Magpie(上篇)
开源·ai编程
qinglongcn8 小时前
为什么 Agent 循环是 for{} 而不是 DAG——架构选择的深层原因
agent·ai编程
ServBay9 小时前
DeepSeek 小更新,许愿式编程成真了?
aigc·ai编程·deepseek
殷紫川10 小时前
Context7 :给 AI 编码代理接上实时文档的 “活水”
aigc·ai编程·mcp
桃西西呀12 小时前
我把网关限流配置成每秒 100 请求,大促一来照样被打挂,还把别人也拖垮了
人工智能·llm·ai编程
程序员天天困12 小时前
DeepSeek-V4.1-Flash-1017 上手实测:3D 直出,效果到底如何
aigc·ai编程·deepseek
OpsEye12 小时前
大模型账单对账难:不同厂商 Token 统计口径差异怎么处理
javascript·ai编程
全栈项目管理程序猿12 小时前
ArcGIS JS 基础教程(32):体元系列 - VoxelSlice 体元切片
前端·javascript
桃西西呀13 小时前
我把整本接口文档塞进 system prompt,前 3 轮答得准,第 8 轮开始胡说,账单还翻了 4 倍
人工智能·llm·ai编程