Meteor开发平台入门 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

反应式编程 - RP

反应式编程/Reactive Programming是面向数据流和变化传播的一种编程范式。反应式编程 最初提出的目的是建立交互式用户界面 - 当数据发生变化时,期望用户界面自动得到更新。

微软Excel软件是反应式编程的一个实现案例,如果一个单元格的值依赖于其他单元格,那么 当其他单元格的值变化时,这个单元格的值自动更新。在下面的图中,单元格E1的值被设定 为=C1+D1

excel-react

当单元格C1的值从123变成787时,你会看到单元格E1的值自动更新为新的值1234。 这看起来就是,输入数据——单元格C1和D1——的变化传播给了输出数据——单元格E1。

≡ 反应式编程的实现原理

看一个最简单的数据流,数据A和数据B流入(输入)处理单元(计算输入的和)后,流出 (输出)数据C:

dataflow

在JavaScript中要实现这个处理单元相当简单,一个表达式足够了:

var C = A + B;

不过这可不是反应式编程!这个表达式是一次性计算而已。反应式编程要求输出数据自动响应 输入数据的变化!这个简单的处理单元,没有办法保证在后续的时间里,当数据A或数据B的 值变化时,数据C的值也自动响应变化。

一个很朴素的想法是,每当(任一)输入数据变化时,如果能够自动的重新执行处理单元,那么 自然可以保证输出数据的新鲜:

changedetect

BINGO!这就是实现反应式编程的核心原理,说穿了一点也不神秘。