【响应式编程的思维艺术】 (1)Rxjs专题学习计划
一. 响应式编程
响应式编程,也称为流式编程,对于非前端工程师来说,可能并不是一个陌生的名词,它是函数式编程在软件开发中应用的延伸,如果你对函数式编程还没有一些感性的认知,那么建议你先阅读我曾经写过的一篇入门文章【javascript基础修炼(8)——指向FP世界的箭头函数】,先理解一下函数式编程的基本思想以及在javascript
语言中应用。
响应式编程和函数式编程的思想非常棒,它带给开发者对于编程行为不同角度的理解,当你习惯了“一切皆对象”的思维方式后,换一种“一切皆流”的视角是一件非常有意思的事情,代码以一种陌生却有趣的方式组合在一起,但是它依然能够正常工作,而且更容易让开发者看到一系列处理逻辑的全貌,而暂时忽略其实现细节,编程的实际体验和使用underscore
或lodash
的工具函数之间的嵌套或链式调用(尤其是lodash
的FP模式非常相似)。
至于响应式编程和面向对象编程之间优劣的对比,个人认为没有什么实际意义,它们并不是只能二选一的对立项(比如Angular
技术栈中两者就是并存的),能够在恰当的场景使用合适的方式才更重要,相比于面向对象编程的严谨和复杂,响应式编程更容易让人体会到编程的灵动和乐趣。
二. 学习路径规划
学习该教程需要一定函数式编程基础,笔者自己认为的难点将通过系列博文来记录。
由于Angular
技术栈的学习,笔者需要在原来函数式编程知识的基础上,学习Rxjs
的使用。笔者在SegmentFault社区发现了一个非常高质量的【Rxjs 响应式编程】系列教程共6篇,从基础概念到实际应用讲解的非常详细,有大量直观的大理石图来辅助理解流的处理,对培养响应式编程的思维方式有很大帮助。笔者将通过系列博文对学习中的疑惑和收获及原文中的示例代码细节进行讲解。对此感兴趣的读者也可以先睹为快,也非常欢迎在我的底盘讨论与此相关的问题和疑惑:
Rxjs 响应式编程-第五章 使用Schedulers管理时间
Rxjs 响应式编程-第六章 使用Cycle.js的响应式Web应用程序
【响应式编程的思维艺术】 (1)Rxjs专题学习计划的更多相关文章
- 【响应式编程的思维艺术】 (2)响应式Vs面向对象
目录 一. 划重点 二. 面向对象编程实例 2.1 动画的基本编程范式 2.2 参考代码 2.3 小结 三. 响应式编程实现 四. 差异对比 4.1 编程理念差异 4.2 编程体验差异 4.3 数学思 ...
- 【响应式编程的思维艺术】 (5)Angular中Rxjs的应用示例
目录 一. 划重点 二. Angular应用中的Http请求 三. 使用Rxjs构建Http请求结果的处理管道 3.1 基本示例 3.2 常见的操作符 四. 冷热Observable的两种典型场景 4 ...
- 【响应式编程的思维艺术】 (3)flatMap背后的代数理论Monad
目录 一. 划重点 二. flatMap功能解析 三. flatMap的推演 3.1 函数式编程基础知识回顾 3.2 从一个容器的例子开始 3.3 Monad登场 3.4 对比总结 3.5 一点疑问 ...
- angular响应式编程
1.响应式编程 例子import {Observable} from "rxjs/Observable"; Observable.from([1,2,3,4]) .filter(( ...
- RxJS入门之函数响应式编程
一.函数式编程 1.声明式(Declarativ) 和声明式相对应的编程⽅式叫做命令式编程(ImperativeProgramming),命令式编程也是最常见的⼀种编程⽅式. //命令式编程: fun ...
- iOS开发--Swift RAC响应式编程初探
时间不是很充足, 先少说点, RAC的好处是响应式编程, 不需要自己去设置代理委托, target, 而是主要以信息流(signal), block为主, 看到这里激动吧, 它可以帮你监听你的事件, ...
- iOS响应式编程:ReactiveCocoa vs RxSwift 选谁好
转载: iOS响应式编程:ReactiveCocoa vs RxSwift 选谁好 内容来自stack overflow的一个回答:ReactiveCocoa vs RxSwift – pros an ...
- JS 响应式编程
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <script ...
- Angular4学习笔记(五)- 数据绑定、响应式编程和管道
概念 Angular中的数据绑定指的是同一组件中控制器文件(.ts)与视图文件(.html)之间的数据传递. 分类 流向 单向绑定 它的意思是要么是ts文件为html文件赋值,要么相反. ts-> ...
随机推荐
- MVC5 Razor视图中不规范书写导致的编译问题
今天碰到一个非常让人难以理解的问题,如图所示,但是我在代码中并没有找到缺失"}"的地方: 根据源文件提示有去 AppData\Local\Temp\Temporary ASP.NE ...
- SVN搭建外网远程访问
准备条件 SVN服务器安装及配置 SVN服务端,客户端安装配置可以参考:http://www.cnblogs.com/mq0036/p/5250198.html 花生壳客户端下载,安装,注册(内网穿透 ...
- 【记录】Windows 操作系统常用快捷命令
https://www.lifewire.com/command-line-commands-for-control-panel-applets-2626060 打印机 control pr ...
- 判断js中的数据类型的几种方法
判断js中的数据类型有一下几种方法:typeof.instanceof. constructor. prototype. $.type()/jquery.type(),接下来主要比较一下这几种方法的异 ...
- python爬虫第三天
DebugLog实战 有时候我们需要在程序运行时,一边运行一边打印调试日志.此时需要开启DebugLog. 如何开启: 首先将debugleve ...
- MVC Web.Config 配置错误
配置一个MVC项目的 SessionState,查阅了大量的资料,发现都是直接在web.config中直接加入类似的语句就可以了 <sessionState timeout="60&q ...
- IPython绘图和可视化---matplotlib
1. 启动 IPython 2. >> fig = plt.figure() >> ax1 = fig.add_subplot(346) # 将画布分割成3行 ...
- Ansible批量修改root密码
0x01:首先做好免密登录 http://www.cnblogs.com/evlon/p/8094306.html 0x02:批量修改密码 ansible all -m raw -a "ec ...
- [Swift]LeetCode477. 汉明距离总和 | Total Hamming Distance
The Hamming distance between two integers is the number of positions at which the corresponding bits ...
- [Swift]LeetCode672. 灯泡开关 Ⅱ | Bulb Switcher II
There is a room with n lights which are turned on initially and 4 buttons on the wall. After perform ...