当前位置: 首页 > news >正文

vue3项目中使用CanvasEditor开箱即用(组件的形式,组件封装好了)

canvas-editor-vue

这是canvas-editor项目的vue版本,我封装成组建了,当然了这是个已经把canvas-editor封装好的的Vue项目

项目地址GitHub地址:GitHub - aini-aini/canvas-editor-vue: this is a project than can be used in vue project as Componentthis is a project than can be used in vue project as Component - aini-aini/canvas-editor-vue https://github.com/aini-aini/canvas-editor-vue

1. 启动项目

1-1 安装依赖

 npm install

1-2 运行项目

 npm run dev

 

2.项目说明

这是一个只有一个组件的,没有配置路由,没有配置仓库一个空白项目,components目录下自由我封装好的canvas-editor的组件

项目启动以后界面如下

 

大家看到这个启动起来的项目根源码是不一样的,首先我加了一个顶部的导航栏,右边的侧边栏,左边的目录侧边栏也做了修改,这些地方会慢慢后面我会做讲解,我先告诉大家如果把这个组件用到你们的项目当中

 

3.把组件用到自己的Vue项目中(Ts项目)

第一步: 把components目录下的CanvasEditor文件夹放到你们项目中的components目录下

 

第二部:父组建中导入使用

 <script setup lang="ts">// 导入CanvasEditor.vue组件import CanvasEditor from "./components/CanvasEditor/CanvasEditor.vue";import { ref, onMounted, nextTick } from "vue";​// 定义用于接受Editor实例的变量const canvasEditorRef = ref();</script>​<template><!-- canvasEditorRef就是CanvasEditor.vue传递过来的Editor实例 --><!-- 有了这个实例以后大家还安装插件 --><CanvasEditor ref="canvasEditorRef" /></template>​<style scoped></style>

我父组建是App.vue

 

4.对于修改部分做一些说明

 <script setup lang="ts">import CanvasEditor from "./components/CanvasEditor/CanvasEditor.vue";import { ref, onMounted, nextTick } from "vue";​const canvasEditorRef = ref();onMounted(() => {nextTick(() => {const canvasEditor = canvasEditorRef.value;console.log(canvasEditor);});});</script>​<template><!--  --><CanvasEditor ref="canvasEditorRef" /></template>​<style scoped></style>
 

反正这种组件式的封装已经可以直接在Vue项目中直接使用,关于功能你们可以直接修改组件源码,源吗就在CanvasEditor里面的Src目录

 

我把源项目里面Src目录下的main.ts里面的内容放到了CanvasEditor目录下的index.ts

 

把源项目里的index.html里面的html内容放到了CanvasEditor.vue里面,并且自己做了一些修改

 

UI样式我也直接放到了CanvasEditor.vue里面的style里面

 

5.自己修改的部分代码说明

5-1 顶部菜单栏

 

下面是源码里index.html结构

 

下面是我做的一些结构调整

 

Top_menu_bar下面多了一个top_menu的div就是我添加的顶部菜单栏源码里面menu菜单栏fixed定位,占据60px的高度

