响应式编程

作者: 芝麻香油 | 来源:发表于2016-12-18 22:57 被阅读291次

    周二在实验室给大家做了一个 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.

    首先,响应式编程是一种编程范式。

    而我们现在大多使用的是命令式编程,那么命令式编程与函数响应式编程有什么区别呢?

    1. 命令式编程:以命令为主,给机器提供一条又一条的命令序列让其原封不动的执行.
    2. 函数响应式编程(FRP):使用异步数据流进行编程。FRP的思想比较难理解,需要我们将以往的命令式编程思想转变为响应式编程思想。我们要做的就是面向数据流编程。Everything is a stream

    响应式编程就是与异步数据流交互的编程范式

    一方面,响应式编程就是与异步数据流交互的编程范式,这已不是什么新事物了。事件总线或一些典型的点击事件本质上就是一个异步事件流,这样你就可以观察它的变化并使其做出一些反应。

    响应式是这样的一个思路:除了点击和悬停(hover)的事件外,你可以给任何事物创建数据流。数据流无处不在,任何东西都可以成为一个数据流,例如变量、用户输入、属性、缓存、数据结构等等。

    举个栗子,你可以把你的微博订阅功能想象成跟点击事件一样的数据流,你可以监听这样的数据流,并做出相应的反应。

    最重要的是:你可以使用 es6 中特别惊艳、高效的函数去结合、创建和过滤任何一组数据流。 这就是"函数式编程"的魔力所在。一个数据流可以作为另一个数据流的输入,甚至多个数据流也可以作为另一个数据流的输入。你可以合并两个数据流,也可以过滤一个数据流得到另一个只包含你感兴趣的事件的数据流,还可以映射一个数据流的值到一个新的数据流里。

    我为什么要采用响应式编程?

    仅此一句:
    响应式编程可以加深你代码抽象的程度,让你可以更专注于定义与事件相互依赖的业务逻辑,而不是把大量精力放在实现细节上,同时,使用响应式编程还能让你的代码变得更加简洁。

    尤其是对于现在流行的 webapps 和 mobile apps,它们的 UI 事件与数据频繁地产生交互,在开发这些应用时使用响应式编程的优点将更加明显。N 年前,web 页面的交互是通过提交一个很长的表单数据到后端,然后再做一些简单的前端渲染操作。而现在的 Apps 则演变的更具有实时性:仅仅修改一个单独的表单域就能自动的触发保存到后端的代码,就像某个用户对一些内容点了赞,就能够实时反映到其他已连接的用户一样,等等。

    Read more

    1. 响应式编程一览
    2. 学习教程
    3. RxJs GitBook
    4. RxJs官方文档
    5. Introduction to reactive programming 视频

    文字略多,看着略显枯燥甚至乏味......

    关于这方面的 demo 尚在学习 ing,先 上 一个简单的 Helloworld

    相关文章

      网友评论

      • 6d96978eeefb:我看到你已经写了很多篇很棒的博客,但是你的小buddy,似乎没有注意到,你能否主动地把你的博客地址发给他,帮助他养成及时来看你博客的习惯?
        芝麻香油: @TW李鹏 她可能比较忙,不过有时间她都会很认真的看
      • 6d96978eeefb:非常棒,你现在写的博客已经有大家风范了👍
        芝麻香油: @TW李鹏 距离总理还差好远,还得练习

      本文标题:响应式编程

      本文链接:https://www.haomeiwen.com/subject/zoezmttx.html