事件驱动 vs 数据驱动
就开发 web 应用而言,事件驱动和数据驱动是两种不同的开发模式,在前端开发领域,天然地会面临这两种模式。有些数据是来自于用户交互,有些数据是来自于服务端,或者是内存。举一个例子,有 2 个表单项存在前后联动,选择一个国家后,城市列表会更新。通常的做法会同时维护一份表单数据在内存,再绑定一个事件函数。
但有时候可能需要还原,比如用户选了某个城市,第一次加载就需要显示对应的城市列表。如果追求代码量简单,可以直接调用事件函数模拟触发一次;如果想逻辑分明,可以在拿到表单数据后再根据选择的国家,更新城市列表,但是代码量会多一些。
推荐拆出公共逻辑函数,两边调用它。也就是变更数据都在一个地方维护,事件处理函数是第一层,然后组装参数,再传递给公共函数。如果是首次加载需要数据驱动,也可以组装参数调用公共函数。这样一来,分叉的逻辑最终会收敛到同一个函数。当代码量变多时,这种模式会显得更清晰,也利于问题定位。