数据驱动

普通红牛卖6块,这种红牛卖8块,今天我试试看区别在哪里。
数据可视化是数据驱动的领域,不过我发现不仅仅是数据可视化,在很多其他场景,也应用到了数据驱动的理念。
引用传递与数据驱动
利用JavaScript的对象引用传递的这个特性,可以很好的实现数据驱动的理念。
大致逻辑就是:修改数据->调用render函数
如果想要做得更自动化一点,可以加入观察者模式,通过Object.defineProperty自动监测属性的变化,自动调用render方法,这样你只需关注数据的增删改查即可。
注意数据必须是对象,不能是基本数据类型
事件驱动模型
注册事件及其处理函数,放入事件队列,由单独的事件处理线程持续不断的提取队列中的信息,进行事件处理。
这其实也是数据驱动的一个体现。
JavaScript的垃圾回收机制
标记清除的实现方式(另一种不常用的是引用计数),就可以归于数据驱动。
当变量进入环境时给其打上进入标记,当变量离开环境时,也打上离开标记,然后由垃圾回收器去销毁这些被标记的变量,释放其内存。
到目前为止,IE、Firefox、Opera、Chrome、Safari的js实现使用的都是标记清除的垃圾回收策略或类似的策略,只不过垃圾收集的时间间隔互不相同。
为什么不用引用计数的方式进行垃圾回收?
因为存在循环引用问题,即对象A中包含一个指向对象B的指针,而对象B中也包含一个指向对象A的引用。
前端UI库
比如Echarts、我们的D3Charts、Vue框架等,都可以通过修改数据对象,自动触发页面的重新渲染。这样大大简化了开发量,使开发人员可以将更多的精力放在数据处理上。