和 Trae 一起开发可视化拖拽编辑项目(1) :迈出第一步

最近想尝试做一个简单的可视化拖拽项目,Trae 近来也蛮火的,刚好用一个完整的项目来磨合一下。

预期实现的功能如下:

  1. 使用 vue3、vite、element plus 、unocss 搭建项目
  2. 拖拽物料包括:文本、图片、视频、音频等常用元素
  3. 可修改元素的属性,包括:尺寸、颜色、src等常用属性
  4. 实时预览页面

Vue3 基础项目搭建

新建一个文件夹 simple-paint,让 Trea 从这里开始帮我们搭建项目

Trae 有条不紊一步一步的安装依赖,配置 vite.config.ts,同时把 element-plus 按需导入也配置好了

javascript 复制代码
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import Unocss from 'unocss/vite'

// https://vite.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
    Unocss()
  ],
})

但是,它没有把 unocss 完全配置好,没有生成uno.config.ts,也没有在入口增加 unocss,所以这一步自己手动配一下:

javascript 复制代码
import { defineConfig } from 'unocss'

export default defineConfig({
  // ...UnoCSS options
})
arduino 复制代码
import 'virtual:uno.css'

接下来,安装 pinia 和拖拽插件,拖拽插件选择了 vue-drag-resize github.com/kirillmuras...,除了拖拽还有缩放功能,一步到位。

我:帮我配置pinia和 适配 vue3 版本的vue-drag-resize

这一步 Trae 帮我安装了 pinia 并配置在项目中,但是 vue-drag-resize 的版本没有安装对,实际上还是vue2的版本

json 复制代码
"vue-drag-resize": "^1.5.4"

所以继续人工处理, 删掉错误的依赖,安装适用 vue3 的依赖版本

css 复制代码
npm remove vue-drag-resize
npm install vue-drag-resize@next 

OK,现在是正确的依赖版本了

json 复制代码
"vue-drag-resize": "^2.0.3"

建立画布,实现元素拖拽

我:建立一个画布,可以调节画布尺寸。 画布左侧放置文本、图片、音频、视频四个元素,可以通过拖拽加入画布内,画布内的元素可以缩放

通过 Trae 的一番努力,实现了对话中的需求,雏形初备,还是很棒的!

它帮我新增了两个 store 文件,在 App.vue 完成了主要页面代码

继续完善需求

我:画布内元素增加删除功能。画布右侧增加功能区域,可以实时修改画布内当前当前选择元素的尺寸、颜色、src 等元素相关属性。

等待 Trae 所有操作执行完成之后,2 个地方出错了:

  1. 使用了computed,但是没有引入
  2. 多了一个 div 结束标签

手动改了下,运行代码,emm,怎么有点不对劲

算了,这里自己调整一下。可能我应该在一开始就把页面整体布局讲清楚,再来一步步加功能

手动修改布局后,发现元素可以被拖出画布区域,为了管理方便,还是不要让元素超出画布范围吧。这个需求就懒得找 Trae 了, vue-drag-resize 自带属性可以设置

parentLimitation 限制元素超出画布区域

ini 复制代码
<vue-drag-resize :parentLimitation="true">

大概花了一个小时,我们迈出了很重要的一步,完成了基础的画布元素拖放功能和基础属性的设置,但实际还是一个非常粗糙的状态。接下来在继续完善功能的同时,还要优化项目结构优化代码质量,使项目达到可用阶段。

今天使用 Trae 的感受还是不错的,明显提升了开发效率,虽然也会有一些错误,但它确实可以作为一个强大的辅助工具,不过最终的开发效果还是依赖于开发者自身的知识、经验和对工具的合理运用。

未完待续,欢迎交流~ 有任何问题或者兴趣也可以在公众号:自由前端之路 找到我。

相关推荐
崔庆才丨静觅34 分钟前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60611 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了1 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅2 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅2 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅2 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment2 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅3 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊3 小时前
jwt介绍
前端
爱敲代码的小鱼3 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax