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

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

相关推荐
蓝瑟忧伤8 小时前
前端技术新十年:从工程体系到智能化开发的全景演进
前端
Baklib梅梅9 小时前
员工手册:保障运营一致性与提升组织效率的核心载体
前端·ruby on rails·前端框架·ruby
IT_陈寒9 小时前
Redis性能翻倍的5个冷门技巧,90%开发者都不知道第3个!
前端·人工智能·后端
jingling55511 小时前
vue | 在 Vue 3 项目中集成高德地图(AMap)
前端·javascript·vue.js
油丶酸萝卜别吃11 小时前
Vue3 中如何在 setup 语法糖下,通过 Layer 弹窗组件弹出自定义 Vue 组件?
前端·vue.js·arcgis
J***Q29217 小时前
Vue数据可视化
前端·vue.js·信息可视化
ttod_qzstudio19 小时前
深入理解 Vue 3 的 h 函数:构建动态 UI 的利器
前端·vue.js
_大龄19 小时前
前端解析excel
前端·excel
一叶茶19 小时前
移动端平板打开的三种模式。
前端·javascript
前端大卫19 小时前
一文搞懂 Webpack 分包:async、initial 与 all 的区别【附源码】
前端