跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
TypeScript大前端

vkedit:Vue3 Web 图形编辑器 npm 包,支持标签与二维码设计

vkedit 是基于 Vue3 和 TypeScript 开发的 Web 图形编辑器 npm 包。它提供可视化拖拽界面,支持标签、票据、二维码及条形码的设计与生成。内置撤销重做、智能对齐、插件化架构等功能,兼容主流浏览器。通过 npm 安装后,开发者可快速集成到 Vue 项目中,实现像素级精确定位与高性能渲染,适用于电商标签、物流运单及电子发票等场景。

黑客发布于 2026/4/7更新于 2026/10/2498 浏览
vkedit:Vue3 Web 图形编辑器 npm 包,支持标签与二维码设计

vkedit:基于 Vue3 的 Web 图形编辑器

项目预览

📊 为什么选择 vkedit?

🌐 专为 Web 开发打造的 Vue3 npm 包

vkedit 是一个完全基于 Web 技术栈的图形编辑器解决方案,专为 Vue3 项目设计:

  • 纯前端实现:无需后端服务,完全在浏览器中运行
  • Vue3 原生支持:基于 Vue 3 Composition API 开发,完美融入 Vue 项目
  • npm 包管理:通过 npm/pnpm/yarn 一键安装,版本管理方便
  • TypeScript 支持:完整的类型定义,开发体验更佳
  • 跨平台兼容:支持所有现代浏览器,无需额外插件
vkedit 能帮您解决什么问题?
  1. 🏷️ 标签模板设计难?
    • 痛点:传统开发方式需要大量 Canvas 绘图代码,难以维护和复用
    • 解决:vkedit 提供可视化设计界面,拖拽即可完成标签设计
    • 价值:开发效率提升 80%,维护成本降低 60%
  2. 🔳 二维码/条码生成复杂?
    • 痛点:需要集成多个第三方库,处理各种格式兼容问题
    • 解决:内置多种格式支持,一键生成专业二维码和条码
    • 价值:支持 EAN-13、CODE-128、QR Code 等 20+ 种格式
  3. 📋 票据/证书设计繁琐?
    • 痛点:表格、文本、图形组合复杂,精确对齐困难
    • 解决:提供智能对齐工具和精确标尺系统
    • 价值:像素级精确定位,专业设计体验
  4. 🔄 撤销重做实现困难?
    • 痛点:需要手动维护历史记录,代码逻辑复杂易出错
    • 解决:内置命令模式,自动管理操作历史
    • 价值:零配置实现完整的撤销重做功能
  5. 🔌 功能扩展受限?
    • 痛点:传统编辑器功能固定,无法根据需求定制
    • 解决:插件化架构,按需启用功能模块
    • 价值:灵活扩展,支持自定义插件开发

🎨 核心功能展示

功能模块说明适用场景
🎯 可视化设计拖拽式图形编辑器标签、海报、名片设计
📦 丰富的图形库矩形、文本、线条、表格、图表等多种设计需求
🔳 二维码生成Qrcode 插件营销码、支付码、信息码
📊 条形码支持支持多种国际标准商品编码、物流追踪
📐 精确对齐智能对齐工具专业设计排版
🔄 撤销重做完整的历史记录管理提升用户体验
📥📤 导入导出JSON/PNG/PDF 格式数据持久化与分享

🎯 快速开始

📦 通过 npm 安装

vkedit 已发布到 npm 仓库,可以通过 npm、pnpm 或 yarn 一键安装:

# 使用 pnpm(推荐)
pnpm add vkedit vue konva vue-konva pinia

# 或使用 npm
npm install vkedit vue konva vue-konva pinia

# 或使用 yarn
yarn add vkedit vue konva vue-konva pinia

npm 包信息:

  • 包名:vkedit
  • 最新版本:查看 npmjs.com
  • 依赖要求:Vue 3.5+、Node.js 20.19+
1. 安装依赖

首先,确保你的项目已经安装了 Vue 3 和必要的依赖。

2. 配置项目入口

在 main.ts 中配置 Vue 应用,导入 vkedit 的样式文件:

import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
import VueKonva from 'vue-konva'
import 'vkedit/dist/vkedit.css'

const app = createApp(App)
app.use(createPinia())
app.use(VueKonva)
app.mount('#app')
3. 基础使用示例

创建一个简单的编辑器组件,直接从 npm 包导入:

<template>
  <Vkedit :host="host" :show-toolbox="true" :show-property-panel="true" :show-toolbar="true" />
</template>

<script setup lang="ts">
import { createEditorHost, Vkedit } from 'vkedit'
import { RectPlugin, TextPlugin, QrcodePlugin, BarcodePlugin } from 'vkedit'

// 创建编辑器宿主
const host = createEditorHost({ exportPlugin: true, previewPlugin: true, importPlugin: true })

// 安装常用插件
host
  .installPlugin('rect-plugin', RectPlugin)
  .installPlugin('text-plugin', TextPlugin)
  .installPlugin('qr-plugin', QrcodePlugin)
  .installPlugin('barcode-plugin', BarcodePlugin)

