---
title: 事件驱动 vs 数据驱动
author: 休言
date: 2025-06-13
url: https://www.fechuck.com/notes/2025-06-13-dev-thoughts.html
---

# 事件驱动 vs 数据驱动

就开发 web 应用而言，事件驱动和数据驱动是两种不同的开发模式，在前端开发领域，天然地会面临这两种模式。有些数据是来自于用户交互，有些数据是来自于服务端，或者是内存。举一个例子，有 2 个表单项存在前后联动，选择一个国家后，城市列表会更新。通常的做法会同时维护一份表单数据在内存，再绑定一个事件函数。

但有时候可能需要还原，比如用户选了某个城市，第一次加载就需要显示对应的城市列表。如果追求代码量简单，可以直接调用事件函数模拟触发一次；如果想逻辑分明，可以在拿到表单数据后再根据选择的国家，更新城市列表，但是代码量会多一些。

推荐拆出公共逻辑函数，两边调用它。也就是变更数据都在一个地方维护，事件处理函数是第一层，然后组装参数，再传递给公共函数。如果是首次加载需要数据驱动，也可以组装参数调用公共函数。这样一来，分叉的逻辑最终会收敛到同一个函数。当代码量变多时，这种模式会显得更清晰，也利于问题定位。