我在修改后Top_menu_bar fix定位,占据100像素的高度;top_menu占据40像素,menu占据60像素,这其实很简单的,大家应该能看得懂

 
.top_menu_bar {width: 100%;height: 100px;background-color: #e1e5e9;position: fixed;top: 0;z-index: 9;border-bottom: 2px solid #e2e6ed;}​.top_menu {width: 100%;height: 40px;display: flex;align-items: center;justify-content: start;padding: 0 110px;}​.menu {width: 100%;height: 60px;/* top: 0; *//* z-index: 9; *//* position: fixed; */display: flex;align-items: center;justify-content: center;/* background: #F2F4F7; */background-color: #fff;box-shadow: 0 2px 4px 0 transparent;}

当然了菜单来功能我没有实现,大家需要的话自己实现一下,如果不需要菜单栏,那就再改源码,改回去,当然了,有一些动态计算的地方都需要改回去,所以如果要改回去的朋友注意去这些地方把100改回去

 

5-2 关于右边菜单栏

5-2-1 菜单栏是干什么的?

我有个需求就是我希望集成Ai功能实现对文档内容的提问和替换,所以其实这个就是一个Ai侧边栏工具

5-2-2 如何实现的

其实纯插件的形式实现的,功能完全独立于组件本身,大家不想用只要注释掉几行代码即可

 

CanvasEditor/src/plugin/card文件夹里就是这个插件的代码,这个功能是我自己实现的

 

用法就是首先导入这个插件

 import { cardPlugin } from "./src/plugins/card"; // 插件统一导出文件

然后挂在到Editor实例上面即可,目前我只接了一个deepseek模型(⚠️:你的模型的key自己在本地这样用用可以,但是不安全的,有泄露key的风险,需要注意)

  instance.use(cardPlugin, { apiKey: "你的deepseek模型的apikey" });

大家不想用的话,直接删除导入使用逻辑即可我现在注释掉了,再看看页面

 

我再把代码加回来,给大家演示下功能

5-2-3 功能演示

1. 菜单栏显示或隐藏

插件注册以后通过工具栏就会有这个展开或合上侧边栏的图标,点击可以进行一个隐藏或者显示

 

2. ai提问

选中一段文本,进行提问,并替换

 

 

 

3. 侧边栏拖放

我这个侧边栏是可以脱离文档流进行拖拽的

 

 

如果想要还原回去也很简单,拖动拖到离右边窗口10px以内时,这个侧边栏边框变蓝色,意思就是可以放手吸附到侧边,此时放手即可

 

 

或者

 

5-3 关于左边目录栏

这个其实改动不大,我只是加了过渡动画和改变了宽度,这个大家自己找找源码吧

5-4 关于目前文档内容

大家发现项目启动后是默认有内容的,其实内容也是通过独立的插件去渲染的

我有个需求就是我想要把一些从ai拿到的结果渲染到页面上,就得通过代码去操作了,所以对一些数据的插入我写了一个aiWrite插件来操作的,具体源码在

 

导入和使用

我是从./src/test导入了一个testFunction;这是我用来测试用的,然后把Editor实例instanca传递过去了

 

咱再来看看这个testFunction

 

大家有没有注意,这个插件注册完以后Editor实例就又了新的方法就是aiWrite;在插件内容我就给editor实力家了这个aiWrite,注册后就有这个方法了,所以页面上的内容就是这么来的

 

如果我把test Function注释掉看看

 

可以看看页面清空了

好了,今天我就分享到这里,下面我想说一说侧边栏插件,下面的内容根上面说的把canvas-editor用到Vue项目无关了

6.源码里安装右边侧边栏

我刚开始侧边栏是直接以插件的形式开发的并做了打包发不到npm上了,不过只能在源码里使用

npm包地址:@aini_ai/ai-assistant - npm

插件源码github地址:GitHub - aini-aini/canvas-editor-ai-assistant

 

我做个演示,下面这个现在是一个源码项目

 

安装我发布的插件包

 

然后在main.ts里面使用

首先导入和注册

 import cardPlugin from '@aini_ai/ai-assistant';// 在 canvas-editor 中注册插件instance.use(cardPlugin,{ apiKey: '你的seepseek模型的apiKey' })

 

再重新启动项目即可,可以看到已经有侧边栏了

 

大家需要的话可以继续修改源码去完善其功能

有问题欢迎交流

 

相关文章:

  • Makefile -------- 简单介绍
  • 【Java】Spring IoC中的相关注解
  • Cloudflare防火墙拦截谷歌爬虫|导致收录失败怎么解决?
  • SpringBoot集成Redis:实现分布式锁(redistemplate,lua,redisson)
  • Synchronized详解及高频面试问答
  • Makefile与CMake
  • 登录接口中图片验证码Tesseract-OCR识别Java脚本
  • 优化算法加速深度学习模型训练
  • IEEE出版|连续多年稳定检索|第三届信号处理与智能计算国际学术会议(SPIC2025)
  • CentOS7 OpenSSL升级1.1.1w
  • Vue中的自定义指令适用于哪些场景
  • 报销单业务笔记
  • 题解:P12207 [蓝桥杯 2023 国 Python B] 划分
  • 贝叶斯优化Transformer融合支持向量机多变量回归预测,附相关性气泡图、散点密度图,Matlab实现
  • 深入探索向量数据库:构建智能应用的新基础
  • vue3搭建脚手架前的前置知识
  • psycopg_pool.PoolTimeout: couldn‘t get a connection after 120.00 sec异常
  • 技术文档:变频器干扰问题与解决方案
  • 使用 QGIS 插件 OpenTopography DEM Downloader 下载高程数据(申请key教程)
  • 压电陶瓷极化-佰力博与您探讨极化工艺的重要性及极化方法。
  • 沃尔玛上财季净利下滑12%:关税带来成本压力,新财季价格涨幅将高于去年
  • 会谈时间迟迟未定、核心议题存在分歧,俄乌“土耳其谈判”一波三折
  • 奥古斯都时代的历史学家李维
  • 2025年中国网络文明大会将于6月10日在安徽合肥举办
  • 体坛联播|C罗儿子完成国家队首秀,德约结束与穆雷合作
  • 多家外资看好中国市场!野村建议“战术超配”,花旗上调恒指目标价