欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue和relation-graph庫打造高質(zhì)量的關(guān)系圖應(yīng)用程序

 更新時間:2023年09月22日 15:08:39   作者:靜Yu  
這篇文章主要介紹了Vue和relation-graph庫打造高質(zhì)量的關(guān)系圖應(yīng)用程序,在這篇文章中,我們深入探討了如何使用Vue和relation-graph高效打造關(guān)系圖,我們詳細(xì)介紹了數(shù)據(jù)準(zhǔn)備、關(guān)系映射、點擊事件等關(guān)鍵步驟,需要的朋友可以參考下

產(chǎn)品提需求啦,有一個需求就是實現(xiàn)一個功能:展現(xiàn)各個文件之間的調(diào)用關(guān)系,通過關(guān)系圖的形式進(jìn)行展示出來。之前考慮使用antv x6實現(xiàn)此功能,但是考慮到只是展示的功能,也不需要進(jìn)行交互,所以放棄使用antv x6,選擇了更加簡單的relation-graph插件。

先來看一個示例項目:

<template>
  <div>
    <div style="height: calc(100vh - 50px)">
      <RelationGraph
        ref="seeksRelationGraph"
        :options="graphOptions"
        :on-node-click="onNodeClick"
        :on-line-click="onLineClick"
      />
    </div>
  </div>
</template>
<script>
// relation-graph也支持在main.js文件中使用Vue.use(RelationGraph);這樣,你就不需要下面這一行代碼來引入了。
import RelationGraph from 'relation-graph'
export default {
  name: 'Demo',
  components: { RelationGraph },
  data() {
    return {
      graphOptions: {
        allowSwitchLineShape: true,
        allowSwitchJunctionPoint: true,
        defaultJunctionPoint: 'border'
        // 這里可以參考"Graph 圖譜"中的參數(shù)進(jìn)行設(shè)置
      }
    }
  },
  mounted() {
    this.showSeeksGraph()
  },
  methods: {
    showSeeksGraph() {
      const __graph_json_data = {
        rootId: 'a',
        nodes: [
          { id: 'a', text: 'A', borderColor: 'yellow' },
          { id: 'b', text: 'B', color: '#43a2f1', fontColor: 'yellow' },
          { id: 'c', text: 'C', nodeShape: 1, width: 80, height: 60 },
          { id: 'e', text: 'E', nodeShape: 0, width: 150, height: 150 }
        ],
        lines: [
          { from: 'a', to: 'b', text: '關(guān)系1', color: '#43a2f1' },
          { from: 'a', to: 'c', text: '關(guān)系2' },
          { from: 'a', to: 'e', text: '關(guān)系3' },
          { from: 'b', to: 'e', color: '#67C23A' }
        ]
      }
      // 以上數(shù)據(jù)中的node和link可以參考"Node節(jié)點"和"Link關(guān)系"中的參數(shù)進(jìn)行配置 
      this.$refs.seeksRelationGraph.setJsonData(__graph_json_data, (seeksRGGraph) => {
        // Called when the relation-graph is completed 
      })
    },
    onNodeClick(nodeObject, $event) {
      console.log('onNodeClick:', nodeObject)
    },
    onLineClick(lineObject, $event) {
      console.log('onLineClick:', lineObject)
    }
  }
}
</script>

運行效果:

這里有一個需要注意的點是,如果你的vue版本低于2.6.12時,圖譜會顯示異常,圖譜加載不完全甚至網(wǎng)頁中出現(xiàn)undefined。這時我們只需要將我們的版本升級一下就可以。我選擇的是安裝版本為2.6.14,升級完vue版本之后,記得要 npm install 重新安裝一下依賴,不然會出現(xiàn) vue-template-compiler 和vue版本不匹配也不能成功運行項目的問題。

npm install vue@2.6.14 

接下來進(jìn)入我們的正題,詳細(xì)介紹一下開發(fā)過程。

1.引入relation-graph

// 注意:relation-graph支持Vue2、Vue3、React, 但引入的包名稱都是【relation-graph】
npm install --save relation-graph

插件安裝完成之后,需要在我們開發(fā)的頁面中引入和注冊

import SeeksRelationGraph from 'relation-graph'
components: { SeeksRelationGraph },

2.初始化設(shè)置

然后就是一些初始化的設(shè)置

 <SeeksRelationGraph
        ref="seeksRelationGraph"
        :options="graphOptions"
        :on-node-click="nodeClick"
      />

其中options就是圖譜配置,一個對象,里面包含了具體的選項:如果你的需求是單純的展示關(guān)系圖,不需要進(jìn)行節(jié)點拖動操作的,可以將拖動禁掉

// 禁用拖拽
        disableDragNode: true,

