banner
innei

innei

写代码是因为爱,写到世界充满爱!
github
telegram
twitter

模块化的请求数据统一管理的构想

在一个复杂的业务场景下,一个页面中被拆分多个组件,或者是多个组件共同组成一个独立的模块而不受到其他模块的影响。如下图所示。

{"type":"excalidraw","version":2,"source":"http://localhost:2323","elements":[{"type":"rectangle","version":64,"versionNonce":1710817260,"isDeleted":false,"id":"GK-n75GVEWlHVs8et0k8X","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2041.83203125,"y":2500.59765625,"strokeColor":"#1971c2","backgroundColor":"transparent","width":745.1640625,"height":439.69140625,"seed":1482611386,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108700,"link":null,"locked":false},{"type":"rectangle","version":88,"versionNonce":1376273620,"isDeleted":false,"id":"2Ftl8RWp0x89dSn-fTDHb","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2056.25,"y":2513.57421875,"strokeColor":"#1971c2","backgroundColor":"transparent","width":189.1015625,"height":29.765625000000007,"seed":571550758,"groupIds":[],"frameId":null,"roundness":{"type":3},"boundElements":[],"updated":1706803108700,"link":null,"locked":false},{"type":"rectangle","version":58,"versionNonce":1697260140,"isDeleted":false,"id":"hG9or2PXyl7E6OC-x45xW","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2058.6484375,"y":2550.87890625,"strokeColor":"#1971c2","backgroundColor":"transparent","width":238.86328125,"height":280.91796875,"seed":930699706,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108700,"link":null,"locked":false},{"type":"rectangle","version":74,"versionNonce":1943046740,"isDeleted":false,"id":"lPo8wD4ucN9tbCZT4YCY-","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2067.21875,"y":2564.28515625,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":220.75390625,"height":45.94140625,"seed":415706726,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"ZDhpEwlrH5AUtXRIg92Ik","type":"arrow"},{"id":"RtvlzwWGSKKnUn9O-K37j","type":"arrow"}],"updated":1706803108700,"link":null,"locked":false},{"type":"rectangle","version":131,"versionNonce":1460860140,"isDeleted":false,"id":"QZD0BD4kTfZiKvkUBiu92","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2070.814453125,"y":2623.904296875,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":220.75390625,"height":45.94140625,"seed":1492938042,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108700,"link":null,"locked":false},{"type":"rectangle","version":176,"versionNonce":259268564,"isDeleted":false,"id":"vHRngh0rrfBh0T4ixrtGc","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2071.822265625,"y":2690.029296875,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":220.75390625,"height":45.94140625,"seed":1884407654,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108700,"link":null,"locked":false},{"type":"rectangle","version":200,"versionNonce":1765635948,"isDeleted":false,"id":"OuoDOOi03U51ZjTrf2LFM","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2070.572265625,"y":2754.748046875,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":220.75390625,"height":45.94140625,"seed":1505724006,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"TZHuoQcIx4AVsFSC4W873"},{"id":"fN3Xr0Xg8o5d5SKePUMi8","type":"arrow"}],"updated":1706803108700,"link":null,"locked":false},{"type":"text","version":8,"versionNonce":1829307732,"isDeleted":false,"id":"TZHuoQcIx4AVsFSC4W873","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2152.997245788574,"y":2767.71875,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":55.90394592285156,"height":20,"seed":234102650,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108700,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset4","textAlign":"center","verticalAlign":"middle","containerId":"OuoDOOi03U51ZjTrf2LFM","originalText":"Asset4","lineHeight":1.25,"baseline":14},{"type":"rectangle","version":100,"versionNonce":133409260,"isDeleted":false,"id":"QizMpm6TYfwEd2YVnKLkk","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2328.125,"y":2523.00390625,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":311.22265625,"height":404.6953125,"seed":1283715942,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"n4x98gzrAgK-AxpVR0k-Z","type":"arrow"}],"updated":1706803108700,"link":null,"locked":false},{"type":"text","version":59,"versionNonce":1642412756,"isDeleted":false,"id":"wYu4LBPAKlzaH6P-aI6q7","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2148.6015625,"y":2575.921875,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":49.99995422363281,"height":20,"seed":1543458618,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108700,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset1","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Asset1","lineHeight":1.25,"baseline":14},{"type":"text","version":11,"versionNonce":104828012,"isDeleted":false,"id":"B0H9SU3nlbooyNdiqQZ8v","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2147,"y":2644,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":57.05595397949219,"height":20,"seed":1538414330,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"sCDVxOChArbTvFmTdCeIh","type":"arrow"}],"updated":1706803108700,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset2","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Asset2","lineHeight":1.25,"baseline":14},{"type":"text","version":10,"versionNonce":681492564,"isDeleted":false,"id":"4NH7KVhfIpdFqEUVXze30","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2149,"y":2709,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":56.55995178222656,"height":20,"seed":1947529210,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108701,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset3","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Asset3","lineHeight":1.25,"baseline":14},{"type":"text","version":54,"versionNonce":1173036780,"isDeleted":false,"id":"dvHatSpIlps--4bBXbVsx","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2417.03125,"y":2548.9296875,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":106.65592956542969,"height":20,"seed":741250022,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108701,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset1 Detail","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Asset1 Detail","lineHeight":1.25,"baseline":14},{"type":"rectangle","version":49,"versionNonce":957060564,"isDeleted":false,"id":"kdjnQsec9D5nbnIMZkbB5","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2069.44921875,"y":2521.12109375,"strokeColor":"#1e1e1e","backgroundColor":"#a5d8ff","width":62.1796875,"height":14.94140625,"seed":944487162,"groupIds":[],"frameId":null,"roundness":{"type":3},"boundElements":[],"updated":1706803108701,"link":null,"locked":false},{"type":"rectangle","version":45,"versionNonce":1602249068,"isDeleted":false,"id":"wvRoG1UfHUWTBg2OCa1lE","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2660.8125,"y":2525.48828125,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":112.57421875,"height":203.3203125,"seed":909423994,"groupIds":[],"frameId":null,"roundness":{"type":3},"boundElements":[],"updated":1706803108701,"link":null,"locked":false},{"type":"rectangle","version":99,"versionNonce":541178708,"isDeleted":false,"id":"7X5LNnpol1JluuaV7uP1F","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2674.0390625,"y":2601.10546875,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":81.91015625,"height":30,"seed":1748841530,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"YB3ecIRABZs6ZQLZch3_K"}],"updated":1706803108701,"link":null,"locked":false},{"type":"text","version":70,"versionNonce":1246319596,"isDeleted":false,"id":"YB3ecIRABZs6ZQLZch3_K","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2682.466163635254,"y":2606.10546875,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":65.05595397949219,"height":20,"seed":777509050,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108701,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset 2","textAlign":"center","verticalAlign":"middle","containerId":"7X5LNnpol1JluuaV7uP1F","originalText":"Asset 2","lineHeight":1.25,"baseline":14},{"type":"rectangle","version":114,"versionNonce":1486303444,"isDeleted":false,"id":"X3GqCIiWPuY7iU7C02zqO","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2675.689453125,"y":2658.67578125,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":81.91015625,"height":30,"seed":1946014138,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"hqK4DM4haEED5tqVy7Y69"},{"id":"fN3Xr0Xg8o5d5SKePUMi8","type":"arrow"}],"updated":1706803108701,"link":null,"locked":false},{"type":"text","version":84,"versionNonce":72349292,"isDeleted":false,"id":"hqK4DM4haEED5tqVy7Y69","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2684.692558288574,"y":2663.67578125,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":63.90394592285156,"height":20,"seed":512723578,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108701,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset 4","textAlign":"center","verticalAlign":"middle","containerId":"X3GqCIiWPuY7iU7C02zqO","originalText":"Asset 4","lineHeight":1.25,"baseline":14},{"type":"text","version":94,"versionNonce":564262484,"isDeleted":false,"id":"MQGXGRKE4fIK7pcUv2G8s","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2671.31640625,"y":2548.49609375,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":88.71621704101562,"height":15.406250000000004,"seed":1184364006,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108701,"link":null,"locked":false,"fontSize":12.325000000000003,"fontFamily":1,"text":"Related asset","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Related asset","lineHeight":1.25,"baseline":11},{"type":"rectangle","version":66,"versionNonce":979257580,"isDeleted":false,"id":"BTWLv3DEaMsrW_DVWaInM","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2353.65625,"y":2594.75390625,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":246.16015625,"height":110.27734375,"seed":1127375418,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"RtvlzwWGSKKnUn9O-K37j","type":"arrow"}],"updated":1706803108701,"link":null,"locked":false},{"type":"line","version":53,"versionNonce":1480068052,"isDeleted":false,"id":"cQX5pznZP-lc-7FJfKf6N","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2357.22265625,"y":2740.70703125,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":527008826,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108701,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"type":"line","version":68,"versionNonce":1878936428,"isDeleted":false,"id":"5WvLajTNXm0YKkplRW6oP","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2358.169921875,"y":2763.43704118742,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":1790333178,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108701,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"type":"line","version":69,"versionNonce":1315926356,"isDeleted":false,"id":"Kn6cPJNmvb7ZyY9eguXN6","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2358.447265625,"y":2790.44875993742,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":7871738,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108701,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"type":"line","version":84,"versionNonce":662306284,"isDeleted":false,"id":"XRbGMuY1fGpPfYa2XIb5I","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2361.923828125,"y":2819.27688493742,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":665762234,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108701,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"type":"arrow","version":134,"versionNonce":597567188,"isDeleted":false,"id":"ZDhpEwlrH5AUtXRIg92Ik","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":1946.42578125,"y":2420.640625,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":108.22265625,"height":131.546875,"seed":1135300922,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108701,"link":null,"locked":false,"startBinding":{"elementId":"prloiiGuYMACQ4gmNuWWJ","focus":0.5324848235368168,"gap":3.44921875},"endBinding":{"elementId":"lPo8wD4ucN9tbCZT4YCY-","focus":-0.7278819525299076,"gap":12.5703125},"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"triangle","points":[[0,0],[108.22265625,131.546875]]},{"type":"rectangle","version":66,"versionNonce":165372012,"isDeleted":false,"id":"prloiiGuYMACQ4gmNuWWJ","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":1903.53125,"y":2368.62109375,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":131.40234375,"height":48.5703125,"seed":162462714,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"ZDhpEwlrH5AUtXRIg92Ik","type":"arrow"}],"updated":1706803108701,"link":null,"locked":false},{"type":"text","version":15,"versionNonce":475671636,"isDeleted":false,"id":"JU8Py956wVzj0n5kgeRYp","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":1935,"y":2380,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":68.63995361328125,"height":20,"seed":1497332218,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108701,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"module A","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"module A","lineHeight":1.25,"baseline":14},{"type":"rectangle","version":124,"versionNonce":250376940,"isDeleted":false,"id":"tKL3L2aC9Y8cxs8jSWYSN","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2378.693359375,"y":2364.6015625,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":131.40234375,"height":48.5703125,"seed":588203514,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"Q2NWa76kgx3U_DyJ6wa_i"},{"id":"n4x98gzrAgK-AxpVR0k-Z","type":"arrow"}],"updated":1706803108701,"link":null,"locked":false},{"type":"text","version":69,"versionNonce":2054783444,"isDeleted":false,"id":"Q2NWa76kgx3U_DyJ6wa_i","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2409.5065536499023,"y":2378.88671875,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":69.77595520019531,"height":20,"seed":1908654458,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108701,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"module B","textAlign":"center","verticalAlign":"middle","containerId":"tKL3L2aC9Y8cxs8jSWYSN","originalText":"module B","lineHeight":1.25,"baseline":14},{"type":"arrow","version":117,"versionNonce":2094467180,"isDeleted":false,"id":"n4x98gzrAgK-AxpVR0k-Z","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2440.14453125,"y":2419.671875,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":2.46484375,"height":99.078125,"seed":680559014,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803121362,"link":null,"locked":false,"startBinding":{"elementId":"tKL3L2aC9Y8cxs8jSWYSN","focus":0.07564800794178884,"gap":6.5},"endBinding":{"elementId":"QizMpm6TYfwEd2YVnKLkk","focus":-0.2240163115727252,"gap":4.25390625},"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"triangle","points":[[0,0],[2.46484375,99.078125]]},{"type":"rectangle","version":14,"versionNonce":1427253076,"isDeleted":false,"id":"5490YS86sCqQezno3L-pv","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2754.546875,"y":2380.53515625,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":162.00390625,"height":53.453125,"seed":155774118,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"rjS9lEz69DvuZWxVemJ9O"}],"updated":1706803108701,"link":null,"locked":false},{"type":"text","version":13,"versionNonce":1510320108,"isDeleted":false,"id":"rjS9lEz69DvuZWxVemJ9O","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2801.324851989746,"y":2397.26171875,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":68.44795227050781,"height":20,"seed":987603430,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108701,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"module C","textAlign":"center","verticalAlign":"middle","containerId":"5490YS86sCqQezno3L-pv","originalText":"module C","lineHeight":1.25,"baseline":14},{"type":"arrow","version":26,"versionNonce":372830444,"isDeleted":false,"id":"btN2r0CS_VncTdv6gB5dc","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2793.5234375,"y":2433.48046875,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":66.2109375,"height":94.6484375,"seed":1538471866,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803117715,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"triangle","points":[[0,0],[-66.2109375,94.6484375]]},{"type":"arrow","version":19,"versionNonce":23186028,"isDeleted":false,"id":"RtvlzwWGSKKnUn9O-K37j","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2289.51171875,"y":2587.484375,"strokeColor":"#e03131","backgroundColor":"transparent","width":49.44921875,"height":34.78125,"seed":1723189350,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108701,"link":null,"locked":false,"startBinding":{"elementId":"lPo8wD4ucN9tbCZT4YCY-","focus":-0.7801672895683777,"gap":1.5390625},"endBinding":{"elementId":"BTWLv3DEaMsrW_DVWaInM","focus":-0.48889002049329133,"gap":14.6953125},"lastCommittedPoint":null,"startArrowhead":"triangle","endArrowhead":"triangle","points":[[0,0],[49.44921875,34.78125]]},{"type":"arrow","version":362,"versionNonce":373776980,"isDeleted":false,"id":"fN3Xr0Xg8o5d5SKePUMi8","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2718.12109375,"y":2691.70703125,"strokeColor":"#e03131","backgroundColor":"transparent","width":547.7265625,"height":216.359375,"seed":1514526694,"groupIds":[],"frameId":null,"roundness":{"type":2},"boundElements":[{"type":"text","id":"6o5zfsB8HOc-2hMy3Xq2x"}],"updated":1706803108701,"link":null,"locked":false,"startBinding":{"elementId":"X3GqCIiWPuY7iU7C02zqO","focus":-0.17773525171820775,"gap":3.03125},"endBinding":{"elementId":"OuoDOOi03U51ZjTrf2LFM","focus":0.6344269725650357,"gap":4.705078125},"lastCommittedPoint":null,"startArrowhead":"triangle","endArrowhead":"triangle","points":[[0,0],[-81.70703125,216.359375],[-547.7265625,113.6875]]},{"type":"text","version":19,"versionNonce":1578474732,"isDeleted":false,"id":"6o5zfsB8HOc-2hMy3Xq2x","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2593.5500869750977,"y":2898.06640625,"strokeColor":"#e03131","backgroundColor":"transparent","width":85.72795104980469,"height":20,"seed":1791878886,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706803108701,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"same data","textAlign":"center","verticalAlign":"middle","containerId":"fN3Xr0Xg8o5d5SKePUMi8","originalText":"same data","lineHeight":1.25,"baseline":14},{"type":"arrow","version":276,"versionNonce":1833957332,"isDeleted":false,"id":"sCDVxOChArbTvFmTdCeIh","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2675.23828125,"y":2611.203125,"strokeColor":"#e03131","backgroundColor":"transparent","width":472.2421875,"height":231.82421875,"seed":1470848826,"groupIds":[],"frameId":null,"roundness":{"type":2},"boundElements":[],"updated":1706803108701,"link":null,"locked":false,"startBinding":null,"endBinding":{"elementId":"B0H9SU3nlbooyNdiqQZ8v","focus":-0.19719908405051073,"gap":9.66796875},"lastCommittedPoint":null,"startArrowhead":"triangle","endArrowhead":"triangle","points":[[0,0],[-67.171875,231.82421875],[-333.17578125,200.2421875],[-472.2421875,62.46484375]]}],"appState":{"gridSize":null,"viewBackgroundColor":"#ffffff"}}

上图展现的典型页面中,有三个模块,侧栏的 asset list,中间的 asset detail,右边的 related asset。每个模块的数据独立性都由一个 Query 托管。这里以流行的 React Query 为例。

但是我们发现,这三个模块虽然是独立但是数据却是相通的。如下所示。

{"type":"excalidraw/clipboard","elements":[{"id":"GK-n75GVEWlHVs8et0k8X","type":"rectangle","x":2041.83203125,"y":2500.56640625,"width":745.1640625,"height":439.69140625,"angle":0,"strokeColor":"#1971c2","backgroundColor":"transparent","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1482611386,"version":59,"versionNonce":1104928166,"isDeleted":false,"boundElements":null,"updated":1706596526837,"link":null,"locked":false},{"id":"2Ftl8RWp0x89dSn-fTDHb","type":"rectangle","x":2056.25,"y":2513.57421875,"width":189.1015625,"height":29.765625000000007,"angle":0,"strokeColor":"#1971c2","backgroundColor":"transparent","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":3},"seed":571550758,"version":84,"versionNonce":588030010,"isDeleted":false,"boundElements":null,"updated":1706596561848,"link":null,"locked":false},{"id":"hG9or2PXyl7E6OC-x45xW","type":"rectangle","x":2058.6484375,"y":2550.87890625,"width":238.86328125,"height":280.91796875,"angle":0,"strokeColor":"#1971c2","backgroundColor":"transparent","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":930699706,"version":54,"versionNonce":828008826,"isDeleted":false,"boundElements":null,"updated":1706596571369,"link":null,"locked":false},{"id":"lPo8wD4ucN9tbCZT4YCY-","type":"rectangle","x":2067.21875,"y":2564.28515625,"width":220.75390625,"height":45.94140625,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":415706726,"version":70,"versionNonce":506841210,"isDeleted":false,"boundElements":[{"id":"ZDhpEwlrH5AUtXRIg92Ik","type":"arrow"},{"id":"RtvlzwWGSKKnUn9O-K37j","type":"arrow"}],"updated":1706596877125,"link":null,"locked":false},{"type":"rectangle","version":127,"versionNonce":1137592550,"isDeleted":false,"id":"QZD0BD4kTfZiKvkUBiu92","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2070.814453125,"y":2623.904296875,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":220.75390625,"height":45.94140625,"seed":1492938042,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706596588513,"link":null,"locked":false},{"type":"rectangle","version":172,"versionNonce":2024967610,"isDeleted":false,"id":"vHRngh0rrfBh0T4ixrtGc","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2071.822265625,"y":2690.029296875,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":220.75390625,"height":45.94140625,"seed":1884407654,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706596645207,"link":null,"locked":false},{"type":"rectangle","version":196,"versionNonce":620143546,"isDeleted":false,"id":"OuoDOOi03U51ZjTrf2LFM","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2070.572265625,"y":2754.748046875,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":220.75390625,"height":45.94140625,"seed":1505724006,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"TZHuoQcIx4AVsFSC4W873"},{"id":"fN3Xr0Xg8o5d5SKePUMi8","type":"arrow"}],"updated":1706597018487,"link":null,"locked":false},{"id":"TZHuoQcIx4AVsFSC4W873","type":"text","x":2152.997245788574,"y":2767.71875,"width":55.90394592285156,"height":20,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":234102650,"version":4,"versionNonce":1071671846,"isDeleted":false,"boundElements":null,"updated":1706596651822,"link":null,"locked":false,"text":"Asset4","fontSize":16,"fontFamily":1,"textAlign":"center","verticalAlign":"middle","baseline":14,"containerId":"OuoDOOi03U51ZjTrf2LFM","originalText":"Asset4","lineHeight":1.25},{"id":"QizMpm6TYfwEd2YVnKLkk","type":"rectangle","x":2328.125,"y":2523.00390625,"width":311.22265625,"height":404.6953125,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1283715942,"version":96,"versionNonce":1978474298,"isDeleted":false,"boundElements":[{"id":"n4x98gzrAgK-AxpVR0k-Z","type":"arrow"}],"updated":1706596850859,"link":null,"locked":false},{"id":"wYu4LBPAKlzaH6P-aI6q7","type":"text","x":2148.6015625,"y":2575.921875,"width":49.99995422363281,"height":20,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1543458618,"version":53,"versionNonce":2059078330,"isDeleted":false,"boundElements":null,"updated":1706596747600,"link":null,"locked":false,"text":"Asset1","fontSize":16,"fontFamily":1,"textAlign":"left","verticalAlign":"top","baseline":14,"containerId":null,"originalText":"Asset1","lineHeight":1.25},{"id":"B0H9SU3nlbooyNdiqQZ8v","type":"text","x":2147,"y":2644,"width":57.05595397949219,"height":20,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1538414330,"version":5,"versionNonce":2115386982,"isDeleted":false,"boundElements":[{"id":"sCDVxOChArbTvFmTdCeIh","type":"arrow"}],"updated":1706597065214,"link":null,"locked":false,"text":"Asset2","fontSize":16,"fontFamily":1,"textAlign":"left","verticalAlign":"top","baseline":14,"containerId":null,"originalText":"Asset2","lineHeight":1.25},{"id":"4NH7KVhfIpdFqEUVXze30","type":"text","x":2149,"y":2709,"width":56.55995178222656,"height":20,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1947529210,"version":4,"versionNonce":253222502,"isDeleted":false,"boundElements":null,"updated":1706596647093,"link":null,"locked":false,"text":"Asset3","fontSize":16,"fontFamily":1,"textAlign":"left","verticalAlign":"top","baseline":14,"containerId":null,"originalText":"Asset3","lineHeight":1.25},{"id":"dvHatSpIlps--4bBXbVsx","type":"text","x":2417.03125,"y":2548.9296875,"width":106.65592956542969,"height":20,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":741250022,"version":48,"versionNonce":1309891302,"isDeleted":false,"boundElements":null,"updated":1706596754148,"link":null,"locked":false,"text":"Asset1 Detail","fontSize":16,"fontFamily":1,"textAlign":"left","verticalAlign":"top","baseline":14,"containerId":null,"originalText":"Asset1 Detail","lineHeight":1.25},{"id":"kdjnQsec9D5nbnIMZkbB5","type":"rectangle","x":2069.44921875,"y":2521.12109375,"width":62.1796875,"height":14.94140625,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#a5d8ff","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":3},"seed":944487162,"version":45,"versionNonce":1456991226,"isDeleted":false,"boundElements":null,"updated":1706596691795,"link":null,"locked":false},{"id":"wvRoG1UfHUWTBg2OCa1lE","type":"rectangle","x":2660.8125,"y":2525.48828125,"width":112.57421875,"height":203.3203125,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":3},"seed":909423994,"version":41,"versionNonce":1317909370,"isDeleted":false,"boundElements":null,"updated":1706596710477,"link":null,"locked":false},{"id":"7X5LNnpol1JluuaV7uP1F","type":"rectangle","x":2674.0390625,"y":2601.10546875,"width":81.91015625,"height":30,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1748841530,"version":95,"versionNonce":1967814566,"isDeleted":false,"boundElements":[{"type":"text","id":"YB3ecIRABZs6ZQLZch3_K"}],"updated":1706596898011,"link":null,"locked":false},{"id":"YB3ecIRABZs6ZQLZch3_K","type":"text","x":2682.466163635254,"y":2606.10546875,"width":65.05595397949219,"height":20,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":777509050,"version":66,"versionNonce":27824870,"isDeleted":false,"boundElements":null,"updated":1706596898011,"link":null,"locked":false,"text":"Asset 2","fontSize":16,"fontFamily":1,"textAlign":"center","verticalAlign":"middle","baseline":14,"containerId":"7X5LNnpol1JluuaV7uP1F","originalText":"Asset 2","lineHeight":1.25},{"type":"rectangle","version":110,"versionNonce":611609146,"isDeleted":false,"id":"X3GqCIiWPuY7iU7C02zqO","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2675.689453125,"y":2658.67578125,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":81.91015625,"height":30,"seed":1946014138,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"hqK4DM4haEED5tqVy7Y69"},{"id":"fN3Xr0Xg8o5d5SKePUMi8","type":"arrow"}],"updated":1706597018487,"link":null,"locked":false},{"type":"text","version":80,"versionNonce":386789670,"isDeleted":false,"id":"hqK4DM4haEED5tqVy7Y69","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2684.692558288574,"y":2663.67578125,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":63.90394592285156,"height":20,"seed":512723578,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706596898894,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset 4","textAlign":"center","verticalAlign":"middle","containerId":"X3GqCIiWPuY7iU7C02zqO","originalText":"Asset 4","lineHeight":1.25,"baseline":14},{"id":"MQGXGRKE4fIK7pcUv2G8s","type":"text","x":2671.31640625,"y":2548.49609375,"width":88.71621704101562,"height":15.406250000000004,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1184364006,"version":88,"versionNonce":104814010,"isDeleted":false,"boundElements":null,"updated":1706596934353,"link":null,"locked":false,"text":"Related asset","fontSize":12.325000000000003,"fontFamily":1,"textAlign":"left","verticalAlign":"top","baseline":11,"containerId":null,"originalText":"Related asset","lineHeight":1.25},{"id":"BTWLv3DEaMsrW_DVWaInM","type":"rectangle","x":2353.65625,"y":2594.75390625,"width":246.16015625,"height":110.27734375,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1127375418,"version":62,"versionNonce":1680175610,"isDeleted":false,"boundElements":[{"id":"RtvlzwWGSKKnUn9O-K37j","type":"arrow"}],"updated":1706596877125,"link":null,"locked":false},{"id":"cQX5pznZP-lc-7FJfKf6N","type":"line","x":2357.22265625,"y":2740.70703125,"width":224.93359375,"height":0.6640625,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":527008826,"version":49,"versionNonce":1228236070,"isDeleted":false,"boundElements":null,"updated":1706596775054,"link":null,"locked":false,"points":[[0,0],[224.93359375,0.6640625]],"lastCommittedPoint":null,"startBinding":null,"endBinding":null,"startArrowhead":null,"endArrowhead":null},{"type":"line","version":64,"versionNonce":1571238778,"isDeleted":false,"id":"5WvLajTNXm0YKkplRW6oP","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2358.169921875,"y":2763.43704118742,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":1790333178,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706596777341,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"type":"line","version":65,"versionNonce":1863974970,"isDeleted":false,"id":"Kn6cPJNmvb7ZyY9eguXN6","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2358.447265625,"y":2790.44875993742,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":7871738,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706596778992,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"type":"line","version":80,"versionNonce":1790482490,"isDeleted":false,"id":"XRbGMuY1fGpPfYa2XIb5I","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2361.923828125,"y":2819.27688493742,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":665762234,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706596780977,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"id":"ZDhpEwlrH5AUtXRIg92Ik","type":"arrow","x":1946.42578125,"y":2420.640625,"width":108.22265625,"height":131.546875,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1135300922,"version":89,"versionNonce":1152617702,"isDeleted":false,"boundElements":null,"updated":1706596841745,"link":null,"locked":false,"points":[[0,0],[108.22265625,131.546875]],"lastCommittedPoint":null,"startBinding":{"elementId":"prloiiGuYMACQ4gmNuWWJ","focus":0.5324848235368168,"gap":3.44921875},"endBinding":{"elementId":"lPo8wD4ucN9tbCZT4YCY-","focus":-0.7278819525299076,"gap":12.5703125},"startArrowhead":null,"endArrowhead":"arrow"},{"id":"prloiiGuYMACQ4gmNuWWJ","type":"rectangle","x":1903.53125,"y":2368.62109375,"width":131.40234375,"height":48.5703125,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":162462714,"version":42,"versionNonce":1170014246,"isDeleted":false,"boundElements":[{"id":"ZDhpEwlrH5AUtXRIg92Ik","type":"arrow"}],"updated":1706596841745,"link":null,"locked":false},{"id":"JU8Py956wVzj0n5kgeRYp","type":"text","x":1935,"y":2380,"width":68.63995361328125,"height":20,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1497332218,"version":9,"versionNonce":860304550,"isDeleted":false,"boundElements":null,"updated":1706596810061,"link":null,"locked":false,"text":"module A","fontSize":16,"fontFamily":1,"textAlign":"left","verticalAlign":"top","baseline":14,"containerId":null,"originalText":"module A","lineHeight":1.25},{"type":"rectangle","version":77,"versionNonce":367773114,"isDeleted":false,"id":"tKL3L2aC9Y8cxs8jSWYSN","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":2378.693359375,"y":2364.6015625,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":131.40234375,"height":48.5703125,"seed":588203514,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"Q2NWa76kgx3U_DyJ6wa_i"},{"id":"n4x98gzrAgK-AxpVR0k-Z","type":"arrow"}],"updated":1706596850858,"link":null,"locked":false},{"id":"Q2NWa76kgx3U_DyJ6wa_i","type":"text","x":2409.5065536499023,"y":2378.88671875,"width":69.77595520019531,"height":20,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1908654458,"version":22,"versionNonce":412621370,"isDeleted":false,"boundElements":null,"updated":1706596847728,"link":null,"locked":false,"text":"module B","fontSize":16,"fontFamily":1,"textAlign":"center","verticalAlign":"middle","baseline":14,"containerId":"tKL3L2aC9Y8cxs8jSWYSN","originalText":"module B","lineHeight":1.25},{"id":"n4x98gzrAgK-AxpVR0k-Z","type":"arrow","x":2440.14453125,"y":2419.671875,"width":2.46484375,"height":99.078125,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":680559014,"version":26,"versionNonce":916389498,"isDeleted":false,"boundElements":null,"updated":1706596850859,"link":null,"locked":false,"points":[[0,0],[2.46484375,99.078125]],"lastCommittedPoint":null,"startBinding":{"elementId":"tKL3L2aC9Y8cxs8jSWYSN","focus":0.07564800794178884,"gap":6.5},"endBinding":{"elementId":"QizMpm6TYfwEd2YVnKLkk","focus":-0.2240163115727252,"gap":4.25390625},"startArrowhead":null,"endArrowhead":"arrow"},{"id":"5490YS86sCqQezno3L-pv","type":"rectangle","x":2754.546875,"y":2380.53515625,"width":162.00390625,"height":53.453125,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":155774118,"version":10,"versionNonce":615667578,"isDeleted":false,"boundElements":[{"type":"text","id":"rjS9lEz69DvuZWxVemJ9O"}],"updated":1706596855694,"link":null,"locked":false},{"id":"rjS9lEz69DvuZWxVemJ9O","type":"text","x":2801.324851989746,"y":2397.26171875,"width":68.44795227050781,"height":20,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":987603430,"version":9,"versionNonce":730201658,"isDeleted":false,"boundElements":null,"updated":1706596857109,"link":null,"locked":false,"text":"module C","fontSize":16,"fontFamily":1,"textAlign":"center","verticalAlign":"middle","baseline":14,"containerId":"5490YS86sCqQezno3L-pv","originalText":"module C","lineHeight":1.25},{"id":"btN2r0CS_VncTdv6gB5dc","type":"arrow","x":2793.5234375,"y":2433.48046875,"width":66.2109375,"height":94.6484375,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1538471866,"version":21,"versionNonce":1835224742,"isDeleted":false,"boundElements":null,"updated":1706596859297,"link":null,"locked":false,"points":[[0,0],[-66.2109375,94.6484375]],"lastCommittedPoint":null,"startBinding":null,"endBinding":null,"startArrowhead":null,"endArrowhead":"arrow"},{"id":"RtvlzwWGSKKnUn9O-K37j","type":"arrow","x":2289.51171875,"y":2587.484375,"width":49.44921875,"height":34.78125,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1723189350,"version":13,"versionNonce":1799474854,"isDeleted":false,"boundElements":null,"updated":1706597032130,"link":null,"locked":false,"points":[[0,0],[49.44921875,34.78125]],"lastCommittedPoint":null,"startBinding":{"elementId":"lPo8wD4ucN9tbCZT4YCY-","focus":-0.7801672895683777,"gap":1.5390625},"endBinding":{"elementId":"BTWLv3DEaMsrW_DVWaInM","focus":-0.48889002049329133,"gap":14.6953125},"startArrowhead":"arrow","endArrowhead":"arrow"},{"id":"fN3Xr0Xg8o5d5SKePUMi8","type":"arrow","x":2718.12109375,"y":2691.70703125,"width":547.7265625,"height":216.359375,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":2},"seed":1514526694,"version":357,"versionNonce":1039142438,"isDeleted":false,"boundElements":[{"type":"text","id":"6o5zfsB8HOc-2hMy3Xq2x"}],"updated":1706597044628,"link":null,"locked":false,"points":[[0,0],[-81.70703125,216.359375],[-547.7265625,113.6875]],"lastCommittedPoint":[-547.7265625,113.6875],"startBinding":{"elementId":"X3GqCIiWPuY7iU7C02zqO","focus":-0.17773525171820775,"gap":3.03125},"endBinding":{"elementId":"OuoDOOi03U51ZjTrf2LFM","focus":0.6344269725650357,"gap":4.705078125},"startArrowhead":"arrow","endArrowhead":"triangle"},{"id":"6o5zfsB8HOc-2hMy3Xq2x","type":"text","x":2593.5500869750977,"y":2898.06640625,"width":85.72795104980469,"height":20,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1791878886,"version":15,"versionNonce":1046902202,"isDeleted":false,"boundElements":null,"updated":1706597043961,"link":null,"locked":false,"text":"same data","fontSize":16,"fontFamily":1,"textAlign":"center","verticalAlign":"middle","baseline":14,"containerId":"fN3Xr0Xg8o5d5SKePUMi8","originalText":"same data","lineHeight":1.25},{"id":"sCDVxOChArbTvFmTdCeIh","type":"arrow","x":2675.23828125,"y":2611.203125,"width":472.2421875,"height":231.82421875,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":2},"seed":1470848826,"version":271,"versionNonce":21291174,"isDeleted":false,"boundElements":null,"updated":1706597071090,"link":null,"locked":false,"points":[[0,0],[-67.171875,231.82421875],[-333.17578125,200.2421875],[-472.2421875,62.46484375]],"lastCommittedPoint":[-472.2421875,62.46484375],"startBinding":null,"endBinding":{"elementId":"B0H9SU3nlbooyNdiqQZ8v","focus":-0.19719908405051073,"gap":9.66796875},"startArrowhead":"arrow","endArrowhead":"triangle"}],"files":{}}

而用现在的方式去管理每个模块的数据好像也没有不妥,毕竟目前不需要关心数据重复带来的问题。能在数据产生之后渲染正确的 UI 这是静态页面最简单的方法。

现在新的需求的加入,需要对数据实时的修改做乐观更新。也就是,当后端数据的更新,触发前端对应数据也需要更新。

这个时候,使用 React Query 的场景下,分别对三个模块的 Query 做相应数据的乐观更新了。

{"type":"excalidraw/clipboard","elements":[{"type":"rectangle","version":108,"versionNonce":2098663910,"isDeleted":false,"id":"PqvVZPm_nDYyPfTG73HWD","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4072.6685460138256,"y":1939.7962431608137,"strokeColor":"#1971c2","backgroundColor":"transparent","width":745.1640625,"height":439.69140625,"seed":1156397478,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597833116,"link":null,"locked":false},{"type":"rectangle","version":133,"versionNonce":292021542,"isDeleted":false,"id":"d1alc_pLqmBBvW9d3QHMf","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4087.0865147638256,"y":1952.8040556608137,"strokeColor":"#1971c2","backgroundColor":"transparent","width":189.1015625,"height":29.765625000000007,"seed":329454822,"groupIds":[],"frameId":null,"roundness":{"type":3},"boundElements":[],"updated":1706597833116,"link":null,"locked":false},{"type":"rectangle","version":103,"versionNonce":1656508518,"isDeleted":false,"id":"7Q1R1w3gYk3fi2XmGp0Bo","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4089.4849522638256,"y":1990.1087431608137,"strokeColor":"#1971c2","backgroundColor":"transparent","width":238.86328125,"height":280.91796875,"seed":494635046,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597833116,"link":null,"locked":false},{"type":"rectangle","version":120,"versionNonce":1021399974,"isDeleted":false,"id":"l3D9GXchp0VKdlZBYW7qq","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4098.055264763825,"y":2003.5149931608137,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":220.75390625,"height":45.94140625,"seed":308515686,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"R_-EyOhJMEpdw_mJJ-d95","type":"arrow"}],"updated":1706597833116,"link":null,"locked":false},{"type":"rectangle","version":177,"versionNonce":1722884646,"isDeleted":false,"id":"nZM7En9FPfVdL4RBvcVie","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4101.650967888825,"y":2063.134133785814,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":220.75390625,"height":45.94140625,"seed":480786086,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"vrDXURCXeBqVaNecWyAm2","type":"arrow"}],"updated":1706597833116,"link":null,"locked":false},{"type":"rectangle","version":221,"versionNonce":1958695078,"isDeleted":false,"id":"Nz4-8n4X2gYgf7D0UMlx2","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4102.658780388825,"y":2129.259133785814,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":220.75390625,"height":45.94140625,"seed":351695334,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597833116,"link":null,"locked":false},{"type":"rectangle","version":246,"versionNonce":1327123430,"isDeleted":false,"id":"r8EKz2ko4l-o9hqsc9rlN","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4101.408780388825,"y":2193.977883785814,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":220.75390625,"height":45.94140625,"seed":911951142,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"cbXJUZGbQB5utw3aQmZHa"}],"updated":1706597833116,"link":null,"locked":false},{"type":"text","version":53,"versionNonce":1928584998,"isDeleted":false,"id":"cbXJUZGbQB5utw3aQmZHa","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4183.833760552399,"y":2206.948586910814,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":55.90394592285156,"height":20,"seed":1380167782,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597833116,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset4","textAlign":"center","verticalAlign":"middle","containerId":"r8EKz2ko4l-o9hqsc9rlN","originalText":"Asset4","lineHeight":1.25,"baseline":14},{"type":"rectangle","version":146,"versionNonce":1689848422,"isDeleted":false,"id":"TcQbMq60k3PDGHj-pIdWl","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4358.961514763825,"y":1962.2337431608137,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":311.22265625,"height":404.6953125,"seed":75281318,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"N87sAknELsM5P5SmW7J1V","type":"arrow"},{"id":"Lt0-Lh9tqsFNC7-ohgRSL","type":"arrow"}],"updated":1706597833116,"link":null,"locked":false},{"type":"text","version":102,"versionNonce":762321958,"isDeleted":false,"id":"PW3b0_9N2EfsA5ZkRGm42","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4179.438077263825,"y":2015.1517119108137,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":49.99995422363281,"height":20,"seed":1731415782,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597833116,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset1","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Asset1","lineHeight":1.25,"baseline":14},{"type":"text","version":55,"versionNonce":1587914598,"isDeleted":false,"id":"mtS1Y0AfPrE2Fkql6LeRb","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4177.836514763825,"y":2083.229836910814,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":57.05595397949219,"height":20,"seed":1190429222,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597833116,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset2","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Asset2","lineHeight":1.25,"baseline":14},{"type":"text","version":53,"versionNonce":1065863846,"isDeleted":false,"id":"7Cebeq7mIZGNC5Z3oFKUH","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4179.836514763825,"y":2148.229836910814,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":56.55995178222656,"height":20,"seed":1454198118,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597833116,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset3","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Asset3","lineHeight":1.25,"baseline":14},{"type":"text","version":97,"versionNonce":1589872102,"isDeleted":false,"id":"RSmJdU4KkGAxjcKas2a0z","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4447.867764763825,"y":1988.1595244108137,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":106.65592956542969,"height":20,"seed":1672130726,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597833116,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset1 Detail","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Asset1 Detail","lineHeight":1.25,"baseline":14},{"type":"rectangle","version":94,"versionNonce":1835391270,"isDeleted":false,"id":"Ix5TirTIFFEgQO2tzdWiw","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4100.285733513825,"y":1960.3509306608137,"strokeColor":"#1e1e1e","backgroundColor":"#a5d8ff","width":62.1796875,"height":14.94140625,"seed":161065958,"groupIds":[],"frameId":null,"roundness":{"type":3},"boundElements":[],"updated":1706597833116,"link":null,"locked":false},{"type":"rectangle","version":91,"versionNonce":1927005286,"isDeleted":false,"id":"oOqopA3WrMIy48WjcGgRz","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4691.649014763825,"y":1964.7181181608137,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":112.57421875,"height":203.3203125,"seed":1720139558,"groupIds":[],"frameId":null,"roundness":{"type":3},"boundElements":[{"id":"E36KkKzRG-B0luHtreWXI","type":"arrow"}],"updated":1706597833116,"link":null,"locked":false},{"type":"rectangle","version":144,"versionNonce":1742103270,"isDeleted":false,"id":"YI-SXoxFelV7xsmu0PKn7","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4704.875577263825,"y":2040.3353056608137,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":81.91015625,"height":30,"seed":1323330150,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"7PgR2FHYjVsPuD4pBi5JY"}],"updated":1706597833116,"link":null,"locked":false},{"type":"text","version":115,"versionNonce":1779766822,"isDeleted":false,"id":"7PgR2FHYjVsPuD4pBi5JY","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4713.302678399079,"y":2045.3353056608137,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":65.05595397949219,"height":20,"seed":24260006,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597833116,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset 2","textAlign":"center","verticalAlign":"middle","containerId":"YI-SXoxFelV7xsmu0PKn7","originalText":"Asset 2","lineHeight":1.25,"baseline":14},{"type":"rectangle","version":160,"versionNonce":1889231206,"isDeleted":false,"id":"fR3XrIosabsVlmNf79ru0","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4706.525967888825,"y":2097.905618160814,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":81.91015625,"height":30,"seed":1533642982,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"iFkxdUQ4ucGk7Hapmnn75"}],"updated":1706597833116,"link":null,"locked":false},{"type":"text","version":129,"versionNonce":1052132518,"isDeleted":false,"id":"iFkxdUQ4ucGk7Hapmnn75","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4715.529073052399,"y":2102.905618160814,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":63.90394592285156,"height":20,"seed":206797862,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597833116,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset 4","textAlign":"center","verticalAlign":"middle","containerId":"fR3XrIosabsVlmNf79ru0","originalText":"Asset 4","lineHeight":1.25,"baseline":14},{"type":"text","version":137,"versionNonce":638762982,"isDeleted":false,"id":"WyphU2LjMDyGqX2evwEzc","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4702.152921013825,"y":1987.7259306608137,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":88.71621704101562,"height":15.406250000000004,"seed":1243416422,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597833116,"link":null,"locked":false,"fontSize":12.325000000000003,"fontFamily":1,"text":"Related asset","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Related asset","lineHeight":1.25,"baseline":11},{"type":"rectangle","version":112,"versionNonce":985518886,"isDeleted":false,"id":"B_SpTUJaiaeleDimnRIVJ","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4384.492764763825,"y":2033.9837431608137,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":246.16015625,"height":110.27734375,"seed":85142182,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597833116,"link":null,"locked":false},{"type":"line","version":98,"versionNonce":119832166,"isDeleted":false,"id":"Rvw2o51cfr2K0WFTlK0JI","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4388.059171013825,"y":2179.936868160814,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":467854822,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597833116,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"type":"line","version":113,"versionNonce":1075036582,"isDeleted":false,"id":"FkIOK60hkl1lCC81GbVDX","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4389.006436638825,"y":2202.6668780982345,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":261699878,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597833116,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"type":"line","version":114,"versionNonce":2025364710,"isDeleted":false,"id":"bMChILYFWPkbh5q4ZeKWQ","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4389.283780388825,"y":2229.6785968482345,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":933438566,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597833116,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"type":"line","version":129,"versionNonce":1453330470,"isDeleted":false,"id":"VqfvkNiAYKu6iDxU_gNrN","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4392.760342888825,"y":2258.5067218482345,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":1976412070,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597833116,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"type":"arrow","version":354,"versionNonce":402778106,"isDeleted":false,"id":"R_-EyOhJMEpdw_mJJ-d95","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":3984.5235312190093,"y":1858.3118681608137,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":105.34277079651565,"height":135.66616293367088,"seed":1782956774,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597833117,"link":null,"locked":false,"startBinding":{"elementId":"Xksv_qgHI9W02D1BmLkJR","focus":0.5323932884599961,"gap":3.44921875},"endBinding":{"elementId":"l3D9GXchp0VKdlZBYW7qq","focus":-0.7278819525299034,"gap":9.536962066329238},"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"arrow","points":[[0,0],[105.34277079651565,135.66616293367088]]},{"type":"rectangle","version":153,"versionNonce":1615691514,"isDeleted":false,"id":"Xksv_qgHI9W02D1BmLkJR","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":3942.3052647638256,"y":1806.2923369108137,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":131.40234375,"height":48.5703125,"seed":664303142,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"R_-EyOhJMEpdw_mJJ-d95","type":"arrow"},{"id":"vrDXURCXeBqVaNecWyAm2","type":"arrow"}],"updated":1706597941981,"link":null,"locked":false},{"type":"text","version":58,"versionNonce":352046374,"isDeleted":false,"id":"frXkjB505Qz3UCRnoh5MD","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":3965.8365147638256,"y":1819.2298369108137,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":68.63995361328125,"height":20,"seed":1722990950,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597833116,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"module A","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"module A","lineHeight":1.25,"baseline":14},{"type":"rectangle","version":135,"versionNonce":1867859238,"isDeleted":false,"id":"2QWfRHv4uHN9rmZaZZWBd","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4420.541205685694,"y":1803.2445736827958,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":131.40234375,"height":48.5703125,"seed":987866278,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"fwKfoO5btR3v-_Xtyvlc1"},{"id":"N87sAknELsM5P5SmW7J1V","type":"arrow"},{"id":"Lt0-Lh9tqsFNC7-ohgRSL","type":"arrow"}],"updated":1706597929080,"link":null,"locked":false},{"type":"text","version":79,"versionNonce":1709411002,"isDeleted":false,"id":"fwKfoO5btR3v-_Xtyvlc1","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4451.354399960596,"y":1817.5297299327958,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":69.77595520019531,"height":20,"seed":1171398630,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597920208,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"module B","textAlign":"center","verticalAlign":"middle","containerId":"2QWfRHv4uHN9rmZaZZWBd","originalText":"module B","lineHeight":1.25,"baseline":14},{"type":"arrow","version":185,"versionNonce":611820602,"isDeleted":false,"id":"N87sAknELsM5P5SmW7J1V","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4480.890529421471,"y":1858.3148861827958,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":0.449616844846787,"height":99.66495072801808,"seed":1804677926,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597920208,"link":null,"locked":false,"startBinding":{"elementId":"2QWfRHv4uHN9rmZaZZWBd","focus":0.07564800794178884,"gap":6.5},"endBinding":{"elementId":"TcQbMq60k3PDGHj-pIdWl","focus":-0.2240163115727252,"gap":4.253906250000114},"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"arrow","points":[[0,0],[-0.449616844846787,99.66495072801808]]},{"type":"rectangle","version":89,"versionNonce":1091132026,"isDeleted":false,"id":"VvAqevEiJV13NtMkc6f8I","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4839.156664401937,"y":1883.5095342343482,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":162.00390625,"height":53.453125,"seed":109829734,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"T_AjI7_6FtrurWo0uKIh7"},{"id":"E36KkKzRG-B0luHtreWXI","type":"arrow"},{"id":"eTGgB98vat6Sgz9fUOSiB","type":"arrow"}],"updated":1706598008429,"link":null,"locked":false},{"type":"text","version":86,"versionNonce":760287718,"isDeleted":false,"id":"T_AjI7_6FtrurWo0uKIh7","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4885.934641391683,"y":1900.2360967343482,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":68.44795227050781,"height":20,"seed":462365094,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598008344,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"module C","textAlign":"center","verticalAlign":"middle","containerId":"VvAqevEiJV13NtMkc6f8I","originalText":"module C","lineHeight":1.25,"baseline":14},{"type":"arrow","version":97,"versionNonce":652764858,"isDeleted":false,"id":"eTGgB98vat6Sgz9fUOSiB","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4829.922869327798,"y":1909.6707846441736,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":71.77385456397315,"height":57.68795851664004,"seed":231210214,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598010781,"link":null,"locked":false,"startBinding":{"elementId":"VvAqevEiJV13NtMkc6f8I","focus":0.7959348473885588,"gap":9.23379507413847},"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"arrow","points":[[0,0],[-71.77385456397315,57.68795851664004]]},{"type":"arrow","version":288,"versionNonce":166642170,"isDeleted":false,"id":"vrDXURCXeBqVaNecWyAm2","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":3939.464075026257,"y":1861.345807484552,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":45.00426379397504,"height":53.86058278930932,"seed":1388539942,"groupIds":[],"frameId":null,"roundness":{"type":2},"boundElements":[],"updated":1706597945210,"link":null,"locked":false,"startBinding":{"elementId":"Xksv_qgHI9W02D1BmLkJR","focus":0.4979078576547188,"gap":7.0783965510520375},"endBinding":{"elementId":"Ir_qSoSAJPHteVRcA935n","focus":-0.39362239011659217,"gap":12.067558867746243},"lastCommittedPoint":null,"startArrowhead":"arrow","endArrowhead":null,"points":[[0,0],[-45.00426379397504,53.86058278930932]]},{"type":"rectangle","version":99,"versionNonce":2089359526,"isDeleted":false,"id":"Ir_qSoSAJPHteVRcA935n","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":3822.3767159340773,"y":1927.2739491416075,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":146.51171874999994,"height":69.390625,"seed":644774758,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"vrDXURCXeBqVaNecWyAm2","type":"arrow"},{"type":"text","id":"VSE2fsMAW4NIDPWSm_-PA"},{"id":"xOt7z73HIbTPwDKLTM16E","type":"arrow"}],"updated":1706597958929,"link":null,"locked":false},{"type":"text","version":108,"versionNonce":2131957882,"isDeleted":false,"id":"VSE2fsMAW4NIDPWSm_-PA","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":3868.9845879433547,"y":1951.9692616416078,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":53.29597473144531,"height":20,"seed":1058414246,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597945210,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"query 1","textAlign":"center","verticalAlign":"middle","containerId":"Ir_qSoSAJPHteVRcA935n","originalText":"query 1","lineHeight":1.25,"baseline":14},{"type":"arrow","version":672,"versionNonce":1470129766,"isDeleted":false,"id":"Lt0-Lh9tqsFNC7-ohgRSL","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4416.525698395197,"y":1839.951529385722,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":57.43571151836477,"height":9.669623817329011,"seed":23550438,"groupIds":[],"frameId":null,"roundness":{"type":2},"boundElements":[],"updated":1706597935145,"link":null,"locked":false,"startBinding":{"elementId":"2QWfRHv4uHN9rmZaZZWBd","focus":-0.6798446100181246,"gap":4.015507290497226},"endBinding":{"elementId":"zhtewdk7YltAWsyUjg81l","focus":-0.4256615585352386,"gap":6.034683340822994},"lastCommittedPoint":null,"startArrowhead":"arrow","endArrowhead":null,"points":[[0,0],[-57.43571151836477,-9.669623817329011]]},{"type":"rectangle","version":234,"versionNonce":204024998,"isDeleted":false,"id":"zhtewdk7YltAWsyUjg81l","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4206.543584786009,"y":1802.2557453892096,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":146.51171874999994,"height":69.390625,"seed":879701286,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"Lt0-Lh9tqsFNC7-ohgRSL","type":"arrow"},{"type":"text","id":"Q49bFNqTTKWyl00y9G5Ft"}],"updated":1706597935145,"link":null,"locked":false},{"type":"text","version":245,"versionNonce":350791654,"isDeleted":false,"id":"Q49bFNqTTKWyl00y9G5Ft","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4249.623456917357,"y":1826.9510578892096,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":60.35197448730469,"height":20,"seed":899324006,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706597935145,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"query 2","textAlign":"center","verticalAlign":"middle","containerId":"zhtewdk7YltAWsyUjg81l","originalText":"query 2","lineHeight":1.25,"baseline":14},{"type":"arrow","version":493,"versionNonce":1186377722,"isDeleted":false,"id":"E36KkKzRG-B0luHtreWXI","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4906.729376622256,"y":1880.7149331434186,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":5.330942072243488,"height":63.90826112613763,"seed":750164902,"groupIds":[],"frameId":null,"roundness":{"type":2},"boundElements":[],"updated":1706598012330,"link":null,"locked":false,"startBinding":{"elementId":"VvAqevEiJV13NtMkc6f8I","focus":-0.18859896839568596,"gap":2.7946010909295183},"endBinding":{"elementId":"r4MDKG1IZUvNAPFyIayRb","focus":0.274837742011927,"gap":3.170458923030992},"lastCommittedPoint":null,"startArrowhead":"arrow","endArrowhead":null,"points":[[0,0],[5.330942072243488,-63.90826112613763]]},{"type":"rectangle","version":142,"versionNonce":1677479354,"isDeleted":false,"id":"r4MDKG1IZUvNAPFyIayRb","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4862.891943707509,"y":1744.24558809425,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":146.51171874999994,"height":69.390625,"seed":1072707302,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"E36KkKzRG-B0luHtreWXI","type":"arrow"},{"type":"text","id":"zJufFTS3-YIbXCt8vP3oH"},{"id":"RnNCTt5a7hA8byAI0Kqhv","type":"arrow"}],"updated":1706598012330,"link":null,"locked":false},{"type":"text","version":161,"versionNonce":22972026,"isDeleted":false,"id":"zJufFTS3-YIbXCt8vP3oH","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":4906.21981693749,"y":1768.94090059425,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":59.85597229003906,"height":20,"seed":1205103142,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598012330,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"query 3","textAlign":"center","verticalAlign":"middle","containerId":"r4MDKG1IZUvNAPFyIayRb","originalText":"query 3","lineHeight":1.25,"baseline":14},{"id":"kXmcNK-x7xY70rgrIxN5X","type":"text","x":4373.7078048918875,"y":1599.2945408892297,"width":184.36788940429688,"height":20,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":["yM-JIBqG5PtT0g2cWwKCz"],"frameId":null,"roundness":null,"seed":831427814,"version":189,"versionNonce":2136144038,"isDeleted":false,"boundElements":null,"updated":1706597910922,"link":null,"locked":false,"text":"asset 2 data updated","fontSize":16,"fontFamily":1,"textAlign":"left","verticalAlign":"top","baseline":14,"containerId":null,"originalText":"asset 2 data updated","lineHeight":1.25},{"id":"MXQEmqgs81BFd3JaMPYAY","type":"ellipse","x":4283.145805142032,"y":1538.3505421111943,"width":373.7411955749936,"height":132.80868122625452,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":["yM-JIBqG5PtT0g2cWwKCz"],"frameId":null,"roundness":null,"seed":388323642,"version":209,"versionNonce":1937188838,"isDeleted":false,"boundElements":[{"id":"xOt7z73HIbTPwDKLTM16E","type":"arrow"},{"id":"RnNCTt5a7hA8byAI0Kqhv","type":"arrow"}],"updated":1706598002554,"link":null,"locked":false},{"id":"xOt7z73HIbTPwDKLTM16E","type":"arrow","x":4358.784301824901,"y":1662.0801228462476,"width":405.1864669031629,"height":257.14894239371665,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1795298490,"version":38,"versionNonce":1874829306,"isDeleted":false,"boundElements":[{"type":"text","id":"JbSizVbMFS6mh42EIs3O6"}],"updated":1706597997355,"link":null,"locked":false,"points":[[0,0],[-405.1864669031629,257.14894239371665]],"lastCommittedPoint":null,"startBinding":{"elementId":"MXQEmqgs81BFd3JaMPYAY","focus":0.09761153764646897,"gap":3.836983113257972},"endBinding":{"elementId":"Ir_qSoSAJPHteVRcA935n","focus":-0.07332390538186698,"gap":8.044883901643288},"startArrowhead":null,"endArrowhead":"arrow"},{"id":"JbSizVbMFS6mh42EIs3O6","type":"text","x":4042.6231438738087,"y":1780.654594043106,"width":227.13584899902344,"height":20,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":185176742,"version":32,"versionNonce":439972966,"isDeleted":false,"boundElements":null,"updated":1706597995419,"link":null,"locked":false,"text":"invalidated/optimistic update","fontSize":16,"fontFamily":1,"textAlign":"center","verticalAlign":"middle","baseline":14,"containerId":"xOt7z73HIbTPwDKLTM16E","originalText":"invalidated/optimistic update","lineHeight":1.25},{"id":"RnNCTt5a7hA8byAI0Kqhv","type":"arrow","x":4612.699007808219,"y":1652.0652308176195,"width":239.72023386066303,"height":117.60794715834209,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1434292410,"version":252,"versionNonce":137525626,"isDeleted":false,"boundElements":[{"type":"text","id":"j4xlpgM987bdm45dP1nYL"}],"updated":1706598012330,"link":null,"locked":false,"points":[[0,0],[239.72023386066303,117.60794715834209]],"lastCommittedPoint":null,"startBinding":{"elementId":"MXQEmqgs81BFd3JaMPYAY","focus":-0.19926160966795098,"gap":4.560238835424315},"endBinding":{"elementId":"r4MDKG1IZUvNAPFyIayRb","focus":-0.4503422823569495,"gap":10.472702038627176},"startArrowhead":null,"endArrowhead":"arrow"},{"id":"j4xlpgM987bdm45dP1nYL","type":"text","x":4648.180868005209,"y":1786.4988886995845,"width":172.59188842773438,"height":40,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":871442854,"version":3,"versionNonce":1198214650,"isDeleted":false,"boundElements":null,"updated":1706598003708,"link":null,"locked":false,"text":"invalidated/optimistic \nupdate","fontSize":16,"fontFamily":1,"textAlign":"center","verticalAlign":"middle","baseline":34,"containerId":"RnNCTt5a7hA8byAI0Kqhv","originalText":"invalidated/optimistic update","lineHeight":1.25}],"files":{}}

现在业务场景再升级。在每个 asset 中加入了 user 的属性,然后 user 也需要实时变化反映在 UI。由于 user 的加入,现在 query 1 中 asset 和 user 数据是耦合的,一个 user 会对应多个 asset,那么现在的直接嵌入的 user 的数据必定是冗余的。那么在更新的数据时候,我应该怎么去更新,我可能要全部遍历一遍去判断要不要去更新。这样的数据结构对于后端来说,是最简单的,毕竟 user 作为引用数据,后端在数据库查询只要两个 select 或者直接连表就行了。而对于实时数据驱动 UI 的前端来说,这样的数据在对乐观更新或者数据的局部更新确实噩梦。而下边的图中的业务场景也只是三个模块而已,在实际的业务中远不止下图的复杂度。

{"type":"excalidraw/clipboard","elements":[{"type":"rectangle","version":121,"versionNonce":382563450,"isDeleted":false,"id":"6GrV26_xbT1uUjUvjLMIb","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5385.762566037295,"y":2010.6870803145277,"strokeColor":"#1971c2","backgroundColor":"transparent","width":745.1640625,"height":439.69140625,"seed":751707558,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false},{"type":"rectangle","version":146,"versionNonce":508405798,"isDeleted":false,"id":"QwUlDXu3joKsWBxLv4WRd","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5400.180534787295,"y":2023.6948928145277,"strokeColor":"#1971c2","backgroundColor":"transparent","width":189.1015625,"height":29.765625000000007,"seed":679903462,"groupIds":[],"frameId":null,"roundness":{"type":3},"boundElements":[],"updated":1706598179345,"link":null,"locked":false},{"type":"rectangle","version":177,"versionNonce":1002807782,"isDeleted":false,"id":"UzoPZe2pggTDM9tVhpSYi","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5402.578972287295,"y":2060.999580314528,"strokeColor":"#1971c2","backgroundColor":"transparent","width":238.86328125,"height":353.32653845833295,"seed":454128678,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598195875,"link":null,"locked":false},{"type":"rectangle","version":153,"versionNonce":1945219942,"isDeleted":false,"id":"MlCTK9BNbwGVp36Db9HvV","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5411.149284787295,"y":2074.405830314528,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":220.75390625,"height":88.39800912503827,"seed":1046216550,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"ztoRZ9FLatdHA0rw0LdV_","type":"arrow"}],"updated":1706598179345,"link":null,"locked":false},{"type":"rectangle","version":244,"versionNonce":1136795130,"isDeleted":false,"id":"PjwodVxkG8-uQ_5svlnIG","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5411.553228464784,"y":2218.5231048332016,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":220.75390625,"height":65.4497835009306,"seed":112403110,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"umKZGmM_n7N6XEl8U4Fe5","type":"arrow"}],"updated":1706598179345,"link":null,"locked":false},{"type":"rectangle","version":159,"versionNonce":263874426,"isDeleted":false,"id":"QKSmVDAeTkKzdxE6wEPRd","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5672.055534787295,"y":2033.1245803145277,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":311.22265625,"height":404.6953125,"seed":196190118,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"r-jxVjFZpRwfCT9wm2rBZ","type":"arrow"},{"id":"PpZ0TYShM1W8dy9860A2S","type":"arrow"}],"updated":1706598179345,"link":null,"locked":false},{"type":"text","version":115,"versionNonce":756901158,"isDeleted":false,"id":"PMM2VyZ1CjxgUww5mt_MT","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5492.532097287295,"y":2086.042549064528,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":49.99995422363281,"height":20,"seed":283818726,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset1","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Asset1","lineHeight":1.25,"baseline":14},{"type":"text","version":92,"versionNonce":1236494394,"isDeleted":false,"id":"pKIsgKRNyUeMKPuE_t70t","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5480.448777677905,"y":2231.772507797995,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":57.05595397949219,"height":20,"seed":517893670,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset2","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Asset2","lineHeight":1.25,"baseline":14},{"type":"text","version":110,"versionNonce":105795834,"isDeleted":false,"id":"BiTFus1Lc4kqScA6yA45N","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5760.961784787295,"y":2059.050361564528,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":106.65592956542969,"height":20,"seed":587832486,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset1 Detail","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Asset1 Detail","lineHeight":1.25,"baseline":14},{"type":"rectangle","version":107,"versionNonce":154588070,"isDeleted":false,"id":"enjN00uxSqT7HxOVKbBWh","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5413.379753537295,"y":2031.2417678145277,"strokeColor":"#1e1e1e","backgroundColor":"#a5d8ff","width":62.1796875,"height":14.94140625,"seed":1446713318,"groupIds":[],"frameId":null,"roundness":{"type":3},"boundElements":[],"updated":1706598179345,"link":null,"locked":false},{"type":"rectangle","version":104,"versionNonce":1762533818,"isDeleted":false,"id":"xcIu4Szp0r5gRveHjU53Q","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":6004.743034787295,"y":2035.6089553145277,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":112.57421875,"height":203.3203125,"seed":1947937574,"groupIds":[],"frameId":null,"roundness":{"type":3},"boundElements":[{"id":"4KDlomXMvyWbSVF9k1WS3","type":"arrow"}],"updated":1706598179345,"link":null,"locked":false},{"type":"rectangle","version":157,"versionNonce":262762214,"isDeleted":false,"id":"5shZdpQQlNwQSSM9ddMQ3","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":6017.969597287295,"y":2111.226142814528,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":81.91015625,"height":30,"seed":1528223334,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"xeH6144AWuvQqQ5b8zp9F"}],"updated":1706598179345,"link":null,"locked":false},{"type":"text","version":128,"versionNonce":756406906,"isDeleted":false,"id":"xeH6144AWuvQqQ5b8zp9F","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":6026.396698422549,"y":2116.226142814528,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":65.05595397949219,"height":20,"seed":335223206,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset 2","textAlign":"center","verticalAlign":"middle","containerId":"5shZdpQQlNwQSSM9ddMQ3","originalText":"Asset 2","lineHeight":1.25,"baseline":14},{"type":"rectangle","version":173,"versionNonce":1000776230,"isDeleted":false,"id":"fEt1M0qQowNO14PHukKUw","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":6019.619987912295,"y":2168.796455314528,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":81.91015625,"height":30,"seed":99939558,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"CqxHvaBvOHmPpbCeODSUr"}],"updated":1706598179345,"link":null,"locked":false},{"type":"text","version":142,"versionNonce":824736570,"isDeleted":false,"id":"CqxHvaBvOHmPpbCeODSUr","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":6028.623093075869,"y":2173.796455314528,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":63.90394592285156,"height":20,"seed":714172454,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset 4","textAlign":"center","verticalAlign":"middle","containerId":"fEt1M0qQowNO14PHukKUw","originalText":"Asset 4","lineHeight":1.25,"baseline":14},{"type":"text","version":150,"versionNonce":807103846,"isDeleted":false,"id":"ElCWixZuS29gD5cJacfgH","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":6015.246941037295,"y":2058.616767814528,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":88.71621704101562,"height":15.406250000000004,"seed":1102934886,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"fontSize":12.325000000000003,"fontFamily":1,"text":"Related asset","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Related asset","lineHeight":1.25,"baseline":11},{"type":"rectangle","version":125,"versionNonce":61408250,"isDeleted":false,"id":"3hXXdDDt_eE-isDyFI9rj","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5697.586784787295,"y":2104.874580314528,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":246.16015625,"height":110.27734375,"seed":96868006,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false},{"type":"line","version":111,"versionNonce":710201510,"isDeleted":false,"id":"itibU-U-EPxiMj-jqjP4a","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5701.153191037295,"y":2250.827705314528,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":1599623654,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"type":"line","version":126,"versionNonce":1855616186,"isDeleted":false,"id":"Z_3P4H-RFCG4CXtPfzdDy","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5702.100456662295,"y":2273.5577152519486,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":427894054,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"type":"line","version":127,"versionNonce":905956326,"isDeleted":false,"id":"5dCVJWl_5eom3tE_pnnCk","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5702.377800412295,"y":2300.5694340019486,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":363696230,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"type":"line","version":142,"versionNonce":60804474,"isDeleted":false,"id":"hFslGPNggwNm9zICya3Gm","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5705.854362912295,"y":2329.3975590019486,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":2141885350,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"type":"arrow","version":427,"versionNonce":1630101286,"isDeleted":false,"id":"ztoRZ9FLatdHA0rw0LdV_","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5295.833889368578,"y":1929.2027053145277,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":105.77843335238867,"height":161.2492182728613,"seed":27602662,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"startBinding":{"elementId":"83LM6qIlZ2uBpfgiLKSXX","gap":3.44921875,"focus":0.5323932884599961},"endBinding":{"elementId":"MlCTK9BNbwGVp36Db9HvV","gap":9.536962066329124,"focus":-0.7278819525299088},"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"arrow","points":[[0,0],[105.77843335238867,161.2492182728613]]},{"type":"rectangle","version":166,"versionNonce":670830138,"isDeleted":false,"id":"83LM6qIlZ2uBpfgiLKSXX","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5255.399284787295,"y":1877.1831740645277,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":131.40234375,"height":48.5703125,"seed":2016043558,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"ztoRZ9FLatdHA0rw0LdV_","type":"arrow"},{"id":"umKZGmM_n7N6XEl8U4Fe5","type":"arrow"}],"updated":1706598179345,"link":null,"locked":false},{"type":"text","version":71,"versionNonce":1883146854,"isDeleted":false,"id":"2zpcjRDnw2Z-gv1dDINQk","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5278.930534787295,"y":1890.1206740645277,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":68.63995361328125,"height":20,"seed":640101734,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"module A","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"module A","lineHeight":1.25,"baseline":14},{"type":"rectangle","version":148,"versionNonce":546453242,"isDeleted":false,"id":"phIc8MgO6t8z9rFZb5BdZ","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5733.635225709165,"y":1874.1354108365101,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":131.40234375,"height":48.5703125,"seed":1760071846,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"-dcnmTpMsXuMEOOpUMEOn"},{"id":"r-jxVjFZpRwfCT9wm2rBZ","type":"arrow"},{"id":"PpZ0TYShM1W8dy9860A2S","type":"arrow"}],"updated":1706598179345,"link":null,"locked":false},{"type":"text","version":92,"versionNonce":302796198,"isDeleted":false,"id":"-dcnmTpMsXuMEOOpUMEOn","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5764.448419984067,"y":1888.4205670865101,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":69.77595520019531,"height":20,"seed":1813744614,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"module B","textAlign":"center","verticalAlign":"middle","containerId":"phIc8MgO6t8z9rFZb5BdZ","originalText":"module B","lineHeight":1.25,"baseline":14},{"type":"arrow","version":218,"versionNonce":501565370,"isDeleted":false,"id":"r-jxVjFZpRwfCT9wm2rBZ","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5793.984549444941,"y":1929.2057233365101,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":0.449616844846787,"height":99.66495072801808,"seed":1573723942,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"startBinding":{"elementId":"phIc8MgO6t8z9rFZb5BdZ","focus":0.07921151526590905,"gap":6.5},"endBinding":{"elementId":"QKSmVDAeTkKzdxE6wEPRd","focus":-0.22401631157272864,"gap":4.253906249999432},"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"arrow","points":[[0,0],[-0.449616844846787,99.66495072801808]]},{"type":"rectangle","version":102,"versionNonce":331327718,"isDeleted":false,"id":"Kx3HIHTyiIUJBvQAuQERw","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":6152.250684425407,"y":1954.4003713880622,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":162.00390625,"height":53.453125,"seed":577391206,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"5hkKcl8D53EWSVwo3hlII"},{"id":"4KDlomXMvyWbSVF9k1WS3","type":"arrow"},{"id":"uBlnn_5Nx94q-8D9A85EJ","type":"arrow"}],"updated":1706598179345,"link":null,"locked":false},{"type":"text","version":99,"versionNonce":1209548922,"isDeleted":false,"id":"5hkKcl8D53EWSVwo3hlII","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":6199.028661415153,"y":1971.1269338880622,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":68.44795227050781,"height":20,"seed":146804134,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"module C","textAlign":"center","verticalAlign":"middle","containerId":"Kx3HIHTyiIUJBvQAuQERw","originalText":"module C","lineHeight":1.25,"baseline":14},{"type":"arrow","version":120,"versionNonce":350592038,"isDeleted":false,"id":"uBlnn_5Nx94q-8D9A85EJ","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":6143.016889351268,"y":1980.561621797888,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":71.77385456397315,"height":57.68795851664004,"seed":2113628390,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"startBinding":{"elementId":"Kx3HIHTyiIUJBvQAuQERw","focus":0.7959348473885566,"gap":9.23379507413847},"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"arrow","points":[[0,0],[-71.77385456397315,57.68795851664004]]},{"type":"arrow","version":321,"versionNonce":1257120058,"isDeleted":false,"id":"umKZGmM_n7N6XEl8U4Fe5","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5252.558095049727,"y":1932.2366446382664,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":45.00426379397504,"height":53.86058278930932,"seed":1101618214,"groupIds":[],"frameId":null,"roundness":{"type":2},"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"startBinding":{"elementId":"83LM6qIlZ2uBpfgiLKSXX","focus":0.49810147449285,"gap":6.48315807373865},"endBinding":{"elementId":"kM1F6PGq8e0exqgDc74iu","focus":-0.3936223901165847,"gap":12.067558867745788},"lastCommittedPoint":null,"startArrowhead":"arrow","endArrowhead":null,"points":[[0,0],[-45.00426379397504,53.86058278930932]]},{"type":"rectangle","version":113,"versionNonce":1040336614,"isDeleted":false,"id":"kM1F6PGq8e0exqgDc74iu","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5135.470735957547,"y":1998.1647862953216,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":146.51171874999994,"height":69.390625,"seed":431417190,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"umKZGmM_n7N6XEl8U4Fe5","type":"arrow"},{"type":"text","id":"Tc0EvTqUh8ZWzd0zXDjHD"},{"id":"z-o5dv1ENa0AM1oIfDmW4","type":"arrow"},{"id":"U9yFxDAfXXdVySkZ1OHKn","type":"arrow"}],"updated":1706598277490,"link":null,"locked":false},{"type":"text","version":122,"versionNonce":1640622586,"isDeleted":false,"id":"Tc0EvTqUh8ZWzd0zXDjHD","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5182.078607966824,"y":2022.8600987953216,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":53.29597473144531,"height":20,"seed":108071590,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"query 1","textAlign":"center","verticalAlign":"middle","containerId":"kM1F6PGq8e0exqgDc74iu","originalText":"query 1","lineHeight":1.25,"baseline":14},{"type":"arrow","version":705,"versionNonce":1738361510,"isDeleted":false,"id":"PpZ0TYShM1W8dy9860A2S","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5729.619718418667,"y":1910.8423665394364,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":57.43571151836477,"height":9.669623817329011,"seed":1988412902,"groupIds":[],"frameId":null,"roundness":{"type":2},"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"startBinding":{"elementId":"phIc8MgO6t8z9rFZb5BdZ","focus":-0.683493933289368,"gap":4.015507290498135},"endBinding":{"elementId":"mldXrPHEFY1YZSbHCU2Bs","focus":-0.4256615585352364,"gap":6.034683340822085},"lastCommittedPoint":null,"startArrowhead":"arrow","endArrowhead":null,"points":[[0,0],[-57.43571151836477,-9.669623817329011]]},{"type":"rectangle","version":247,"versionNonce":1672387258,"isDeleted":false,"id":"mldXrPHEFY1YZSbHCU2Bs","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5519.63760480948,"y":1873.1465825429239,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":146.51171874999994,"height":69.390625,"seed":2063538470,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"PpZ0TYShM1W8dy9860A2S","type":"arrow"},{"type":"text","id":"LquYj5L-JwcfGmnvRLmYk"}],"updated":1706598179345,"link":null,"locked":false},{"type":"text","version":258,"versionNonce":1747518950,"isDeleted":false,"id":"LquYj5L-JwcfGmnvRLmYk","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5562.7174769408275,"y":1897.8418950429239,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":60.35197448730469,"height":20,"seed":2068644966,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"query 2","textAlign":"center","verticalAlign":"middle","containerId":"mldXrPHEFY1YZSbHCU2Bs","originalText":"query 2","lineHeight":1.25,"baseline":14},{"type":"arrow","version":552,"versionNonce":320005882,"isDeleted":false,"id":"4KDlomXMvyWbSVF9k1WS3","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":6218.448472634216,"y":1951.6057702971332,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":1.0716748016147903,"height":63.488418328856596,"seed":1765509030,"groupIds":[],"frameId":null,"roundness":{"type":2},"boundElements":[],"updated":1706598216405,"link":null,"locked":false,"startBinding":{"elementId":"Kx3HIHTyiIUJBvQAuQERw","focus":-0.19093481077621188,"gap":2.7946010909290635},"endBinding":{"elementId":"q9_XjoE6esRhYMcySkeMX","focus":0.2748377420119242,"gap":3.170458923030992},"lastCommittedPoint":null,"startArrowhead":"arrow","endArrowhead":null,"points":[[0,0],[1.0716748016147903,-63.488418328856596]]},{"type":"rectangle","version":169,"versionNonce":1012737210,"isDeleted":false,"id":"q9_XjoE6esRhYMcySkeMX","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":6167.197890633348,"y":1815.5562680452456,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":146.51171874999994,"height":69.390625,"seed":1962386150,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"4KDlomXMvyWbSVF9k1WS3","type":"arrow"},{"type":"text","id":"r68onay3egBmMfrXSkwH1"}],"updated":1706598216405,"link":null,"locked":false},{"type":"text","version":187,"versionNonce":1703705978,"isDeleted":false,"id":"r68onay3egBmMfrXSkwH1","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":6210.525763863328,"y":1840.2515805452456,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":59.85597229003906,"height":20,"seed":1091458598,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598216405,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"query 3","textAlign":"center","verticalAlign":"middle","containerId":"q9_XjoE6esRhYMcySkeMX","originalText":"query 3","lineHeight":1.25,"baseline":14},{"type":"text","version":253,"versionNonce":14763110,"isDeleted":false,"id":"UPK_V9R-fBqpdD8TaChJk","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5720.646879505259,"y":1670.4096122642193,"strokeColor":"#e03131","backgroundColor":"transparent","width":117.39192199707031,"height":20,"seed":376217958,"groupIds":["O7NY1W3EcfAHxoHWP_-dj"],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"user 1 updated","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"user 1 updated","lineHeight":1.25,"baseline":14},{"type":"ellipse","version":237,"versionNonce":436803110,"isDeleted":false,"id":"CLCxTWVs9ecBpWZ9VqGee","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5595.686396023632,"y":1609.4131331365238,"strokeColor":"#e03131","backgroundColor":"transparent","width":373.7411955749936,"height":132.80868122625452,"seed":408913062,"groupIds":["O7NY1W3EcfAHxoHWP_-dj"],"frameId":null,"roundness":null,"boundElements":[{"id":"z-o5dv1ENa0AM1oIfDmW4","type":"arrow"}],"updated":1706598214536,"link":null,"locked":false},{"type":"arrow","version":99,"versionNonce":843564966,"isDeleted":false,"id":"z-o5dv1ENa0AM1oIfDmW4","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5671.677962872915,"y":1732.966637473873,"strokeColor":"#e03131","backgroundColor":"transparent","width":405.01411350673607,"height":257.1532649198052,"seed":2022965222,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"cVMUnwC0gCSIppICqkafd"}],"updated":1706598179345,"link":null,"locked":false,"startBinding":{"elementId":"CLCxTWVs9ecBpWZ9VqGee","focus":0.0976115376464765,"gap":3.8369831132577445},"endBinding":{"elementId":"kM1F6PGq8e0exqgDc74iu","focus":-0.07332390538186744,"gap":8.044883901643175},"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"arrow","points":[[0,0],[-405.01411350673607,257.1532649198052]]},{"type":"text","version":37,"versionNonce":1287024058,"isDeleted":false,"id":"cVMUnwC0gCSIppICqkafd","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5297.950611744118,"y":1841.4644331211985,"strokeColor":"#e03131","backgroundColor":"transparent","width":227.13584899902344,"height":20,"seed":722932518,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"invalidated/optimistic update","textAlign":"center","verticalAlign":"middle","containerId":"z-o5dv1ENa0AM1oIfDmW4","originalText":"invalidated/optimistic update","lineHeight":1.25,"baseline":14},{"id":"OW3DpIRP-vdrmvoqiZeVR","type":"text","x":5434.540821980712,"y":2128.51592874365,"width":45.74397277832031,"height":20,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1017930554,"version":25,"versionNonce":1678415398,"isDeleted":false,"boundElements":null,"updated":1706598179345,"link":null,"locked":false,"text":"user 1","fontSize":16,"fontFamily":1,"textAlign":"left","verticalAlign":"top","baseline":14,"containerId":null,"originalText":"user 1","lineHeight":1.25},{"type":"text","version":66,"versionNonce":674088762,"isDeleted":false,"id":"su19BYt0psoqOJlBkhWdi","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5433.534057636311,"y":2258.356976824361,"strokeColor":"#e03131","backgroundColor":"transparent","width":45.74397277832031,"height":20,"seed":1445755174,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598179345,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"user 1","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"user 1","lineHeight":1.25,"baseline":14},{"type":"rectangle","version":371,"versionNonce":1174022630,"isDeleted":false,"id":"Wz8r7enVSCfB1GeMbzur5","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5415.207733634266,"y":2323.6225476904065,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":220.75390625,"height":65.4497835009306,"seed":2045483770,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598198537,"link":null,"locked":false},{"type":"text","version":223,"versionNonce":828728294,"isDeleted":false,"id":"k1Og-JamsygaMrLOCOGwx","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5484.103282847387,"y":2336.8719506551997,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":56.55995178222656,"height":20,"seed":1316105146,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598200816,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset3","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Asset3","lineHeight":1.25,"baseline":14},{"type":"text","version":196,"versionNonce":1136574310,"isDeleted":false,"id":"c3QUR65Ynil1UUWx1Hlr8","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":5437.231501273698,"y":2363.4564196815654,"strokeColor":"#e03131","backgroundColor":"transparent","width":52.79997253417969,"height":20,"seed":493397114,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706598203700,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"user 2","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"user 2","lineHeight":1.25,"baseline":14},{"id":"EX9pEWfTnTiNDlGvrcG6D","type":"text","x":5164.8204503729585,"y":2156.6263123979625,"width":143.96791076660156,"height":120,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1135864870,"version":81,"versionNonce":1710270566,"isDeleted":false,"boundElements":[{"id":"U9yFxDAfXXdVySkZ1OHKn","type":"arrow"}],"updated":1706598277490,"link":null,"locked":false,"text":"{\n   \"data\": [{\n       asset: {...}\n       user: {...}\n   }]\n}","fontSize":16,"fontFamily":1,"textAlign":"left","verticalAlign":"top","baseline":114,"containerId":null,"originalText":"{\n   \"data\": [{\n       asset: {...}\n       user: {...}\n   }]\n}","lineHeight":1.25},{"id":"3WrGvOU1HF86U-8wEwlj8","type":"rectangle","x":5128.756908274699,"y":2130.5960589665424,"width":200.37474594322157,"height":160.70914348192628,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":3},"seed":1521901222,"version":42,"versionNonce":576961510,"isDeleted":false,"boundElements":null,"updated":1706598274511,"link":null,"locked":false},{"id":"U9yFxDAfXXdVySkZ1OHKn","type":"arrow","x":5216.971605112484,"y":2132.1800113381023,"width":0.677473604703664,"height":61.86479036752689,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":2},"seed":1127030330,"version":26,"versionNonce":130722726,"isDeleted":false,"boundElements":null,"updated":1706598277490,"link":null,"locked":false,"points":[[0,0],[0.677473604703664,-61.86479036752689]],"lastCommittedPoint":null,"startBinding":{"elementId":"EX9pEWfTnTiNDlGvrcG6D","focus":-0.2857554177160317,"gap":24.44630105986016},"endBinding":{"elementId":"kM1F6PGq8e0exqgDc74iu","focus":-0.12674065229120093,"gap":2.7598096752541323},"startArrowhead":null,"endArrowhead":"arrow"}],"files":{}}

那么,在实际的场景下,有没有办法去解决这一个问题。

首先,需要后端和前端达成共识,将冗余数据消除,换句话说,后端不能把数据库连表产生的数据直接扔给前端。而是在请求中设立一个对象专门托管这些引用数据。

比如下面的数据:

{
  "data": [
    {
      "user": {
        "id": "1234axz",
        "name": "John Doe"
      },
      "id": "ax4axz",
      "name": "Fake"
    },
    {
      "user": {
        "id": "1234axq",
        "name": "John Doe"
      },
      "id": "ax4axc",
      "name": "Fake 2"
    }
  ]
}

转成为例如这样的数据:

{
  "data": [
    {
      "userId": "1234axz",
      "id": "ax4axz",
      "name": "Fake"
    },
    {
      "userId": "1234axz",
      "id": "ax4axc",
      "name": "Fake 2"
    }
  ],
  "objects": {
    "users": {
      "1234axz": {
        "id": "1234axz",
        "name": "John Doe"
      }
    }
  }
}

这样就消除了多余数据,并且数据的分层明确,在 data 中的数据是我们查询的而其中引用的其他数据放置在 objects 中,objects 后续可以扩展出其他的数据类型。

前端需要对各个模块的数据请求之后,在一个集中式的数据层进行管理。我们可以简单的用 zustand 或者 jotai 建立每个数据对象的表管理。这里简单的代码示例如下。

import { useShallow } from 'zustand/react/shallow'
import { create } from 'zustand'

type Id = string
export type CollectionType<T extends { id: string }> = Record<Id, T>

const useAssetStore = create<{
  data: CollectionType<AssetModel>
}>(() => {
  return { data: {} }
})

export const {
  add: addDrips,
  patch: patchDrip,
  remove: deleteDrip,
  get: getDrip,
  getAll: getAllDrips,
} = baseCollectionMethodsFactory(useAssetStore) // baseCollectionMethodsFactory 作为你的 collection 方法扩展

export const useAssetSelector = <Value>(
  id: string,
  selector: (data?: AssetModel) => Value,
) => {
  return useAssetStore(
    useShallow(({ data }) => {
      const drip = data[id]
      return selector(drip)
    }),
  )
}

经过这样的处理之后,现在的页面上的数据变化如下:

{"type":"excalidraw/clipboard","elements":[{"type":"rectangle","version":112,"versionNonce":862057722,"isDeleted":false,"id":"TbloY1kVyAE9khJ5bESCB","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7227.212158675156,"y":2099.536312289113,"strokeColor":"#1971c2","backgroundColor":"transparent","width":745.1640625,"height":439.69140625,"seed":1846406246,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false},{"type":"rectangle","version":137,"versionNonce":2081244602,"isDeleted":false,"id":"D0SliPP_lUoIuraHqIaut","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7241.630127425156,"y":2112.544124789113,"strokeColor":"#1971c2","backgroundColor":"transparent","width":189.1015625,"height":29.765625000000007,"seed":597651366,"groupIds":[],"frameId":null,"roundness":{"type":3},"boundElements":[],"updated":1706601042653,"link":null,"locked":false},{"type":"rectangle","version":107,"versionNonce":1552973434,"isDeleted":false,"id":"Xa3QfM-h26V353G4Xqgid","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7244.028564925156,"y":2149.848812289113,"strokeColor":"#1971c2","backgroundColor":"transparent","width":238.86328125,"height":280.91796875,"seed":178162406,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false},{"type":"rectangle","version":125,"versionNonce":939837754,"isDeleted":false,"id":"Y2geabDSkF9JyeT9QpTD5","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7252.598877425155,"y":2163.255062289113,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":220.75390625,"height":45.94140625,"seed":1368931878,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"kfHlrbW3PBdyL0S-tNxWC","type":"arrow"},{"id":"6O36I3Edpp06G3QbwcOTk","type":"arrow"}],"updated":1706601159268,"link":null,"locked":false},{"type":"rectangle","version":181,"versionNonce":130721786,"isDeleted":false,"id":"Y9NoPL3aJCzH7m5UCXFsx","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7256.194580550155,"y":2222.874202914113,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":220.75390625,"height":45.94140625,"seed":1299810662,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"O4iWYj5gGmCz9Ipg7ie8D","type":"arrow"}],"updated":1706601042653,"link":null,"locked":false},{"type":"rectangle","version":225,"versionNonce":1189583034,"isDeleted":false,"id":"-DxxPhmV6KkqguYr9lBa8","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7257.202393050155,"y":2288.999202914113,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":220.75390625,"height":45.94140625,"seed":764374182,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false},{"type":"rectangle","version":250,"versionNonce":514355578,"isDeleted":false,"id":"3FVQ21mGlMYurN0tZdJVl","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7255.952393050155,"y":2353.717952914113,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":220.75390625,"height":45.94140625,"seed":797370342,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"-ZLT5sLceEnMZ-mjGfO2c"}],"updated":1706601042653,"link":null,"locked":false},{"type":"text","version":57,"versionNonce":575681082,"isDeleted":false,"id":"-ZLT5sLceEnMZ-mjGfO2c","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7338.377373213729,"y":2366.688656039113,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":55.90394592285156,"height":20,"seed":1399651110,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset4","textAlign":"center","verticalAlign":"middle","containerId":"3FVQ21mGlMYurN0tZdJVl","originalText":"Asset4","lineHeight":1.25,"baseline":14},{"type":"rectangle","version":151,"versionNonce":721583526,"isDeleted":false,"id":"4zJP1Hbto6sldA98nZVIn","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7513.505127425155,"y":2121.973812289113,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":311.22265625,"height":404.6953125,"seed":263104102,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"ZZOSyth4y8bPd2BP91Chk","type":"arrow"},{"id":"8XVqcRAWfPcDQUuzJAR7s","type":"arrow"},{"id":"Bh-cT8z-GpBi6QgDNyfDx","type":"arrow"}],"updated":1706601169379,"link":null,"locked":false},{"type":"text","version":106,"versionNonce":612395962,"isDeleted":false,"id":"SJfTls14ie_VsdluNyv02","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7333.981689925155,"y":2174.891781039113,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":49.99995422363281,"height":20,"seed":85518758,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset1","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Asset1","lineHeight":1.25,"baseline":14},{"type":"text","version":59,"versionNonce":397337722,"isDeleted":false,"id":"nBCiol0hL1GIrS8405Twm","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7332.380127425155,"y":2242.969906039113,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":57.05595397949219,"height":20,"seed":853066982,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset2","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Asset2","lineHeight":1.25,"baseline":14},{"type":"text","version":57,"versionNonce":940590394,"isDeleted":false,"id":"qI79V4LfSjtBC03hKcx-Q","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7334.380127425155,"y":2307.969906039113,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":56.55995178222656,"height":20,"seed":712718374,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset3","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Asset3","lineHeight":1.25,"baseline":14},{"type":"text","version":101,"versionNonce":789024250,"isDeleted":false,"id":"rwZ9_k8-Gsko_glWRDwCj","fillStyle":"cross-hatch","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7602.411377425155,"y":2147.899593539113,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":106.65592956542969,"height":20,"seed":1139622758,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset1 Detail","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Asset1 Detail","lineHeight":1.25,"baseline":14},{"type":"rectangle","version":98,"versionNonce":26721978,"isDeleted":false,"id":"cXqXrskrk4zjb7osbwqEz","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7254.829346175155,"y":2120.090999789113,"strokeColor":"#1e1e1e","backgroundColor":"#a5d8ff","width":62.1796875,"height":14.94140625,"seed":1367074470,"groupIds":[],"frameId":null,"roundness":{"type":3},"boundElements":[],"updated":1706601042653,"link":null,"locked":false},{"type":"rectangle","version":95,"versionNonce":476305274,"isDeleted":false,"id":"SZBn3fnspYbMPaxTGdkKO","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7846.192627425155,"y":2124.458187289113,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":112.57421875,"height":203.3203125,"seed":1406411238,"groupIds":[],"frameId":null,"roundness":{"type":3},"boundElements":[{"id":"0TvP-CbkBoNFEq6K9aIae","type":"arrow"}],"updated":1706601042653,"link":null,"locked":false},{"type":"rectangle","version":148,"versionNonce":1605294138,"isDeleted":false,"id":"sUhrPq8Sj2L9dJKomhUU4","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7859.419189925155,"y":2200.075374789113,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":81.91015625,"height":30,"seed":771945766,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"aCsDVhIAnC9dQNwVj_lNR"}],"updated":1706601042653,"link":null,"locked":false},{"type":"text","version":119,"versionNonce":727433466,"isDeleted":false,"id":"aCsDVhIAnC9dQNwVj_lNR","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7867.8462910604085,"y":2205.075374789113,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":65.05595397949219,"height":20,"seed":1500864614,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset 2","textAlign":"center","verticalAlign":"middle","containerId":"sUhrPq8Sj2L9dJKomhUU4","originalText":"Asset 2","lineHeight":1.25,"baseline":14},{"type":"rectangle","version":164,"versionNonce":1793954234,"isDeleted":false,"id":"NcwXITi7HAMFSa3iMJxPr","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7861.069580550155,"y":2257.645687289113,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":81.91015625,"height":30,"seed":435708838,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"YTJLpzETMfr9yLOxgYSWD"}],"updated":1706601042653,"link":null,"locked":false},{"type":"text","version":133,"versionNonce":562514554,"isDeleted":false,"id":"YTJLpzETMfr9yLOxgYSWD","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7870.072685713729,"y":2262.645687289113,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":63.90394592285156,"height":20,"seed":834207462,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"Asset 4","textAlign":"center","verticalAlign":"middle","containerId":"NcwXITi7HAMFSa3iMJxPr","originalText":"Asset 4","lineHeight":1.25,"baseline":14},{"type":"text","version":141,"versionNonce":1978395450,"isDeleted":false,"id":"1XCB33xTiGsQu-piFGuew","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7856.696533675155,"y":2147.465999789113,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":88.71621704101562,"height":15.406250000000004,"seed":356790822,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"fontSize":12.325000000000003,"fontFamily":1,"text":"Related asset","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"Related asset","lineHeight":1.25,"baseline":11},{"type":"rectangle","version":116,"versionNonce":1048474618,"isDeleted":false,"id":"dS1GOY3XrMIyfKEjHu94F","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7539.036377425155,"y":2193.723812289113,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":246.16015625,"height":110.27734375,"seed":528940390,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false},{"type":"line","version":102,"versionNonce":222422202,"isDeleted":false,"id":"1tyEvl3lEYRwTS98HBv67","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7542.602783675155,"y":2339.676937289113,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":1171153062,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"type":"line","version":117,"versionNonce":1004092794,"isDeleted":false,"id":"SGbc3LGDa0ZdC1WrGF3ug","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7543.550049300155,"y":2362.4069472265337,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":1271356390,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"type":"line","version":118,"versionNonce":2005368378,"isDeleted":false,"id":"MuYMlGV8Jv6LYjBdz1Tr0","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7543.827393050155,"y":2389.4186659765337,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":2004807462,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"type":"line","version":133,"versionNonce":1294968570,"isDeleted":false,"id":"JtpUvZenZdaUBnjW2rTkS","fillStyle":"hachure","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7547.303955550155,"y":2418.2467909765337,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":224.93359375,"height":0.6640625,"seed":1164057190,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"startBinding":null,"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":null,"points":[[0,0],[224.93359375,0.6640625]]},{"type":"arrow","version":358,"versionNonce":894744506,"isDeleted":false,"id":"kfHlrbW3PBdyL0S-tNxWC","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7139.06714388034,"y":2018.0519372891129,"strokeColor":"#1e1e1e","backgroundColor":"#e9ecef","width":105.34277079651565,"height":135.66616293367088,"seed":473816486,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"startBinding":{"elementId":"IrVKIy-Z3QR2_ZjVUC2kd","focus":0.5323932884599961,"gap":3.44921875},"endBinding":{"elementId":"Y2geabDSkF9JyeT9QpTD5","focus":-0.7278819525299034,"gap":9.536962066329238},"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"arrow","points":[[0,0],[105.34277079651565,135.66616293367088]]},{"type":"rectangle","version":159,"versionNonce":415323558,"isDeleted":false,"id":"IrVKIy-Z3QR2_ZjVUC2kd","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7096.848877425156,"y":1966.0324060391129,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":131.40234375,"height":48.5703125,"seed":20920550,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"kfHlrbW3PBdyL0S-tNxWC","type":"arrow"},{"id":"CnfDlGmhMoXKFXYjwtp1Q","type":"arrow"}],"updated":1706601151544,"link":null,"locked":false},{"type":"text","version":62,"versionNonce":21074234,"isDeleted":false,"id":"5woBHpLlqOvs-0ByIY_mb","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7120.380127425156,"y":1978.9699060391129,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":68.63995361328125,"height":20,"seed":1274227750,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"module A","textAlign":"left","verticalAlign":"top","containerId":null,"originalText":"module A","lineHeight":1.25,"baseline":14},{"type":"rectangle","version":139,"versionNonce":1546607098,"isDeleted":false,"id":"rMhFu5oH63hbYeBu9MHDM","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7575.084818347024,"y":1962.9846428110952,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":131.40234375,"height":48.5703125,"seed":1514583910,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"cLUWbld5uayydR9diEyDj"},{"id":"ZZOSyth4y8bPd2BP91Chk","type":"arrow"},{"id":"8XVqcRAWfPcDQUuzJAR7s","type":"arrow"}],"updated":1706601042653,"link":null,"locked":false},{"type":"text","version":83,"versionNonce":1340476090,"isDeleted":false,"id":"cLUWbld5uayydR9diEyDj","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7605.898012621927,"y":1977.2697990610952,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":69.77595520019531,"height":20,"seed":1149688486,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"module B","textAlign":"center","verticalAlign":"middle","containerId":"rMhFu5oH63hbYeBu9MHDM","originalText":"module B","lineHeight":1.25,"baseline":14},{"type":"arrow","version":189,"versionNonce":587768698,"isDeleted":false,"id":"ZZOSyth4y8bPd2BP91Chk","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7635.4341420828005,"y":2018.0549553110952,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":0.449616844846787,"height":99.66495072801808,"seed":291542502,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"startBinding":{"elementId":"rMhFu5oH63hbYeBu9MHDM","focus":0.07564800794178884,"gap":6.5},"endBinding":{"elementId":"4zJP1Hbto6sldA98nZVIn","focus":-0.2240163115727252,"gap":4.253906250000114},"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"arrow","points":[[0,0],[-0.449616844846787,99.66495072801808]]},{"type":"rectangle","version":93,"versionNonce":1339696186,"isDeleted":false,"id":"qaqjKYk0f-3M2fa4EW-tq","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7993.700277063266,"y":2043.2496033626473,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":162.00390625,"height":53.453125,"seed":1776347430,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"vIMylHX92fk-yxbmP1_iZ"},{"id":"0TvP-CbkBoNFEq6K9aIae","type":"arrow"},{"id":"HAak5F1j_mek3MYj8Pj-t","type":"arrow"}],"updated":1706601042653,"link":null,"locked":false},{"type":"text","version":90,"versionNonce":272469242,"isDeleted":false,"id":"vIMylHX92fk-yxbmP1_iZ","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":8040.478254053012,"y":2059.9761658626476,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":68.44795227050781,"height":20,"seed":1299502182,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"module C","textAlign":"center","verticalAlign":"middle","containerId":"qaqjKYk0f-3M2fa4EW-tq","originalText":"module C","lineHeight":1.25,"baseline":14},{"type":"arrow","version":101,"versionNonce":1773526458,"isDeleted":false,"id":"HAak5F1j_mek3MYj8Pj-t","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7984.466481989128,"y":2069.4108537724733,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":71.77385456397315,"height":57.68795851664004,"seed":1172920230,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"startBinding":{"elementId":"qaqjKYk0f-3M2fa4EW-tq","focus":0.7959348473885588,"gap":9.23379507413847},"endBinding":null,"lastCommittedPoint":null,"startArrowhead":null,"endArrowhead":"arrow","points":[[0,0],[-71.77385456397315,57.68795851664004]]},{"type":"arrow","version":378,"versionNonce":1898456742,"isDeleted":false,"id":"O4iWYj5gGmCz9Ipg7ie8D","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7105.186002165194,"y":1804.5042445064087,"strokeColor":"#0c8599","backgroundColor":"transparent","width":87.56582736833298,"height":275.0127762570605,"seed":460026598,"groupIds":[],"frameId":null,"roundness":{"type":2},"boundElements":[{"type":"text","id":"PznvTJOE3GEy4n3CAkWoc"}],"updated":1706601201090,"link":null,"locked":false,"startBinding":{"elementId":"io6B5sA5zbp_lx5y5iMyT","focus":0.4032242764882537,"gap":7.392181984668696},"endBinding":{"elementId":"o0mNcECzHyuVGH2EZ7SBw","focus":-0.5455354738545282,"gap":7.496997506437765},"lastCommittedPoint":null,"startArrowhead":"arrow","endArrowhead":null,"points":[[0,0],[-87.56582736833298,275.0127762570605]]},{"id":"PznvTJOE3GEy4n3CAkWoc","type":"text","x":7034.131108195383,"y":1932.010632634939,"width":54.54396057128906,"height":20,"angle":0,"strokeColor":"#0c8599","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1710082406,"version":7,"versionNonce":1060635962,"isDeleted":false,"boundElements":null,"updated":1706601199732,"link":null,"locked":false,"text":"update","fontSize":16,"fontFamily":1,"textAlign":"center","verticalAlign":"middle","baseline":14,"containerId":"O4iWYj5gGmCz9Ipg7ie8D","originalText":"update","lineHeight":1.25},{"type":"rectangle","version":104,"versionNonce":2146883322,"isDeleted":false,"id":"o0mNcECzHyuVGH2EZ7SBw","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":6976.920328595408,"y":2087.014018269907,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":146.51171874999994,"height":69.390625,"seed":143140390,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"O4iWYj5gGmCz9Ipg7ie8D","type":"arrow"},{"type":"text","id":"6D6h7moNyDMy7b3tH99mz"}],"updated":1706601049308,"link":null,"locked":false},{"type":"text","version":112,"versionNonce":773472250,"isDeleted":false,"id":"6D6h7moNyDMy7b3tH99mz","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7023.5282006046855,"y":2111.709330769907,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":53.29597473144531,"height":20,"seed":1848406374,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"query 1","textAlign":"center","verticalAlign":"middle","containerId":"o0mNcECzHyuVGH2EZ7SBw","originalText":"query 1","lineHeight":1.25,"baseline":14},{"type":"arrow","version":676,"versionNonce":797192378,"isDeleted":false,"id":"8XVqcRAWfPcDQUuzJAR7s","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7571.069311056528,"y":1999.6915985140215,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":57.43571151836477,"height":9.669623817329011,"seed":128275622,"groupIds":[],"frameId":null,"roundness":{"type":2},"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"startBinding":{"elementId":"rMhFu5oH63hbYeBu9MHDM","focus":-0.6798446100181246,"gap":4.015507290497226},"endBinding":{"elementId":"Pgz95U5heqEOwprr59mMX","focus":-0.4256615585352386,"gap":6.034683340822994},"lastCommittedPoint":null,"startArrowhead":"arrow","endArrowhead":null,"points":[[0,0],[-57.43571151836477,-9.669623817329011]]},{"type":"rectangle","version":239,"versionNonce":1280120570,"isDeleted":false,"id":"Pgz95U5heqEOwprr59mMX","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7361.087197447339,"y":1961.995814517509,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":146.51171874999994,"height":69.390625,"seed":513789926,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"8XVqcRAWfPcDQUuzJAR7s","type":"arrow"},{"type":"text","id":"qGp1tQavGdryehpA-Vkpp"},{"id":"g8_xSAMpHjkrwvRHRSHFb","type":"arrow"}],"updated":1706601139628,"link":null,"locked":false},{"type":"text","version":249,"versionNonce":1319553594,"isDeleted":false,"id":"qGp1tQavGdryehpA-Vkpp","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7404.167069578687,"y":1986.691127017509,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":60.35197448730469,"height":20,"seed":1059644198,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"query 2","textAlign":"center","verticalAlign":"middle","containerId":"Pgz95U5heqEOwprr59mMX","originalText":"query 2","lineHeight":1.25,"baseline":14},{"type":"arrow","version":497,"versionNonce":444953338,"isDeleted":false,"id":"0TvP-CbkBoNFEq6K9aIae","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":8061.272989283587,"y":2040.4550022717183,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":5.330942072243488,"height":63.90826112613763,"seed":1806536294,"groupIds":[],"frameId":null,"roundness":{"type":2},"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"startBinding":{"elementId":"qaqjKYk0f-3M2fa4EW-tq","focus":-0.18859896839568596,"gap":2.7946010909295183},"endBinding":{"elementId":"nfenHRzbOTUKwpZjCY6rj","focus":0.274837742011927,"gap":3.170458923030992},"lastCommittedPoint":null,"startArrowhead":"arrow","endArrowhead":null,"points":[[0,0],[5.330942072243488,-63.90826112613763]]},{"type":"rectangle","version":148,"versionNonce":726538982,"isDeleted":false,"id":"nfenHRzbOTUKwpZjCY6rj","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":8017.435556368839,"y":1903.9856572225497,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":146.51171874999994,"height":69.390625,"seed":1358614950,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[{"id":"0TvP-CbkBoNFEq6K9aIae","type":"arrow"},{"type":"text","id":"WM4RD4A6aKfEa78BMxjoy"},{"id":"yyOFKoMQN9YVCi_hbN_nN","type":"arrow"}],"updated":1706601137245,"link":null,"locked":false},{"type":"text","version":165,"versionNonce":325876858,"isDeleted":false,"id":"WM4RD4A6aKfEa78BMxjoy","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":8060.763429598819,"y":1928.6809697225497,"strokeColor":"#1e1e1e","backgroundColor":"transparent","width":59.85597229003906,"height":20,"seed":2050862310,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601042653,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"query 3","textAlign":"center","verticalAlign":"middle","containerId":"nfenHRzbOTUKwpZjCY6rj","originalText":"query 3","lineHeight":1.25,"baseline":14},{"id":"i6P1jyBivrXjnAJK_pgFP","type":"rectangle","x":6997.219568164886,"y":1662.2709604813754,"width":1109.0720003082233,"height":177.60304513160713,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":3},"seed":80283878,"version":43,"versionNonce":2018747622,"isDeleted":false,"boundElements":[],"updated":1706601090235,"link":null,"locked":false},{"id":"DV0Eiz1YOHtwvO4BWV2wH","type":"text","x":7482.615093112227,"y":1619.0032976570444,"width":118.46394348144531,"height":20,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":731422714,"version":49,"versionNonce":617794938,"isDeleted":false,"boundElements":null,"updated":1706601074950,"link":null,"locked":false,"text":"data collection","fontSize":16,"fontFamily":1,"textAlign":"left","verticalAlign":"top","baseline":14,"containerId":null,"originalText":"data collection","lineHeight":1.25},{"id":"io6B5sA5zbp_lx5y5iMyT","type":"rectangle","x":7093.88837223883,"y":1697.9719110728925,"width":119.97485026391587,"height":99.14015144884752,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":3},"seed":2015070822,"version":39,"versionNonce":517205542,"isDeleted":false,"boundElements":[{"type":"text","id":"s6xTIXJ96u-CjEwaq68VM"},{"id":"O4iWYj5gGmCz9Ipg7ie8D","type":"arrow"},{"id":"CnfDlGmhMoXKFXYjwtp1Q","type":"arrow"},{"id":"Bh-cT8z-GpBi6QgDNyfDx","type":"arrow"},{"id":"Ot1DLaglLHLOoY9ntK8CL","type":"arrow"}],"updated":1706601234528,"link":null,"locked":false},{"id":"s6xTIXJ96u-CjEwaq68VM","type":"text","x":7118.387813667175,"y":1727.5419867973162,"width":70.97596740722656,"height":40,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1932628198,"version":18,"versionNonce":1849970170,"isDeleted":false,"boundElements":null,"updated":1706601083105,"link":null,"locked":false,"text":"asset \ncollection","fontSize":16,"fontFamily":1,"textAlign":"center","verticalAlign":"middle","baseline":34,"containerId":"io6B5sA5zbp_lx5y5iMyT","originalText":"asset collection","lineHeight":1.25},{"type":"rectangle","version":97,"versionNonce":755363770,"isDeleted":false,"id":"qD3laixvSMan3tETchzTF","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7312.070655009908,"y":1697.098828892183,"strokeColor":"#e03131","backgroundColor":"transparent","width":119.97485026391587,"height":99.14015144884752,"seed":548184166,"groupIds":[],"frameId":null,"roundness":{"type":3},"boundElements":[{"type":"text","id":"mxKWB2rMWJJDohbpD-nsm"},{"id":"iX-tvj6VP3g2qwHLl0jgp","type":"arrow"},{"id":"6O36I3Edpp06G3QbwcOTk","type":"arrow"}],"updated":1706601159268,"link":null,"locked":false},{"type":"text","version":85,"versionNonce":6461990,"isDeleted":false,"id":"mxKWB2rMWJJDohbpD-nsm","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7336.570096438252,"y":1726.6689046166068,"strokeColor":"#e03131","backgroundColor":"transparent","width":70.97596740722656,"height":40,"seed":2017960870,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601102786,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"user \ncollection","textAlign":"center","verticalAlign":"middle","containerId":"qD3laixvSMan3tETchzTF","originalText":"user collection","lineHeight":1.25,"baseline":34},{"type":"rectangle","version":137,"versionNonce":1938566374,"isDeleted":false,"id":"xqEyU-UmIbYEMMCbuQYoy","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7539.897394766251,"y":1692.8145239835658,"strokeColor":"#e03131","backgroundColor":"transparent","width":119.97485026391587,"height":99.14015144884752,"seed":1326374586,"groupIds":[],"frameId":null,"roundness":{"type":3},"boundElements":[{"type":"text","id":"MzMUiCJW1sUXzDycWFwep"}],"updated":1706601100971,"link":null,"locked":false},{"type":"text","version":133,"versionNonce":1350672422,"isDeleted":false,"id":"MzMUiCJW1sUXzDycWFwep","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7579.164833936295,"y":1722.3845997079895,"strokeColor":"#e03131","backgroundColor":"transparent","width":41.439971923828125,"height":40,"seed":1844901754,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601100971,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"other\n...","textAlign":"center","verticalAlign":"middle","containerId":"xqEyU-UmIbYEMMCbuQYoy","originalText":"other\n...","lineHeight":1.25,"baseline":34},{"type":"rectangle","version":165,"versionNonce":501703462,"isDeleted":false,"id":"c06RberKhQ3CZ1OzVBtp3","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7771.316653003873,"y":1691.8269392217799,"strokeColor":"#e03131","backgroundColor":"transparent","width":119.97485026391587,"height":99.14015144884752,"seed":625839398,"groupIds":[],"frameId":null,"roundness":{"type":3},"boundElements":[{"type":"text","id":"BieN9GgHqqHZIX0amGC8E"}],"updated":1706601100385,"link":null,"locked":false},{"type":"text","version":162,"versionNonce":1855721062,"isDeleted":false,"id":"BieN9GgHqqHZIX0amGC8E","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"angle":0,"x":7810.584092173917,"y":1721.3970149462036,"strokeColor":"#e03131","backgroundColor":"transparent","width":41.439971923828125,"height":40,"seed":1001191526,"groupIds":[],"frameId":null,"roundness":null,"boundElements":[],"updated":1706601100385,"link":null,"locked":false,"fontSize":16,"fontFamily":1,"text":"other\n...","textAlign":"center","verticalAlign":"middle","containerId":"c06RberKhQ3CZ1OzVBtp3","originalText":"other\n...","lineHeight":1.25,"baseline":34},{"id":"iX-tvj6VP3g2qwHLl0jgp","type":"arrow","x":7076.398102979375,"y":1896.8390396986053,"width":234.48220228142327,"height":108.68680414611163,"angle":0,"strokeColor":"#0c8599","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":2},"seed":1213814822,"version":139,"versionNonce":20034810,"isDeleted":false,"boundElements":null,"updated":1706601194946,"link":null,"locked":false,"points":[[0,0],[234.48220228142327,-108.68680414611163]],"lastCommittedPoint":null,"startBinding":null,"endBinding":{"elementId":"qD3laixvSMan3tETchzTF","focus":-0.16964459357683145,"gap":1.190349749109373},"startArrowhead":null,"endArrowhead":"arrow"},{"id":"yyOFKoMQN9YVCi_hbN_nN","type":"arrow","x":8014.794464311128,"y":1934.2909255924192,"width":801.2174982610732,"height":145.45167455346564,"angle":0,"strokeColor":"#0c8599","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":2},"seed":1878009018,"version":47,"versionNonce":732671910,"isDeleted":false,"boundElements":null,"updated":1706601194946,"link":null,"locked":false,"points":[[0,0],[-801.2174982610732,-145.45167455346564]],"lastCommittedPoint":null,"startBinding":{"elementId":"nfenHRzbOTUKwpZjCY6rj","focus":-0.19561089392343026,"gap":2.641092057710921},"endBinding":null,"startArrowhead":null,"endArrowhead":"arrow"},{"id":"g8_xSAMpHjkrwvRHRSHFb","type":"arrow","x":7420.664425808894,"y":1954.4195251575147,"width":239.89244923729348,"height":157.62234473373542,"angle":0,"strokeColor":"#0c8599","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":2},"seed":1440075302,"version":24,"versionNonce":2045052346,"isDeleted":false,"boundElements":null,"updated":1706601194946,"link":null,"locked":false,"points":[[0,0],[-239.89244923729348,-157.62234473373542]],"lastCommittedPoint":null,"startBinding":{"elementId":"Pgz95U5heqEOwprr59mMX","focus":0.40184292211454625,"gap":7.5762893599942345},"endBinding":null,"startArrowhead":null,"endArrowhead":"arrow"},{"id":"CnfDlGmhMoXKFXYjwtp1Q","type":"arrow","x":7150.986992669043,"y":1801.9641093948621,"width":1.655516484733198,"height":158.17100293472777,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":2},"seed":714809466,"version":33,"versionNonce":1669995942,"isDeleted":false,"boundElements":[{"type":"text","id":"ZwPcME4YeEXiha-JuSZrC"}],"updated":1706601207505,"link":null,"locked":false,"points":[[0,0],[1.655516484733198,158.17100293472777]],"lastCommittedPoint":null,"startBinding":{"elementId":"io6B5sA5zbp_lx5y5iMyT","focus":0.0571580662938884,"gap":4.852046873122163},"endBinding":{"elementId":"IrVKIy-Z3QR2_ZjVUC2kd","focus":-0.1454261251040671,"gap":5.897293709522955},"startArrowhead":null,"endArrowhead":"arrow"},{"id":"ZwPcME4YeEXiha-JuSZrC","type":"text","x":7138.910759212191,"y":1871.049610862226,"width":25.8079833984375,"height":20,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":2141140262,"version":5,"versionNonce":957300282,"isDeleted":false,"boundElements":null,"updated":1706601207211,"link":null,"locked":false,"text":"get","fontSize":16,"fontFamily":1,"textAlign":"center","verticalAlign":"middle","baseline":14,"containerId":"CnfDlGmhMoXKFXYjwtp1Q","originalText":"get","lineHeight":1.25},{"id":"6O36I3Edpp06G3QbwcOTk","type":"arrow","x":7372.897765736427,"y":1796.5204658528442,"width":75.8579599632667,"height":364.97220624087504,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":2},"seed":244560102,"version":65,"versionNonce":2095310970,"isDeleted":false,"boundElements":null,"updated":1706601159268,"link":null,"locked":false,"points":[[0,0],[-75.8579599632667,364.97220624087504]],"lastCommittedPoint":null,"startBinding":{"elementId":"qD3laixvSMan3tETchzTF","focus":-0.1593550800478562,"gap":1},"endBinding":{"elementId":"Y2geabDSkF9JyeT9QpTD5","focus":-0.6172460427530082,"gap":1.7623901953938912},"startArrowhead":null,"endArrowhead":"arrow"},{"id":"Bh-cT8z-GpBi6QgDNyfDx","type":"arrow","x":7214.187646482464,"y":1775.0846284871236,"width":354.49044913148464,"height":341.77589169110115,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":2},"seed":1170969082,"version":221,"versionNonce":868421754,"isDeleted":false,"boundElements":null,"updated":1706601169381,"link":null,"locked":false,"points":[[0,0],[335.2158479835862,142.96601435592697],[354.49044913148464,341.77589169110115]],"lastCommittedPoint":[354.49044913148464,341.77589169110115],"startBinding":{"elementId":"io6B5sA5zbp_lx5y5iMyT","focus":0.024220586127903638,"gap":1},"endBinding":{"elementId":"4zJP1Hbto6sldA98nZVIn","focus":-0.4584005865365687,"gap":5.113292110888324},"startArrowhead":null,"endArrowhead":"arrow"},{"id":"150jy0tTvXcZBhIbRo7N9","type":"arrow","x":7213.161894193652,"y":1793.7914876705177,"width":674.7923359298411,"height":331.32276022698125,"angle":0,"strokeColor":"#e03131","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":2},"seed":415166778,"version":95,"versionNonce":64501158,"isDeleted":false,"boundElements":null,"updated":1706601178945,"link":null,"locked":false,"points":[[0,0],[623.2232359774544,201.99686584180745],[674.7923359298411,331.32276022698125]],"lastCommittedPoint":[674.7923359298411,331.32276022698125],"startBinding":null,"endBinding":null,"startArrowhead":null,"endArrowhead":"arrow"},{"id":"HdhDdeTzBJ6I7QsD3zCbG","type":"rectangle","x":7359.34829364236,"y":1460.713021200362,"width":230.22175207719556,"height":115.53310430631814,"angle":0,"strokeColor":"#f08c00","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":3},"seed":352549094,"version":82,"versionNonce":1124540326,"isDeleted":false,"boundElements":[{"id":"Ot1DLaglLHLOoY9ntK8CL","type":"arrow"}],"updated":1706601234528,"link":null,"locked":false},{"id":"mDcpHYV3QrJ_fjjA5eNj-","type":"text","x":7397.12460351589,"y":1505.5789492188874,"width":167.8719024658203,"height":20,"angle":0,"strokeColor":"#f08c00","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":920008122,"version":43,"versionNonce":1698514618,"isDeleted":false,"boundElements":null,"updated":1706601228118,"link":null,"locked":false,"text":"asset updated event","fontSize":16,"fontFamily":1,"textAlign":"left","verticalAlign":"top","baseline":14,"containerId":null,"originalText":"asset updated event","lineHeight":1.25},{"id":"Ot1DLaglLHLOoY9ntK8CL","type":"arrow","x":7407.2103725323905,"y":1576.661197363083,"width":233.61866198246935,"height":114.26880497359684,"angle":0,"strokeColor":"#f08c00","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":2},"seed":2075142842,"version":39,"versionNonce":2001383142,"isDeleted":false,"boundElements":[{"type":"text","id":"dBeEfgeK_QrpPk8mTkCSH"}],"updated":1706601238374,"link":null,"locked":false,"points":[[0,0],[-233.61866198246935,114.26880497359684]],"lastCommittedPoint":null,"startBinding":{"elementId":"HdhDdeTzBJ6I7QsD3zCbG","focus":-0.22169273444905616,"gap":1},"endBinding":{"elementId":"io6B5sA5zbp_lx5y5iMyT","focus":-0.5952043085220938,"gap":7.04190873621269},"startArrowhead":null,"endArrowhead":"arrow"},{"id":"dBeEfgeK_QrpPk8mTkCSH","type":"text","x":7263.129061255511,"y":1623.7955998498815,"width":54.54396057128906,"height":20,"angle":0,"strokeColor":"#f08c00","backgroundColor":"transparent","fillStyle":"hachure","strokeWidth":1,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":null,"seed":1134501030,"version":11,"versionNonce":1443959034,"isDeleted":false,"boundElements":null,"updated":1706601237667,"link":null,"locked":false,"text":"update","fontSize":16,"fontFamily":1,"textAlign":"center","verticalAlign":"middle","baseline":14,"containerId":"Ot1DLaglLHLOoY9ntK8CL","originalText":"update","lineHeight":1.25}],"files":{}}

asset updated event 事件触发之后,我们不再需要去关心散布各个模块中的托管的 Query,找到 Query 再去做更新,而是直接对 data collection 中的数据操作,这样既不会疏漏,而且借助 zustand/jotai 的能力可以更加细粒度的渲染 UI。

此文由 Mix Space 同步更新至 xLog
原始链接为 https://innei.in/posts/programming/modular-request-data-management-concept


加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。