周二在实验室给大家做了一个 RxJS 的 Session,总算体会到 准备充足的情况下,是不会太紧张的。相比周六的 lighting talk 是好了很多,然而,同学们提了很多我没有想到的问题,对于这方面的知识储备还是不够,遂先来看看 响应式编程。
什么是响应式编程
函数响应式编程(FRP Functional Reactive Programming),为解决现代编程问题提供了全新的视角.一旦理解它,可以极大地简化你的项目,特别是处理嵌套回调的异步事件,复杂的列表过滤和变换,或者时间相关问题。
响应式编程是一种新的编程风格,其特点是异步或并发、事件驱动、推送PUSH机制以及观察者模式的衍生。reactive 应用(响应式应用)允许开发人员构建事件驱动(event-driven),可扩展性,弹性的反应系统:提供高度敏感的实时的用户体验感觉,可伸缩性和弹性的应用程序栈的支持,随时可以部署在多核和云计算架构。
微软术语:Rx = Observables + LINQ + Schedulers(并不能理解微软这个术语的真正含义)
微软官方解释:Reactive Extensions (Rx) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators.
首先,响应式编程是一种编程范式。
而我们现在大多使用的是命令式编程,那么命令式编程与函数响应式编程有什么区别呢?
- 命令式编程:以命令为主,给机器提供一条又一条的命令序列让其原封不动的执行.
- 函数响应式编程(FRP):使用异步数据流进行编程。FRP的思想比较难理解,需要我们将以往的命令式编程思想转变为响应式编程思想。我们要做的就是面向数据流编程。Everything is a stream
响应式编程就是与异步数据流交互的编程范式
一方面,响应式编程就是与异步数据流交互的编程范式,这已不是什么新事物了。事件总线或一些典型的点击事件本质上就是一个异步事件流,这样你就可以观察它的变化并使其做出一些反应。
响应式是这样的一个思路:除了点击和悬停(hover)的事件外,你可以给任何事物创建数据流。数据流无处不在,任何东西都可以成为一个数据流,例如变量、用户输入、属性、缓存、数据结构等等。
举个栗子,你可以把你的微博订阅功能想象成跟点击事件一样的数据流,你可以监听这样的数据流,并做出相应的反应。
最重要的是:你可以使用 es6 中特别惊艳、高效的函数去结合、创建和过滤任何一组数据流。 这就是"函数式编程"的魔力所在。一个数据流可以作为另一个数据流的输入,甚至多个数据流也可以作为另一个数据流的输入。你可以合并两个数据流,也可以过滤一个数据流得到另一个只包含你感兴趣的事件的数据流,还可以映射一个数据流的值到一个新的数据流里。
我为什么要采用响应式编程?
仅此一句:
响应式编程可以加深你代码抽象的程度,让你可以更专注于定义与事件相互依赖的业务逻辑,而不是把大量精力放在实现细节上,同时,使用响应式编程还能让你的代码变得更加简洁。
尤其是对于现在流行的 webapps 和 mobile apps,它们的 UI 事件与数据频繁地产生交互,在开发这些应用时使用响应式编程的优点将更加明显。N 年前,web 页面的交互是通过提交一个很长的表单数据到后端,然后再做一些简单的前端渲染操作。而现在的 Apps 则演变的更具有实时性:仅仅修改一个单独的表单域就能自动的触发保存到后端的代码,就像某个用户对一些内容点了赞,就能够实时反映到其他已连接的用户一样,等等。
Read more
文字略多,看着略显枯燥甚至乏味......
关于这方面的 demo 尚在学习 ing,先 上 一个简单的 Helloworld