本文最初记录在 2017 年 D2 期间。知乎问题为:参加第12届D2前端技术论坛,你有什么收获?
主要是想说一下百度的小姐姐分享的话题 《打造前端复杂应》。
最近正好接手了这样一个类似的项目,(百度 h5 百度脑图)不过整体全是基于 canvas 的,而且也没有事件广播,没有数据驱动,没有模型,全是直接 jquery 直接操作 DOM 的。整体感觉很混乱。现在一个人维护,改起来,感觉很忧伤。
不过听完分享之后,不管是事件广播,还是直接数据的双向绑定,都让我多了很多思路去改造。目前第一步就是先加入了 webpack、ES6、React、PubSub ,先把之前的 jquery 逐渐干掉吧。
不过小姐姐提到百度脑图 和 百度 H5 分别使用 SVG 以及 原生 DOM 来实现的,这样当然没什么问题,不过也提到为什么没用 canvas 的原因,主要是 事件绑定,元素选择相关的等等一些方面的考虑。
但是实际上,根据我项目的使用来说,直接使用 canvas 也是可以的,基本能解决掉提出来的顾虑,当然主要是有这个强大的开源 canvas 操作库:
fabric.js: Javascript Canvas Library, SVG-to-Canvas (& canvas-to-SVG) Parser
事件,动画,选中,变换,loadJOSN(),toJSON() 。强大之处,不太好用几句话说清楚,部分功能如下图,建议官网体验: