vkedit

A visual canvas designer component built on Vue 3 and Konva.js with a plugin-based architecture, for label, QR code, barcode, receipt, business card, and certificate template design and print layout. Supports rectangle, text, line, table, QR code, barcode
1,843 3
Install
npm install vkedit
Latest Version:4.0.2
Vue:3
License:MIT
Last Updated:Jul 29, 2026
Links: GitHub  ·  npm
Maintainer: pwg-code

vkedit

NPM Version License Node.js 在线示例

基于 Vue 3 与 Konva.js 的可视化画布设计器组件,采用插件化架构,适用于标签、二维码、条码、票据、名片、证书等模板设计与打印排版场景。

English | 在线示例 | 文档


项目预览


特性

  • 插件化架构 - 核心功能与图形元素均以插件形式注册,按需启用;GraphicPlugin<T> 抽象基类简化自定义插件开发
  • 5 种图形元素 - 矩形、文本、线条、二维码、条形码
  • 撤销/重做 - 基于命令模式,所有修改操作可逆
  • 导入/导出 - JSON 序列化、PNG/JPG 图片、PDF 文档
  • 对齐与分布 - 左/右/上/下/居中对齐、水平/垂直均分
  • 标尺与缩放 - 毫米级精度标尺、可配置 DPM(每毫米点数)
  • 事件驱动 - 类型安全的事件系统,插件间松耦合通信
  • TypeScript - 完整类型定义,泛型推断插件与元素类型
  • 设计令牌系统 - 两层架构(Palette + Semantic),完整 CSS 变量覆盖 spacing、radius、font、shadow、elevation、z-index
  • 主题系统 - 默认暗色主题,亮色主题通过 data-vkedit-theme 切换;Teleport 浮层主题继承;resolveVkeditTheme() 工具函数
  • VkButton 多变体 - primary、destructive、outline、secondary、ghost、link

安装

pnpm add vkedit vue konva vue-konva

vkedit 将 vue、konva、vue-konva 作为 peerDependencies,需由宿主项目提供。

Peer Dependency 版本
vue ^3.5.18
konva ^10.0.2
vue-konva ^3.2.6

Node.js 要求:^20.19.0 || >=22.12.0


快速上手

1. 配置入口文件

在 main.ts 中注册 VueKonva 并引入样式:

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

const app = createApp(App)
app.use(VueKonva)
app.mount('#app')

2. 使用编辑器组件

<template>
  <Vkedit :host="host" />
</template>

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

const host = createEditorHost()

// 安装图形插件
host
  .installPlugin('rect-plugin', RectPlugin)
  .installPlugin('text-plugin', TextPlugin)
  .installPlugin('qr-plugin', QrcodePlugin)
  .installPlugin('barcode-plugin', BarcodePlugin)
  .installPlugin('line-plugin', LinePlugin)

// 设置画布尺寸(A4 纸张,DPM = 8)
host.setStatus({
  dpm: 8,
  width: 210 * 8,
  height: 297 * 8,
  zoom: 0.4,
})
</script>

完整教程、API 文档与在线示例请访问 docs.vkedit.org。


主题与样式

vkedit 内置完整的设计令牌(Design Token)体系。暗色主题为默认值(data-vkedit-theme="dark"),引入 CSS 后即刻生效:

import 'vkedit/dist/vkedit.css'

覆盖品牌色(挂载在编辑器根或包裹容器上):

.vkedit-editor {
  --vkedit-color-primary: oklch(70% 0.14 185);
  --vkedit-color-primary-hover: oklch(78% 0.12 185);
  --vkedit-color-on-primary: oklch(14% 0 0);
}

令牌体系分两层:

  • Palette(:root)— 颜色原始阶梯(neutral、teal、danger 等)以及非颜色尺度(spacing、radius、font、shadow、elevation、z-index)
  • Semantic(主题选择器)— 引用 palette 的语义变量,分别定义 data-vkedit-theme="dark"(默认)与 data-vkedit-theme="light" 两套映射

完整变量列表与破坏性变更说明见 MIGRATION.md。


链接


License

MIT


社区


联系方式

提供技术支持、功能定制、项目合作。

Related Packages

print-designer-vue

Vue 3 print-template designer whose output is a pdfme template.

1,882
vue-konva-to-svg

Extend Konva's functionality to export stages as SVG. Enhance the quality of exp...

3,508 0
vue-grabbing-box

vue-grabbing-box is a container component that allows you to grab to change view...

3,220 8
pinia-plugin-history

Create a history (undo/redo) in your pinia 🍍 stores!

6,050 18
@worm-vue3-print/canvas

Vue 3 可视化打印模板设计器画布(开源核心,无 Element Plus、无宿主业务依赖)

2,036

Version History

Version Released Vue License
4.0.2 ^3.5.18 MIT
4.0.1 ^3.5.18 MIT
4.0.0 ^3.5.18 MIT
3.2.7 ^3.5.18 MIT
3.2.6 ^3.5.18 MIT