// 注意在后面提示中,上移下移,按空格选中 Element
git clone + 项目地址
cd nuxtJs
git checkout feature/1.0.0
npm install
npm run dev
head: { title: '乐吾乐 Topology - 开源免费绘图工具', meta: [ { charset: 'utf-8' }, { name: 'viewport', content: 'width=device-width, initial-scale=1' }, { hid: 'description', name: 'description', content: '一个基于typescript + canvas的好用开源绘图工具和绘图引擎。易集成到自己的前端项目、还可以方便自定义图形库,支持微服务架构图、流程图、时序图、活动图、类图等' } ], link: [ { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }, { rel: 'stylesheet', href: '//at.alicdn.com/t/font_1113798_0532l8oa6jqp.css' }, { rel: 'stylesheet', href: '//at.alicdn.com/t/font_1331132_5lvbai88wkb.css' } ] },
yarn add node-sass sass-loader -D
<style> .page { width: 100%; height: 100%; } </style>
import '~/assets/css/base.scss'
// 先导入库 import { Topology, Options, registerNode } from '@topology/core'; import { register as registerFlow } from '@topology/flow-diagram'; import { register as registerActivity } from '@topology/activity-diagram'; import { register as registerClass } from '@topology/class-diagram'; import { register as registerSequence } from '@topology/sequence-diagram'; import { register as registerChart } from '@topology/chart-diagram'; // 注册图形库 canvasRegister() { registerFlow(); registerActivity(); registerClass(); registerSequence(); registerChart(); // ... }
data() { return { // 左侧工具栏 tools: Tools, // 图形库 canvas: {}, // 图形库选项:https://www.yuque.com/alsmile/topology/canvas#hOupV canvasOptions: { rotateCursor: '/img/rotate.cur' }, // 右侧属性栏数据 props: { node: null, line: null, multi: false } } }
created() { canvasRegister() }
mounted() { this.canvasOptions.on = this.onMessage this.canvas = new Topology('topology-canvas', this.canvasOptions) }
<a v-for="(btn, i) in item.children" :key="i" :title="btn.name" :draggable="btn.data" @dragstart="onDrag($event, btn)" > <i :class="`iconfont ${btn.icon}`"></i> </a>
methods: { onDrag(event, node) { event.dataTransfer.setData('Text', JSON.stringify(node.data)) } }
<template> <div> <!-- 选中为空 --> <div v-if="!props.node && !props.line && !props.multi"> <div>欢迎使用le5le-topology!</div> <div> <a href="https://github.com/le5le-com/topology" target="_blank">喜欢,点击这里打个star吧</a> <a href="https://www.yuque.com/alsmile/topology" target="_blank">使用教程</a> <br /> <a href="http://topology.le5le.com/assets/img/topology_wechat.jpg?t=1" target="_blank" >微信交流群(大群)</a> <br /> <a href="http://topology.le5le.com/assets/img/topology_wechat2.jpg" target="_blank">微信交流群2</a> <br /> <a href="https://www.yuque.com/alsmile/topology/faq#EVbCgt" target="_blank">联系我们</a> </div> <div>[Todo] 未来规划</div> <ul> <li>Github issues</li> <li>React demo</li> <li>Vue3 demo</li> <li>系列教程</li> </ul> <div> <div>小提示</div> <ul> <li>方向键:控制节点移动5个像素</li> <li>Ctrl + 方向键:控制节点移动1个像素</li> <li>Ctrl + 鼠标移动:移动整个画布</li> <li>Ctrl + 鼠标滚轮:缩放</li> <li>添加或选中节点,右侧属性支持上传各种图片哦</li> </ul> </div> </div> <!-- 选中节点 --> <div v-if="props.node"> <div>位置和大小</div> <div> <div class="flex grid"> <div>X(px)</div> <div>Y(px)</div> </div> <div class="flex grid"> <div> <el-input-number v-model="props.node.rect.x" controls-position="right" @change="onChange" ></el-input-number> </div> <div> <el-input-number v-model="props.node.rect.y" controls-position="right" @change="onChange" ></el-input-number> </div> </div> </div> <div> <div class="flex grid"> <div>宽(px)</div> <div>高(px)</div> </div> <div class="flex grid"> <div> <el-input-number v-model="props.node.rect.width" controls-position="right" @change="onChange" ></el-input-number> </div> <div> <el-input-number v-model="props.node.rect.height" controls-position="right" @change="onChange" ></el-input-number> </div> </div> </div> </div> </div> </template> <script > export default { data() { return {} }, props: { props: { type: Object, require: true } }, methods: { onChange(value) { this.$emit('change', this.props.node) } } } </script>
<div> <CanvasProps :props.sync="props" @change="onUpdateProps"></CanvasProps> </div>
onUpdateProps(node) { // 如果是画布已选中的节点,无需传参数 this.canvas.updateProps() // 如果画布没有选中节点,需要传相关参数,参考:https://www.yuque.com/alsmile/topology/canvas#v4OFi this.canvas.updateProps(true, [node]) }
git add . git commit -m '添加你的注释' git push
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70003733/viewspace-2896946/ ,如需转载,请注明出处,否则将追究法律责任。