内容提要
G6-Mobile是Antv图可视化引擎G6的移动端适配版本,支持H5和小程序。它通过代理Canvas API、精简Hammer.js处理手势事件、重写事件和布局控制器,去除对浏览器环境的依赖。优化打包体积后,G6-Mobile以独立包发布,并已发展为F6,用于在移动端绘制关系图。
延伸解读
移动端图可视化的挑战
文章指出,在G6-Mobile出现之前,社区中几乎没有支持小程序或移动端的图可视化引擎,通常只能通过嵌套webview实现,但性能和体验不佳。G6-Mobile的诞生正是为了解决这一空白,它通过适配移动端环境,让关系图在H5和小程序中能顺滑操作,并完全贴合原生小程序开发方式。这体现了移动端图可视化领域的实际需求和技术难点。
图形语法与配置式开发的权衡
文章对比了图形语法(如G6)与配置式(如ECharts)开发方式:配置式上手容易但灵活性不足,数据到属性的映射在选定组件时就固定了;图形语法则更灵活,可拆解式开发,但需要更多思考。G6-Mobile基于图形语法,这影响了其架构和扩展性,读者在选择可视化库时需权衡易用性与灵活性。
G6-Mobile的适配策略
G6-Mobile通过代理Canvas API抹平小程序差异,精简Hammer.js处理手势事件,并重写事件和布局控制器以去除对浏览器环境的依赖。这些改动分散在多个包中,最终以独立包发布。这种适配策略既保留了G6的核心能力,又针对移动端环境做了优化,为类似库的移动端移植提供了参考。
包体积优化的必要性
G6-Mobile初始版本打包后gzip仍有330k,对移动端而言过大,因此进行了专门的体积优化。这提醒开发者,在移动端场景下,包体积直接影响加载性能和用户体验,优化是必要步骤。文章提到的优化过程(虽未详述)也暗示了在功能与体积之间需要平衡。
Q&A
G6-Mobile 是什么?
G6-Mobile 是 AntV 图可视化引擎 G6 的移动端适配版本,支持 H5 和小程序,用于在移动端绘制关系图。
G6-Mobile 是如何实现移动端适配的?
G6-Mobile 通过代理 Canvas API 抹平小程序与浏览器的差异,精简 Hammer.js 处理手势事件,重写事件和布局控制器,去除对 document、window 等浏览器环境的依赖,从而支持 H5 和小程序。
G6-Mobile 的包体积优化结果如何?
G6-Mobile 初始版本打包后体积较大,parse 后 1.3M,gzip 后 330k,经过优化后体积得到改善,但具体优化后的数值未在文中提及。
G6-Mobile 与 F6 是什么关系?
G6-Mobile 已经独立成 F6,用于在移动端绘制关系图。
G6-Mobile 为什么选择从 g 4.0 产出 g-mobile 而不是独立 f2 内置的 g-mobile?
因为从 g 4.0 产出 g-mobile 可以保持与 g-canvas 的渲染和 API 一致,只需针对事件特殊处理,工作量和未来拓展性更优。
G6-Mobile 在事件处理上做了哪些工作?
G6-Mobile 精简了 Hammer.js 用于手势事件解析,并独立成 g6-hammer 包;在 g-mobile 中增加 mini-event 模型移除 document 和 window 依赖,同时重写 event controller 和 behavior 以适配移动端事件。
G6-Mobile 在布局上做了哪些调整?
G6-Mobile 重写了 layout controller,去除了对 webworker 和 webgpu 的依赖,以适应移动端环境。
G6-Mobile 的渲染是如何适配小程序 Canvas 的?
G6-Mobile 通过代理 Canvas API,将 canvas context 的调用转换为小程序 canvas context 的接口,从而抹平差异。