react-diagram 序列化Json解讀案例分析
本文目標 本文檔的目標在于解釋react-diagram
框架模型序列化的Json,由于缺乏文檔,我這邊只能通過不斷嘗試和調試來進行測試。
序列化案例1:空畫布
{ "id": "27", "offsetX": 0, "offsetY": 0, "zoom": 100, "gridSize": 0, "layers": [ { "id": "28", "type": "diagram-links", "isSvg": true, "transformed": true, "models": { } }, { "id": "30", "type": "diagram-nodes", "isSvg": false, "transformed": true, "models": { } } ] }
圖形化展示
序列化案例2:單一out節(jié)點
{ "id": "27", "offsetX": 0, "offsetY": 0, "zoom": 100, "gridSize": 0, "layers": [ { "id": "28", "type": "diagram-links", "isSvg": true, "transformed": true, "models": { } }, { "id": "30", "type": "diagram-nodes", "isSvg": false, "transformed": true, "models": { "64": { "id": "64", "type": "default", "x": 187.0056915283203, "y": 219.91477584838867, "ports": [ { "id": "65", "type": "default", "x": null, "y": null, "name": "Out", "alignment": "right", "parentNode": "64", "links": [ ], "in": false, "label": "Out" } ], "name": "Node 1", "color": "rgb(0,192,255)", "portsInOrder": [ ], "portsOutOrder": [ "65" ] } } } ] }
圖形化展示
序列化案例3:一個in節(jié)點,一個out節(jié)點
{ "id": "27", "offsetX": 0, "offsetY": 0, "zoom": 100, "gridSize": 0, "layers": [ { "id": "28", "type": "diagram-links", "isSvg": true, "transformed": true, "models": { } }, { "id": "30", "type": "diagram-nodes", "isSvg": false, "transformed": true, "models": { "64": { "id": "64", "type": "default", "x": 187.0056915283203, "y": 219.91477584838867, "ports": [ { "id": "65", "type": "default", "x": 230.6392059326172, "y": 248.57954025268555, "name": "Out", "alignment": "right", "parentNode": "64", "links": [ ], "in": false, "label": "Out" } ], "name": "Node 1", "color": "rgb(0,192,255)", "portsInOrder": [ ], "portsOutOrder": [ "65" ] }, "69": { "id": "69", "type": "default", "x": 420.0056915283203, "y": 244.91477584838867, "ports": [ { "id": "70", "type": "default", "x": null, "y": null, "name": "In", "alignment": "left", "parentNode": "69", "links": [ ], "in": true, "label": "In" } ], "name": "Node 2", "color": "rgb(192,255,0)", "portsInOrder": [ "70" ], "portsOutOrder": [ ] } } } ] }
圖形化展示
序列化案例4:in節(jié)點和out節(jié)點以及連線
{ "id": "27", "offsetX": 0, "offsetY": 0, "zoom": 100, "gridSize": 0, "layers": [ { "id": "28", "type": "diagram-links", "isSvg": true, "transformed": true, "models": { "36": { "id": "36", "type": "default", "source": "32", "sourcePort": "33", "target": "34", "targetPort": "35", "points": [ { "id": "37", "type": "point", "x": 0, "y": 0 }, { "id": "38", "type": "point", "x": 0, "y": 0 } ], "labels": [ ], "width": 2, "color": "grey", "curvyness": 50, "selectedColor": "rgb(0,192,255)" } } }, { "id": "30", "type": "diagram-nodes", "isSvg": false, "transformed": true, "models": { "32": { "id": "32", "type": "default", "x": 100, "y": 100, "ports": [ { "id": "33", "type": "default", "x": 100, "y": 100, "name": "Out", "alignment": "right", "parentNode": "32", "links": [ "36" ], "in": false, "label": "Out" } ], "name": "Node 1", "color": "rgb(0,192,255)", "portsInOrder": [ ], "portsOutOrder": [ "33" ] }, "34": { "id": "34", "type": "default", "x": 400, "y": 100, "ports": [ { "id": "35", "type": "default", "x": 400, "y": 100, "name": "In", "alignment": "left", "parentNode": "34", "links": [ "36" ], "in": true, "label": "In" } ], "name": "Node 2", "color": "rgb(192,255,0)", "portsInOrder": [ "35" ], "portsOutOrder": [ ] } } } ] }
圖形化展示
推測與解析
1. 根目錄
首先根目錄有5個參數:
id
:這個參數總是27,意義不明,不需要過多關注。
offsetX
:這應該指的是觀測中心距離X軸的距離。
offsetY
:指的是觀測中心距離Y軸的距離。
zoom
:指放大的程度。
gridSize
:指的是圖像中網格的大小。
2.0 Layer[0]
- 這個
Layer
是一個數組,內部有兩個變量,觀察上面的變化以及type
的描述,可以認為一個是連線
,一個是節(jié)點
。 - 我們首先關注
連線
:
id
:未知。
type
:指類型。
isSvg
:是否是SVG類型,作用不明。
transformed
:應該指的是是否能移動。
model
:下面單獨解釋
2.1. models(diagram-links)
id
:未知。type
:指類型。
source
:指的是連線的源節(jié)點ID。
sourcePort
:指的是連線的源端口ID。
target
:指的是連線的目標節(jié)點ID。
targetPort
:指的是連線目標端口ID。
width
:指寬度。
color
:指顏色。
curvyness
:指曲度。
selectedColor
:選擇后的顏色。
2.1.1. Point
id
:指ID。
type
:指類型。下略。
2.2. Layer[1]
id
:略。
type
:指類型。
isSvg
:?為什么這里是false
transformed
:略。
2.2.1 models(diagram-nodes)
前四個
:略。
ports
:一會單獨講。
name
:顯示名字。
color
:顯示顏色
portsInOrder
:代表的是
In
節(jié)點,對應上面target
的編號。
portsOutOrder
:代表的是
Out
節(jié)點,對應上面source
的編號。
2.2.2. ports
前四個
:略。
name
:出節(jié)點
alignment
:右方向。
parentNode
:代表附著的節(jié)點。
links
:代表連在上面的線條。
in
:有沒有輸入。
label
:標簽。
3. 更多案例簡述
3.1. 增加輸出接口
只需要增加輸出的port即可,記得在out位置加入它的ID。
3.2. 增加輸入接口
以上就是react-diagram 序列化Json解讀案例分析的詳細內容,更多關于react-diagram 序列化Json的資料請關注腳本之家其它相關文章!
相關文章
React?Server?Component混合式渲染問題詳解
React?官方對?Server?Comopnent?是這樣介紹的:?zero-bundle-size?React?Server?Components,這篇文章主要介紹了React?Server?Component:?混合式渲染,需要的朋友可以參考下2022-12-12如何應用?SOLID?原則在?React?中整理代碼之開閉原則
React?不是面向對象,但這些原則背后的主要思想可能是有幫助的,在本文中,我將嘗試演示如何應用這些原則來編寫更好的代碼,對React?SOLID原則開閉原則相關知識感興趣的朋友一起看看吧2022-07-07ReactNative點擊事件.bind(this)操作分析
這篇文章主要為大家介紹了ReactNative點擊事件.bind(this)操作分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11TS裝飾器bindThis優(yōu)雅實現React類組件中this綁定
這篇文章主要為大家介紹了TS裝飾器bindThis優(yōu)雅實現React類組件中this綁定,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11