前端开发框架总结之利用Jtopo实现网络拓扑功能(四)

本文介绍了如何利用Jtopo框架实现网络拓扑功能的序列化和反序列化,详细讨论了在序列化过程中遇到的问题及自定义序列化方法的实现,同时探讨了反序列化过程中的关键步骤,包括解析JSON数据协议和按顺序恢复拓扑元素。
摘要由CSDN通过智能技术生成

                     前端开发框架总结之利用Jtopo实现网络拓扑功能(四)

上文我们讲了拓扑容器相关的交互设计和实现思路以及一些关键技术细节。至此,我们已经覆盖了结点创建、连线创建、容器创建、结点添加等常用场景,本文我们继续我们的拓扑管理开发之旅。


  • 拓扑元素序列化

拓扑元素创建好了,位置也摆好了,结点关联关系也建立了,容器分组关系也明确了。接下来就是如何把这些‘辛苦’布局的场景保存下来以便下次就来的时候还能完完整整的看到呢。这时我们就用到了拓扑元素的序列化了。

官网的API中有现成的序列化和反序列方法,我们不妨拿来试下效果。what?序列化方法直接报错?原来是因为我的scene中只设置了backgroundColor,好吧,制作图片,设置backgroud属性,然后再试。what?反序列化后我的容器和连线全不见了。好吧让我们分析下,序列化后的数据。结果发现序列化后的数据中竟然都没有记录连线和结点的关联关系。还有其他好多重要关联数据都没有,怪不得没法反序列化出我们想要的结果呢。好吧,只能实现我们自己的序列化方法了。

首先是确定序列化数据的格式。我采用了官方使用json格式的数据。(js中操作json数据还是很方便的)

然后是确定具体json内容。这个根据各个人的需求确认自己要保存哪些信息。但是大致的层次是不会错的。我这里采用了三大层。第一层为stage的信息,第二层为scene的信息,第三次为拓扑元素的信息,包括node,textnode,link,container。拓扑关系,比如连线、容器等与结点的关系,是使用node的virtualId属性进行关联的。这里有一些小细节要主要处理,但大体思路不难。比如,container的数据结构中就要把为了固定容器四个角的结点和普通结点进行区分开来保存。

js片段,具体属性可以自己丰富。

    function getJsonData() {
        var data = new Object();
        data.stage = new Object();
        data.stage.scene = new Object();
        data.stage.scene.nodes = [];
        data.stage.scene.textNodes = [];

        data.stage.scene.links = [];
        data.stage.scene.containers = [];

        data.stage.wheelZoom = stage.wheelZoom;

        var nodeList = scene.find('node');

        nodeList.forEach(function (item) {
            var node  = new Object();
            node.bound = item.getBound();
            node.type = item.type;
            node.fontColor = item.fontColo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值