其中l(wèi)ayouts布局設(shè)置,

  • layoutName :布局方式(tree樹狀布局/center中心布局/force自動布局)
  • layoutClassName : 當(dāng)使用這個布局時,會將此樣式添加到圖譜上,這里就是設(shè)置我們自定義的樣式
  • min_per_width :節(jié)點距離限制:節(jié)點之間橫向距離最小值
  • max_per_width :節(jié)點距離限制:節(jié)點之間橫向距離最大值
  • min_per_height :節(jié)點距離限制:節(jié)點之間縱向距離最小值
  • max_per_height :節(jié)點距離限制:節(jié)點之間縱向距離最大值節(jié)點之間的最小距離建議不要太小了,如果節(jié)點內(nèi)容比較多導(dǎo)致節(jié)點比較大,很容易導(dǎo)致節(jié)點之間重疊。
        layouts: [
          {
            label: '中心',
            layoutName: 'tree',
            layoutClassName: 'seeks-layout-center',
            defaultNodeShape: 0,
            from: 'left',
            // 通過這4個屬性來調(diào)整 tree-層級距離&節(jié)點距離
            min_per_width: '300',
            max_per_width: '300',
            min_per_height: '40',
            max_per_height: '60',
          },
        ],

除此之外我們還可以為我們的圖譜添加工具欄,對應(yīng)的圖譜配置分別為:

  • allowShowMiniToolBar :是否顯示工具欄
  • allowShowRefreshButton :是否在工具欄中顯示【刷新】按鈕
  • allowShowDownloadButton : 是否在工具欄中顯示【下載圖片】按鈕
  • allowSwitchLineShape :是否在工具欄中顯示切換線條形狀的按鈕
  • allowSwitchJunctionPoint :是否在工具欄中顯示切換連接點位置的按鈕

上面列舉的都是一些常用的配置和布局設(shè)置,除此之外官方還提供了很多其他的配置,詳細(xì)參考官方文檔

3、數(shù)據(jù)格式

通過設(shè)置一個json對象的nodes、lines、rootId來定義圖譜中要展示的節(jié)點、關(guān)系線、根節(jié)點

     const __graph_json_data = {
         rootId: 'a',
         nodes: [
           { id: 'a', text: 'A', borderColor: 'yellow' },
           { id: 'b', text: 'B', color: '#43a2f1', fontColor: 'yellow' },
           { id: 'c', text: 'C', nodeShape: 1, width: 80, height: 60 },
           { id: 'e', text: 'E', nodeShape: 0, width: 150, height: 150 }
         ],
         lines: [
           { from: 'a', to: 'b', text: '關(guān)系1', color: '#43a2f1' },
           { from: 'a', to: 'c', text: '關(guān)系2' },
           { from: 'a', to: 'e', text: '關(guān)系3' },
           { from: 'b', to: 'e', color: '#67C23A' }
         ]
       }

nodes定義的是節(jié)點數(shù)據(jù),lines定義的是關(guān)系線。

node節(jié)點

我們可以定義普通的節(jié)點,不需要進(jìn)行樣式的設(shè)置和定義,官方已經(jīng)為我們定義好了。

        {
            id: 'N16',
            color: '#4ea2f0',
            text: '123311312'
          },

不過我們可以設(shè)置節(jié)點id,節(jié)點名稱text,節(jié)點背景顏色color,這里與css有所不同,字體顏色是fontColor,節(jié)點形狀nodeShape(0圓形,1矩形),除了使用官方自定義的節(jié)點之外,我們還可以自定義節(jié)點,是通過html的形式進(jìn)行定義。

          {
            id: 'N15',
            text: this.A.path,
            color: '#4ea2f0',
            width: 100,
            height: 100,
            html: `
            <div class='TIME' @click='nodeClick'>
                  <div>名稱:${this.A.name}</div>
                  <div>掘金:${this.A.path}</div>
                  <div>QQ:${this.A.qq}</div>
              </div>
            `
          },

其中A是在data中定義的一個對象

     A: {
        name: '靜Yu',
        path: 'https://juejin.cn/user/2225839800062215',
        qq: '789789798',
      },

lines關(guān)系線

from和to對應(yīng)的都是節(jié)點的id,除此之外還可以在連接線上添加文字 text ,線條粗細(xì) lineWidth ,線條顏色 color 等等

        links: [
          { from: 'N1', to: 'N15' },
          { from: 'N15', to: 'N16' },
          { from: 'N15', to: 'N17' },
          { from: 'N15', to: 'N18' },
          { from: 'N15', to: 'N19' },
          { from: 'N18', to: 'N20' },
        ],

4.Events事件

官方為我們提供了五種觸發(fā)事件

  • on-node-click 點擊節(jié)點事件
  • on-node-expand 展開節(jié)點事件
  • on-node-collapse 收縮節(jié)點事件
  • on-line-click 點擊線條事件
  • on-image-download 當(dāng)點擊下載圖片按鈕時觸發(fā)

