谁应该参加这门课程?为什么?
让我们先从本课程的目标受众和学习成果开始。
你好!如果你正在学习这门课程,那你很可能已经有过一些网站开发的经验。无论你是熟练掌握 JavaScript 的老手,还是刚踏入前端世界的新人,这门课程都能为你带来价值。
课程目标
前端开发的要求正不断增多。如今,你需要构建出在不稳定网络下也能快速加载的网站,在移动设备上完美渲染,并能对用户操作做出迅捷响应。所有这些任务都需要处理来自不同来源的大量事件——无论是你的客户关系管理(CRM)系统、突发新闻,还是一个聊天室。
本课程的主题是可观察对象(observables),这是一种全新的思维方式,用于管理这些事件,即使它们可能在未来某个时刻发生。可观察对象是一个简洁的概念,但更重要的是,它能帮助你理清思路,从而为用户构建更大、更快、更少错误的应用程序。
那么问题来了:如此宏大的承诺——“简化前端开发”——究竟简化了什么?虽然 RxJS(全称“Reactive eXtensions to JavaScript”)在许多方面带来了简洁性,但这门课程主要聚焦于两个核心领域:
- 异步调用与控制流程
- 状态管理
异步调用与控制流程
JavaScript 的异步优先设计既是优势也是挑战。事件循环让我们可以轻松发起 AJAX 请求,但要跟踪所有请求却变得异常繁琐。单个 AJAX 请求可以用 Promise 表示,但一旦涉及多个请求,就需要手动追踪和管理大量的异步项(甚至包括取消操作),随着用户在应用中不断操作,这种复杂性会迅速增加。
最典型的例子之一——自动补全功能(typeahead),将在高级异步部分详细讲解。你将学会如何把请求的发起和控制流程交给 RxJS 处理,从而让你能够专注于应用的其他部分。
状态管理
另一方面,管理应用程序的状态一直是程序员的难题,从内存(RAM)诞生以来就如此,以至于人们常开玩笑说“重启一下就好了”,通过重启来重置计算机状态。而 JavaScript 默认采用全局且可变的状态,使这个问题更加严重。近年来,JavaScript 社区已开始探索出一些令人印象深刻的解决方案。
RxJS 将事件流进行模块化处理,将每个操作封装在一个函数中。在此基础上,RxJS 还提供了多种辅助操作符,能够维护内部状态,让你可以把状态相关的烦恼交给库来处理。
除了这些操作符,你还将学习 NgRx —— 一个基于 RxJS 构建的状态管理库,将在高级 Angular 部分介绍。在《响应式游戏开发》章节中,你还将基于 HTML5 Canvas API 自行实现一套专属于该场景的状态管理系统。
但我已经使用了(插入框架名称)!
别担心!RxJS 并不是为了取代你现有的整个前端工具链。相反,它被设计为可以无缝集成到你正在使用的任何 JavaScript 框架中,无论是复杂的 jQuery 和原生代码混合结构,还是本周刚刚发布的最新框架。特别是 Angular 框架,从一开始就内置支持 RxJS。本课程也会涵盖相关使用场景,但课程中的知识绝不仅限于 Angular。