// 设置画布尺寸为 A4 纸张
host.setStatus({ dpm: 8, width: 210 * 8, height: 297 * 8, zoom: 0.4 })
</script>
🌟 npm 包特性
  • 开箱即用:无需配置,安装即可使用
  • 按需加载:支持 Tree Shaking,只打包使用的功能
  • 完整类型:TypeScript 类型定义,智能提示友好
  • 持续更新:npm 包定期更新,修复问题并添加新功能

🎨 核心功能使用指南

1. 图形元素操作
添加元素
  • 点击左侧工具栏的元素图标
  • 在画布上拖拽绘制元素
  • 或使用快捷键:
    • R: 矩形工具
    • T: 文本工具
    • Q: 二维码工具
    • B: 条形码工具
编辑元素
  • 点击元素选中它
  • 使用控制点调整大小和旋转
  • 在右侧属性面板修改详细属性
  • 右键菜单提供快捷操作
对齐与分布
  • 选中多个元素
  • 使用顶部工具栏的对齐按钮
  • 或右键菜单选择对齐选项
2. 撤销与重做
  • Ctrl+Z: 撤销上一步操作
  • Ctrl+Y: 重做已撤销的操作
  • 或使用工具栏的撤销/重做按钮
3. 导入与导出
  • 导出: 点击工具栏的导出按钮,选择导出格式(JSON/PNG/PDF)
  • 导入: 点击工具栏的导入按钮,选择之前导出的 JSON 文件
4. 画布操作
  • 缩放: 使用鼠标滚轮或工具栏的缩放滑块
  • 平移: 按住空格键拖拽画布
  • 重置视图: 点击工具栏的'重置视图'按钮

📝 实战案例

案例 1:设计产品标签

应用场景:电商产品标签、物流标签、价格标签

解决方案:

// 创建标签编辑器
const host = createEditorHost({ exportPlugin: true, previewPlugin: true })

// 安装标签设计所需插件
host
  .installPlugin('rect-plugin', RectPlugin) // 边框、背景
  .installPlugin('text-plugin', TextPlugin) // 产品名称、规格
  .installPlugin('qr-plugin', QrcodePlugin) // 产品二维码
  .installPlugin('barcode-plugin', BarcodePlugin) // 商品条形码

// 设置标签尺寸(100mm x 60mm)
host.setStatus({ dpm: 8, width: 100 * 8, height: 60 * 8 })

效果:

  • 5 分钟内完成专业标签设计
  • 支持批量打印和数据导出
  • 模板可复用,降低 70% 设计成本
案例 2:制作二维码名片

应用场景:个人名片、公司名片、VIP 卡、联系方式分享

解决方案:

// 创建二维码设计器
const host = createEditorHost({ exportPlugin: true })

host
  .installPlugin('text-plugin', TextPlugin) // 姓名、职位、联系方式
  .installPlugin('qr-plugin', QrcodePlugin) // 个人信息二维码
  .installPlugin('rect-plugin', RectPlugin) // 名片边框

// 设置画布尺寸
host.setStatus({ dpm: 8, width: 90 * 8, height: 55 * 8 })

效果:

  • 扫码即可保存联系方式到手机
  • 支持高清导出,打印效果完美
  • 批量生成名片,适合企业应用
案例 3:设计发票/收据

应用场景:电子发票、收据、凭证、报表

解决方案:

import { TablePlugin, LinePlugin } from 'vkedit'

// 创建票据设计器
const host = createEditorHost({ exportPlugin: true, baseCanvasPropertyPanel: true })

host
  .installPlugin('text-plugin', TextPlugin) // 发票抬头、金额
  .installPlugin('table-plugin', TablePlugin) // 明细表格
  .installPlugin('line-plugin', LinePlugin) // 分隔线
  .installPlugin('rect-plugin', RectPlugin) // 边框

// 设置 A5 纸张尺寸
host.setStatus({ dpm: 8, width: 148 * 8, height: 210 * 8 })

效果:

  • 表格自动对齐,专业排版
  • 支持动态数据填充
  • 一键导出 PDF 格式

🛠️ 高级技巧

1. 自定义快捷键
// 监听键盘事件
host.on('stage:keydown', (event) => {
  if (event.ctrlKey && event.key === 's') {
    event.preventDefault()
    // 执行保存操作
    const json = host.toJSON()
    console.log('保存设计:', json)
  }
})
2. 监听编辑器事件
// 监听元素添加事件
host.on('element:added', (payload) => {
  console.log('新元素添加:', payload.element)
})

// 监听选择变化
host.on('selection:changed', (payload) => {
  console.log('选中元素数量:', payload.selectedIds.length)
})
3. 批量操作
import { BatchCommand, UpdatePropertyCommand } from 'vkedit'

