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

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

相关推荐
LucianaiB3 小时前
【元宝搜索开发者征文大赛】AI时代,学得慢就不用学?用元宝搜索打造一个教程保质期,确保每一个教程符合你的现状
前端·人工智能·ai编程
excel3 小时前
JavaScript 对象池:减少高频对象创建与 GC 压力
前端
陈随易5 小时前
纯 Go 写的 JS 引擎,跑分超过了 C 语言的 QuickJS
前端·后端·程序员
子兮曰6 小时前
Chrome 权限元素实战:144 与 151 的渐进增强写法
前端·javascript·chrome
IT_陈寒6 小时前
Redis连接池泄漏那次,我差点把生产环境搞崩了
前端·人工智能·后端
强尼银手7 小时前
我花一天做了个格斗游戏原型,判定全对,然后被「美术」劝退了
前端·javascript
石小石Orz7 小时前
AI 正在蚕食我们的编码能力
前端·后端·算法
陈随易7 小时前
专注飞机 FocusFlight,两个人把番茄钟做成了一趟航班
前端·后端·程序员
总要学点什么8 小时前
第98篇:三维特效-材质线效果——给一条线换十种材质,虚线的图案只填了一半
开发语言·前端·javascript·ecmascript·gis·webgl·材质
10share8 小时前
基于大模型的 i18n 方案:把中文原文当 Key,轻松搞定多语言维护
前端·vue.js