從零開始打造流程圖、拓撲圖專案【Nuxt.js + Element + Vuex】
一 、通過雲開發平臺快速建立初始化應用
1.建立相關應用模版請參考連結: 基於 vue.js 的 SSR 技術—Nuxt.js
// 注意在後面提示中,上移下移,按空格選中 Element
2.完成建立後就可以在github中檢視到新增的Nuxt倉庫
二 、 本地編寫 流程圖、拓撲圖專案
1.將應用模版克隆到本地
git clone + 專案地址
cd nuxtJs
git checkout feature/1.0.0
npm install
npm run dev
2.專案框架
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' } ] },
3.新增SCSS支援
yarn add node-sass sass-loader -D
<style> .page { width: 100%; height: 100%; } </style>
4.新增一個全域性公用css
import '~/assets/css/base.scss'
5.網頁佈局
6.建立畫布
// 先匯入庫 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(); // ... }
7.載入圖形庫
data() { return { // 左側工具欄 tools: Tools, // 圖形庫 canvas: {}, // 圖形庫選項:{ 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)) } }
8.右側屬性欄
<template> <div> <!-- 選中為空 --> <div v-if="!props.node && !props.line && !props.multi"> <div>歡迎使用le5le-topology!</div> <div> <a href="喜歡,點選這裡打個star吧</a> <a href="https://ology" target="_blank">使用教程</a> <br /> <a href="微信交流群(大群)</a> <br /> <a href="微信交流群2</a> <br /> <a href="https://ology/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://ology/canvas#v4OFi this.canvas.updateProps(true, [node]) }
三 、 雲端一鍵部署上線應用
1.上傳程式碼
git add . git commit -m '新增你的註釋' git push
2.在日常環境部署
3.配置自定義域名線上上環境上線
4.專案預覽效果
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70003733/viewspace-2896946/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【前端vue進階實戰】:從零打造一個流程圖、拓撲圖專案【Nuxt.js前端Vue流程圖UXJS
- 從零開始-基礎流程圖編輯庫流程圖
- 圖論——拓撲排序圖論排序
- 從零開始打造一個iOS圖片載入框架(一)iOS框架
- 從零開始打造一個iOS圖片載入框架(三)iOS框架
- 從零開始打造一個iOS圖片載入框架(四)iOS框架
- 從零開始打造一個iOS圖片載入框架(二)iOS框架
- Reward (圖論+拓撲排序)圖論排序
- 網路拓撲圖:網路拓撲圖介紹及線上製作
- 從零開始打造專屬釘釘機器人機器人
- zabbix二次開發整合拓撲圖功能
- 從零開始React專案架構(六)React架構
- 從零開始React專案架構(五)React架構
- 從零開始React專案架構(三)React架構
- 從零開始React專案架構(一)React架構
- 從零開始React專案架構(二)React架構
- 從零開始React專案架構(四)React架構
- 從零開始的爬蟲專案(一)爬蟲
- 從零開始搭建一個vue專案Vue
- 演算法-圖論-拓撲排序演算法圖論排序
- 團隊拓撲快速參考圖
- 有向圖的拓撲排序——DFS排序
- vue 實現動態拓撲圖Vue
- 從入口域名開始探索全鏈路自動化拓撲
- 從零開始構建一個webpack專案Web
- 【Java EE】從零開始寫專案【總結】Java
- 原生專案如何從零開始整合 React NativeReact Native
- 圖解拓撲排序+程式碼實現圖解排序
- 從零開始為 PicGo 開發一個新圖床PicGo圖床
- 從零開始學Python視覺化(五): 餅圖及環形圖Python視覺化
- 從零開始:Django專案的建立與配置指南Django
- 從零開始使用 webpack5 搭建 react 專案WebReact
- 圖的拓撲排序詳解與實現排序
- 拓撲排序 (BFS )DAG (有向無環圖)排序
- 從零開始用 electron 手擼一個截圖工具
- 【教程】如何從零開始構建深度學習專案?深度學習
- 從零開始生成一個ios react-native專案iOSReact
- 從零開始向原生專案整合Flutter以及通訊Flutter