// 批量修改多个元素的属性
const commands = [
  new UpdatePropertyCommand(element1, 'fill', '#ff0000'),
  new UpdatePropertyCommand(element2, 'fill', '#00ff00'),
  new UpdatePropertyCommand(element3, 'fill', '#0000ff')
]
const batchCommand = new BatchCommand(commands)
host.executeCommand(batchCommand)

❓ 常见问题

Q: 如何设置画布背景?

A: 点击画布空白处,在右侧属性面板中设置背景颜色或背景图片。

Q: 如何调整元素层级?

A: 右键点击元素,选择'置于顶层'、'置于底层'或调整层级。

Q: 如何导出高清图片?

A: 在导出图片时,设置较高的缩放比例(如 2x 或 3x)。

Q: 如何自定义插件?

A: 参考 README 中的'开发自定义插件'部分,实现 IEditorPlugin 接口。

🚀 技术优势

  1. 🔧 插件化架构
    • 按需加载功能模块,减少包体积
    • 支持自定义插件开发,满足个性化需求
    • 插件间松耦合,易于维护和扩展
  2. 🎯 精确控制
    • 像素级精确定位和操作
    • 支持毫米/英寸等多种单位
    • 智能对齐和吸附功能
  3. ⚡ 高性能
    • 基于 Konva.js 优化的渲染引擎
    • 支持百万级图形元素流畅操作
    • 内存优化,长时间运行不卡顿
  4. 📦 开箱即用
    • 内置 20+ 常用图形元素
    • 支持多种导出格式(JSON/PNG/PDF)
    • 完整的文档和示例代码

📊 性能对比

指标vkedit传统 Canvas 开发其他编辑器库
开发效率⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
功能丰富度⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
性能表现⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
可扩展性⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
学习成本⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

📚 更多资源

  • 完整 API 文档: 查看 README.md 中的 API 参考部分
  • 插件开发: 参考 README 中的'开发指南'部分
  • 示例项目: 查看项目中的 playground/ 目录
  • GitHub 仓库: https://github.com/pwg-code/vkedit

目录

  1. vkedit:基于 Vue3 的 Web 图形编辑器
  2. 📊 为什么选择 vkedit?
  3. 🌐 专为 Web 开发打造的 Vue3 npm 包
  4. vkedit 能帮您解决什么问题?
  5. 🎨 核心功能展示
  6. 🎯 快速开始
  7. 📦 通过 npm 安装
  8. 使用 pnpm(推荐)
  9. 或使用 npm
  10. 或使用 yarn
  11. 1. 安装依赖
  12. 2. 配置项目入口
  13. 3. 基础使用示例
  14. 🌟 npm 包特性
  15. 🎨 核心功能使用指南
  16. 1. 图形元素操作
  17. 添加元素
  18. 编辑元素
  19. 对齐与分布
  20. 2. 撤销与重做
  21. 3. 导入与导出
  22. 4. 画布操作
  23. 📝 实战案例
  24. 案例 1:设计产品标签
  25. 案例 2:制作二维码名片
  26. 案例 3:设计发票/收据
  27. 🛠️ 高级技巧
  28. 1. 自定义快捷键
  29. 2. 监听编辑器事件
  30. 3. 批量操作
  31. ❓ 常见问题
  32. Q: 如何设置画布背景?
  33. Q: 如何调整元素层级?
  34. Q: 如何导出高清图片?
  35. Q: 如何自定义插件?
  36. 🚀 技术优势
  37. 📊 性能对比
  38. 📚 更多资源

更多推荐文章

查看全部
  • 跃阶星辰 AI 开源 Step-3.5-Flash 本地部署指南
  • 无需公网 IP 安全访问本地 AI 服务的实践方案
  • Win10 升级后 Copilot 弹窗如何彻底关闭与禁用
  • VSCode GitHub Copilot 智能补全失效修复指南
  • Easy R1 训练环境搭建与配置实战
  • 自然语言处理在金融领域的应用与实战
  • 如何给小智 AI 绑定设备及解绑设备
  • CLAUDE.md 与 AGENTS.md 配置文件完全指南
  • RuoYi-Vue3 跨平台实践:基于 Electron 的桌面化迁移方案
  • macOS Tahoe 26.2 更新详解:12 项关键改进与体验优化
  • 企业微信接入 AI 小助手:基于回调接口的群聊机器人实战
  • LLaMA 衍生模型详解:官方演进与社区微调
  • Z-Image-Turbo_UI 本地 AI 绘图界面实测与使用心得
  • 双指针专题:快乐数与盛水最多的容器
  • Xinference v1.17.1 基于 GitHub Codespaces 的云端 WebUI 快速部署
  • 本地代码文件夹上传至 GitHub 详细步骤与命令集合
  • 文心一言 4.5 开源测评与本地部署指南
  • Flink 运行时组件深度解析:架构设计与实战
  • GLM-5 与 Qwen3.5 模型 API 接口调用实战指南
  • RAG 知识库调优方案深度解析:学术界检索前优化实践

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online