Skip to main content

浅谈前端事件驱动和数据驱动

前言

  • 为什么会有这个 ?
  • 我是怎么理解的?

为什么会有这个?

随着前端从 MVC 模式向 MVVM模式转换的过程中,我们的思想也需要转换下,从之前的事件驱动到现在数据驱动,很多朋友在这个方面的理解有点问题,所以,我想把我自己的理解跟大家分享下。

理解

在开发过程中,我们希望的是专注于某些层面,而不是被其他东西吸引或者被其他重复的步骤影响,所以,当我们在开发的时候,会有两种操作。

  • 点击事件触发
  • 数据更新触发

我举个例子来解释下这两个场景(排除 debounce处理):

点击事件触发,你在输入内容之后,点击搜索按钮,接着调用搜索接口

数据更新触发,你输入的内容变化后,调用搜索接口

在这两种场景下,你应该就能理解这两个概念了。

事件驱动

事件驱动 是一种根据事件触发来决定程序执行逻辑的程序设计思想。在这个模式下我们更多的是考虑UI的变化和事件的监听

流向: 操作 => 触发事件 => 响应处理 => 更新UI

数据驱动

数据是指程序运行中的可变内容,它决定了页面加载的内容和信息的显示。

数据驱动 是一种根据数据来决定程序执行逻辑的程序设计思想。在这个模式下,我们更多的是思考数据的维护和处理,而无需过于考虑UI的变化和事件的监听。

流向: 操作 => 触发事件 => 响应处理 => 更新数据 => 更新UI

什么时候使用呢?

其实大部分时候,都是可以使用数据驱动的,只要数据变了,其实就可以驱动视图变化,model => vm => view,但是有些场景下,不得不用事件驱动,举个例子,比如说搜索的条件是,输入完了再去搜索,就只能人为决定什么时候输入完,这个场景下就得人为触发事件,那就适合事件驱动,具体问题具体分析,合理使用不同类型的操作。

参考资料

data-driven