較為常用的就是點擊節(jié)點和線條觸發(fā)的事件

  <SeeksRelationGraph
        ref="seeksRelationGraph"
        :options="graphOptions"
        :on-node-click="nodeClick"
   />
   nodeClick(nodeObject) {
      console.log(nodeObject)
   }

參數(shù)會返回節(jié)點的各種信息供我們使用

5.小結(jié)

在這篇文章中,我們深入探討了如何使用Vue和relation-graph高效打造關(guān)系圖。我們詳細(xì)介紹了數(shù)據(jù)準(zhǔn)備、關(guān)系映射、點擊事件等關(guān)鍵步驟。通過這些技巧和解決方案,我們可以更好地利用Vue和relation-graph庫來創(chuàng)建直觀且易于維護(hù)的關(guān)系圖??傊?,Vue與relation-graph的結(jié)合為我們提供了一種強大且靈活的方式,以高效地構(gòu)建各種復(fù)雜的關(guān)系圖。通過掌握這些秘訣,我們可以更好地利用Vue和relation-graph庫,輕松打造出高質(zhì)量的關(guān)系圖應(yīng)用程序,從而更好地滿足各種需求。

到此這篇關(guān)于Vue和relation-graph庫打造高質(zhì)量的關(guān)系圖應(yīng)用程序的文章就介紹到這了,更多相關(guān)Vue和relation-graph庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue實現(xiàn)計算器計算效果

    Vue實現(xiàn)計算器計算效果

    這篇文章主要為大家詳細(xì)介紹了Vue實現(xiàn)計算器計算效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • vue路由權(quán)限和按鈕權(quán)限的實現(xiàn)示例

    vue路由權(quán)限和按鈕權(quán)限的實現(xiàn)示例

    本文主要介紹了vue路由權(quán)限和按鈕權(quán)限的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Vue多系統(tǒng)切換實現(xiàn)方案

    Vue多系統(tǒng)切換實現(xiàn)方案

    本篇文章給大家分享了關(guān)于Vue多系統(tǒng)切換實現(xiàn)的解決方案,對此有需要的朋友可以跟著參考學(xué)習(xí)下。
    2018-06-06
  • 使用vue實現(xiàn)玉兔迎春圖高亮示例詳解

    使用vue實現(xiàn)玉兔迎春圖高亮示例詳解

    這篇文章主要為大家介紹了使用vue實現(xiàn)玉兔迎春圖高亮示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • vue 怎么創(chuàng)建組件及組件使用方法

    vue 怎么創(chuàng)建組件及組件使用方法

    vue中的核心就是組件,組件 (Component) 是 Vue.js 最強大的功能之一。組件可以擴展 HTML 元素,封裝可重用的代碼,下面通過本文重點給大家介紹vue 創(chuàng)建組件及組件使用方法,感興趣的朋友一起看看吧
    2017-07-07
  • Vue學(xué)習(xí)筆記之計算屬性與偵聽器用法

    Vue學(xué)習(xí)筆記之計算屬性與偵聽器用法

    這篇文章主要介紹了Vue學(xué)習(xí)筆記之計算屬性與偵聽器用法,結(jié)合實例形式詳細(xì)分析了vue.js計算屬性與偵聽器基本功能、原理、使用方法及操作注意事項,需要的朋友可以參考下
    2019-12-12
  • vue強制刷新組件的三種方法

    vue強制刷新組件的三種方法

    在Vue中,強制刷新組件通常涉及到以下幾種方法,本文給大家列出了常見的三種vue強制刷新組件的方法,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • Vue3使用KeepAlive不生效的解決方法

    Vue3使用KeepAlive不生效的解決方法

    使用arco-design-pro的vue3后臺框架, 切換路由時, 組件包裹的keepAlive不生效, 切換tab后組件狀態(tài)會刷新, 并重新獲取接口, 導(dǎo)致頁面切換時閃爍,所以本文給大家介紹了Vue3使用KeepAlive不生效的解決方法,需要的朋友可以參考下
    2024-11-11
  • vue-router的鉤子函數(shù)用法實例分析

    vue-router的鉤子函數(shù)用法實例分析

    這篇文章主要介紹了vue-router的鉤子函數(shù)用法,結(jié)合實例形式分析了vue路由鉤子分類及vue-router鉤子函數(shù)相關(guān)使用技巧,需要的朋友可以參考下
    2019-10-10
  • 關(guān)于Vue3中defineProps用法圖文詳解

    關(guān)于Vue3中defineProps用法圖文詳解

    在vue3中組件傳參有很多種方式,和v2大差不差,但是有的地方還是有很多的區(qū)別,下面這篇文章主要給大家介紹了關(guān)于Vue3中defineProps用法的相關(guān)資料,需要的朋友可以參考下
    2022-11-11

最新評論