事件驱动
事件:针对应用所要发生的事情并使应用做出响应
事件处理:有针对性的,通过预先编制好的代码来对事件进行处理
事件驱动思维:用户行为 => 事件响应 => 代码运行 => 更新 UI
运用事件驱动思维进行编程,我们编写代码时的思路如下:
- 开发静态页面
- 添加事件监听
- 针对不同事件编写不同的处理逻辑
- 根据计算后得到的数据,重新渲染页面
通俗地说,使用事件驱动思维去进行编程就是:从事件响应应得到结果出发,来完成应用的设计和编程。
路由驱动
路由驱动也称为数据驱动,
数据 什么是数据?引用官方的一句话“数据是事实或观察的结果,是对客观事物的逻辑归纳,适用于表示客观事物的未经加工的原始素材”嗯?这句话看起来有点晦涩难懂,其实数据无非是一堆能够用来体现事物属性,描述事务构成的东西。比如声音、图像等成为模拟数据,符号、文字等成为数字数据。
数据驱动思维: 设计数据结构 => 事件绑定逻辑 => 数据变化 => 更新 UI 运用数据驱动思维去实现编程,我们更多的是思考数据的维护和处理,而无需过于考虑 UI 的变化和事件的监听。
事件驱动 VS 数据驱动
事件驱动
- 页面构建:设计 DOM => 生成 DOM => 事件绑定
- 事件监听:操作 UI => 触发事件 => 响应处理 => 更新 UI
数据驱动
- 页面构建:设计数据结构 => 事件绑定逻辑 => 生成 DOM
- 事件监听:操作 UI => 触发事件 => 响应处理 => 数据变化 => 更新 UI
数据驱动和事件驱动可以说有一个是被动的,一个是主动。事件驱动中必须有个引起事件的 sender,而数据驱动是被动的,只要数据发生改变,就由下至上的传递到需要使用的地方,不受 sender 的控制。 从事件驱动转变为数据驱动,在事件驱动的思维下我们会把组件视作 DOM,把事件/逻辑处理视作 Javascript,把样式视为 CSS。转变到数据驱动思维之后,我们会把这些组件、事件、逻辑处理、样式都看作数据,我们需要做的只是对数据状态的处理。使用数据驱动的思维编程,我们将会有如下好处:
- 数据变化更方便
- DOM 结构更轻巧
- DOM 结构调整更低耗
- 抽象设计
- 代码量相对减少,易于维护