前言
React是一个用来创建组合式Web应用程序的开源库,由Facebook维护。自从公开发布后,这个库迅速风靡全球,并且围绕着它产生了一个生机勃勃的社区。本书将涵盖React库的各个细节,并将讨论基于组合式模型来创建Web组件接口的最佳实践。React 库本身并不大,所以本书同时涵盖了React 生态系统中的-些工具和库(例如React Router和Flux架构),以便为读者提供创建完整应用程序所需的足够知识。书中对每个主题的讲解都简洁明了,你将逐一了 解到你需要掌握的各个细节,从而学会真正有效地使用它们。本书对React中最重要的那些特性的讲解,言简意赅、由浅入深,每个章节中还详细说明实际开发中可能面临的常见问题,并告诉你如何避免它们。
Web开发经典丛书
- HTML & CSS设计与构建网站
- JavaScript& jQuery交互式Web前端开发
- JavaScript入门经典(第5版)
- Java Web高级编程
第一章 React入门
本章解释了 React 的含义以及它给 Web 开发领域带来的好处(主要好处就是提供了一种高性能、声明式途径,能以组件方式构建应用程序的用户界面)。你还创建了你的第一个组件,并见证了 React 组件的所有基本概念: render 方法、JSX、props 和 statea
第二章 深入DOM抽象
在第一章中,你看到了 React 从 DOM 抽象出来,提供了更简单的编程模型和更好的性能,以及在服务器端乃至原生移动端应用中渲染组件的可能性。本章将介绍用于描述 UI的JavaScript 语言扩展:JSX。
在本章中,你学习了React的DOM抽象细节以及它实现高性能所采取的技术,例如事件委托及其差异(Dim)和子级校正特征(包括key属性的需求)。你还深入学习了JSX(以及如何根据需要脱离JSX使用React)、内联样式和表单
第三章 使用组件构建应用程序
在第二章,我们对 React 进行了概述,如你所见,React 将一个基于组件的架构应用到UI界面构建的环节中你已经了解到 React 的革新在于融合 HTML和JvaScript 来描述组件,并通过使用周全的、隔离的、可复用的、可组合的组件(而非使用不同的技术或语言)来实现概念的分离。本章将讲述如何使用嵌套式组件来构建一个复杂的 UI 界面。你将看到通过propTypes 来暴露一个组件API的重要性,并了解 React 应用程序中数据是如何流动的并探索如何将组件组合到一起的技术。
在本章中,你学习了如何在 React 中构建复杂的 UI界面。了解到在一个 React 应用程序中,数据总是沿着一个方向,从父组件向子组件流动。为进行数据传递,一个父组件可将一个回调函数作为 props 下传递给子组件,这样子组件就可以使用接收到的回调函数将数据传回上层。
你还了解到如果你将组件分成两类:有状态组件(包含有内部的 state)和单纯组件(没有内部的 state,只显示通过 props 接收到的数据),那么就会更容易地复用组件。将你的应用程序按照这种方式进行构建是一项最佳实践,这样应用程序就会包含更少有状态组件(有状态组件通常位于应用程序组件层级的顶层)和更多单纯组件。
最后,你了解到为何将组件的state看成不可变数据是很重要的,总是应当使用this.sctState修改state(你学会了如何使用React的不变性助手来生成基于thisstate的修改后的浅表副本)。
限于文章篇幅原因,就展示到这里了有需要的小伙伴————》点击此处领取《————
第四章 复杂交互
按今天的应用程序标准看,仅拥有所需的功能、快捷的加载速度、不错的感知性能是不够的。用户界面还必须精致、流畅,并包含一些复杂交互,比如元素动画效果以及拖放交互。
在本章中,你了解了如何使用 CSS 动画(通过 React 的 CSSTransitionGroup 插件)来实现一个现代、流畅的复杂用户界面,以及如何通过外部的 React DnD 库实现拖放功能
第五章 路由
URL对于 We 应用程序而言是一项强大的优势,使得 Web 应用程序比原生应用程序更好。URL 最开始是一个指向一台服务器上某个文档的指针,但是在一个 Web 应用程序中,看待URL的最佳方式,应当是将其看成应用程序当前状态的一种表示。通过查看URL,用户就能知道他现在位于应用程序的哪个位置,用户可将 URL 复制下来等到以后再直接使用它,或是将 URL传给别人(或其他地方)。
本章讨论了路由。首先,手工打造了一个基本的路由功能,并理解了由嵌套路由所引发的复杂性,接着学习了如何使用 React 社区中最常用的库之一的 Rcact Router 库。你看到了如何设置嵌套路由和一个默认的首页路由,如何通过路由向一个组件传递参数,如何在一个组件中直接向它的子组件传递属性。之后还学习了如何使用 History 对象,通过代码进行路由转换。
你的看板应用程序相对于它的第一个版本,已经变得越来越大,功能也越来越丰富,同时也面临越来越多的问题。在第6章将要学习 Flux,这是一个协助 React 来更好地组织你的项目的应用程序架构。
第六章 结合Flux的React应用程序架构
如前所述,单向数据流是 React 的核心理念之一,即以 props 的形式从父组件流向子组件。当父组件需要子组件返回数据时,就可以像传递 props 一样传递一个回调函数。这种单向数据流带来了清晰明了并且易于理解的代码。你可以从头到尾跟踪一个
Rcact 应用程序,来观察更改后的代码是怎么样执行的。即便这种架构模式具备许多优势,它还是面临一些挑战。React 应用程序常常会拥有许多层级,顶层组件扮演了容器的角色,而许多纯粹的组件则更像是界面树上的叶节点。state 位于这一层级的最高处,你创建的回调函数最终需要作为 props 向下传递,有时还会在重复并容易出错的任务中向下传递许多层级。
React Router 的共同作者和著名社区成员Ryan Florence 这样形容这种将数据和回调函数以 props 形式向下传递许多层级的行为:钻取你的应用程序如果你有许多套组件,你就有大量的钻孔活儿要干,而且如果你想要重构(移动某些组件),之前完成的钻取工作就必须完整地重做一遍。
让我来澄清一下:使用套的 React 组件是构造 U的绝佳方式。它减少了复杂度带来了关注点分离、并让代码更易于扩展和维护。由于 React 的构建理念是响应式渲染,每次当组件 state或props 发生变化时,React 都会更新 DOM(使用它的虚拟DOM实现来计算所需的最小变动量)。给你带来的则是非常简单的开发思维和卓越性能。
这里想要解决的是这样一个实际问题,当应用程序规模逐渐变大时,如何将数据(以及更重要的回调函数)带入到嵌套组件中,并能通过回调函数来操作这些组件的数据?这就是引入Flux的原因。
在本章中,你了解了什么是 Flux,以及它解决了哪些问题,你看到了如何在 React应用程序中集成 Flux,以及如何构建包含异步API通信的复杂应用程序
第七章 性能优化
从底层设计开始,React 就已经充分考虑到性能问题。在更新 UI时,它使用了一些很聪明的技巧来尽可能减少耗时的 DOM 操作。此外,它也提供了一些工具和方法,能在我们需要时对性能做进一步优化。
在本章中,你将学习到 React 中的“子级校正”(Reconciliation)过程是如何工作的:如何使用 React Perf米判别性能瓶颈:如何在组件中使用shouldComponentUpdate 生命周期中的方法来尽快完成界面重绘过程,从而对性能进行提升。
在本章中,你对在 Rcact 中如何快速实现子级校正算法有了更好的理解。如你所见虽然在绝大多数情况下它已经足够快了,但我们仍有能力手动提升组件的性能:通过实现shouldComponentUpdate生命周期方法来阻止组件(及其整个子树)的重绘
第八章 React同构应用
简单讲,单页应用基本上就是一个空白的 HTML 体,使用JavaScript 来生成应用的页面。这种方式虽然有很多优势,但也容易看到其中存在不利的一面:在浏览器下载应用的 JavaScript 并运行(以及从服务器上获取最初的数据)之前,用户会看到一个白屏闪
过,然后才是页面的内容。同构(isomorphic)JavaScript 应用也称为通用JavaScript应用,指的是在客户端和服务器端之间完整(或部分)地共享代码的应用。通过在服务器端运行应用的JavaScript 代码页面可在发送到浏览器之前预先填充内容,所以用户甚至可在浏览器的 JavaScript 运行之前就先看到内容。当本地的 JavaScript 运行时,它会接手后续的交互及导航操作,通过快速的初始化加载和服务器端页面渲染,让用户在单页应用程序中得到流畅的交互体验
在这个过程中,用户因为应用加载和渲染的速度更快有了更好的体验,同时还获得了其他好处:获得了渐进式增强(progressive enhancement)能力(在JS 加失败时应用也不会完全停止工作)、更好的可访问性,并使搜索引擎更容易通过索引搜索应用内容。
在本章中,你学习了同构应用的优势:更高的性能、搜索引擎优化、优雅降级(即使在本地禁用了 JavaScript,应用也能部分正常工作)。现在你了解了如何在服务器端渲染React 组件,以及如何“挂载”已经染好的 React 组件。
限于文章篇幅原因,就展示到这里了有需要的小伙伴————》点击此处领取《————
第九章 测试React组件
因为我们的应用变得越来越复杂,而且还在持续不断地增加新功能,因此需要确保新功能在实现时没有为已有功能引入新 bug。自动化测试提供了一个活生生的文档来描述应用的预期行为,能够让我们在开发过程中更有信心,在第一时间就能了解出现的问题。
本章会介绍Jest(React 推荐的测试框架)和 TestUtils(它提供了一组方法,可在任何一种常见的JavaScript 测试框架中对 React 组件进行测试)。
在本章你了解到如何使用 React 的测试工具进行组件测试。可在一个脱离页面的DOM 节点中生成组件的 DOM 树(使用 renderlntoDocument 方法),也可以使用浅渲染方式在不进行任何渲染的情况下输出组件的虚拟树。组件呈现后,可使用任何一个测试框架来设置断言(用于组件的属性、节点等)你同样学习了Jest这个测试框架它由Facebook提供,并推荐用于 React 项目。
附录 JavaScript 2015
JavaScript 2015(也被称为 ECMAScript 6,简称 ES6)是 JavaScript 语言最新的版本。为了编写复杂的应用,它加入了很多重要的新语法,包括类、模块、新的变量声明关键字和 Promise。它还包含了一些帮助方法和函数级别的语法糖,用来让你的代码更具表达性,例如,箭头函数、模板字符串和解构赋值。
限于文章篇幅原因,就展示到这里了有需要的小伙伴————》点击此处领取《————