前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Fabric.js 精简输出的JSON🎫

Fabric.js 精简输出的JSON🎫

作者头像
德育处主任
发布2022-06-10 15:24:34
4.6K0
发布2022-06-10 15:24:34
举报
文章被收录于专栏:前端数据可视化

如果你还不太了解 Fabric.js 的序列化和反序列化,可以看看 Fabric.js 序列化Fabric.js 反序列化

本文要讲的 “精简JSON” 其实是 精简版序列化 。序列化可以将 Fabric.js 的画布导出成一个 JSON 对象。

我们要把画布保存到服务器时,传输给后台的其实是一段 JSON 。如果要重新渲染,就把这段 JSON 丢给 Fabric.js ,调用对应的方法即可渲染到页面上。

但如果你觉得 Fabric.js 默认导出的 JSON 太大、不需要那么多属性的话,可以使用一个精简版的配置。

动手编码

对比一下默认导出和精简导出。

01.png
01.png

我在页面上添加了1个背景图和2个基础图形元素,如果用默认序列化的话,对象是真的有点多。

如果你只需要核心的属性,只需用于渲染,那可以使用 “精简序列化”。

代码语言:javascript
复制
<canvas id="canvasBox" width="600" height="600" style="border: 1px solid #ccc;"></canvas>

<!-- 引入 Fabric.js -->
<script src="https://cdn.bootcdn.net/ajax/libs/fabric.js/521/fabric.js"></script>

<script>
  // 初始化画布
  canvas = new fabric.Canvas('canvasBox', {
    includeDefaultValues: false // 指示toObject/toDatalessObject是否应该包含默认值,如果设置为false,则优先于对象值
  })

  console.log(canvas.toObject()) // 输出序列化的内容
</script>
复制代码

《canvas.includeDefaultValues 文档》

includeDefaultValues 设置为 false 就能让 canvas.toObject() 方法输出一个精简后的 JSON

includeDefaultValues 的值默认为 true ,所以默认会输出基础版的 JSON 内容。

你可以通过修改 includeDefaultValues 的值,观察输出对象的变化。

需要提醒一下:如果你的项目需求是只需要看到效果,不需要管太多内部属性的话,可以尝试用本文提到的内容,精简数据再传给后端,这样做可以节省空间。

仔细的同学应该也看得到,就算精简后的 JSON 数据,里面还是会保存版本号的。如果版本号对你来说没什么作用,你也可以用 JS 的方法把 version 去掉。但我不建议你这么做。

源码仓库

Fabric.js 精简序列化

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 动手编码
  • 源码仓库
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档