本书从几个维度介绍了React。一是作为 View 库,它怎么实现组件化,以及它背后的实现原理。二是扩展到 Flux 应用架构及重要的衍生品 Redux,它们怎么与React 结合做应用开发。三是对 React 与server的碰撞产生的一些思考。四是讲述它在可视化方面的优势与劣势。
本书适合有一定经验的前端开发人员阅读。
前端高速发展十余年,我们看到了浏览器厂商的竞争,经历了标准库的竞争,也经历了短短几年 ECMAScript 标准的迭代。到今天,JavaScript 以完全不同的方式呈现出来。
这是最好的时代,这是最坏的时代,这是智慧的时代,这是愚蠢的时代;这是信仰的时期,这是怀疑的时期;这是光明的季节,这是黑暗的季节;这是希望之春,这是失望之冬。
这是对前端发展这些年最恰当的概括。整个互联网应用经历了从轻客户端到富客户端的变化,前端应用的规模变得越来越大,交互越来越复杂。在近几年,前端工程用简单的方法库已经不能维系应用的复杂度,需要使用一种框架的思想去构建应用。因此,我们看到MVC、MVVM这些 B/S 或C/S 中常见的分层模型都出现在前端开发的过程中。与其说不断在创新,还不如说前端在学习之前应用端已经积累下来的浑厚体系。
在发展的过程中,出现了大量优秀的框架,比如 Backbone、Angular、Knockout、Ember 这些框架大都应用了 MV* 的理念,把数据与视图分离。而就在这样纷繁复杂的时期,2013 年 Facebook 发布了名为 React 的前端库。
从表现上看,React被大部分人理解成 View库。然而,从它的功能上看,它远远复杂于View的承载。它的出现可以说是灵光一现,我记得曾经有人说过,Facebook 发布的技术产品总是包含伟大的思想。的确,从此,Virtual DOM、服务端渲染,甚至 powernative apps,这些概念开始引发一轮新的思考。
从官方描述中,创造 React 是为了构建随着时间数据不断变化的大规模应用程序。正如它的描述一样,React 结合了效率不低的 Virtual DOM渲染技术,让构建可组合的组件的思路可行。我们只要关注组件自身的逻辑、复用及测试,就可以把大型应用程序玩得游刃有余。
在 0.13 版本之后,React 也慢慢趋于稳定,越来越多的前端工程师愿意选择它作为应用开发的首选,国内也有很多应用开始用它作为主架构的核心库。
在未来,React 必然不过是一块小石头沉入水底,但它溅起的涟漪影响了无数的前端开发的思维,影响了无数应用的构建。对于它来说,这些就是它的成就。成就 JavaScript 的繁荣,成就前端标准更快地推进。
本书希望从实践起步,以深刻的角度去解读 React 这个库给前端界带来的革命性变化。目前,不论在国内,还是在国外,已经有一些入门的 React 图书,它们大多在介绍基本概念,那些内容可以让你方便地进入 React世界。但本书除了详细阐述基本概念外,还会帮助你从了解 React到熟悉其原理,从探索 Flux 应用架构的思想到精通 Redux 应用架构,帮助你思考 React 给前端界带来的价值。React 今天是一种思想,希望通过解读它,能够让读者有自学的能力。
本书从几个维度介绍了React。一是作为 View库,它怎么实现组件化,以及它背后的实现原理。二是扩展到Flux 应用架构及重要的衍生品 Redux,它们怎么与React结合做应用开发。三是对它与 server 的碰撞产生的一些思考。四是讲述它在可视化方面有着怎样的优势与劣势。
下面是各章的详细介绍。
第 1 章 这一章从 React 最基本的概念与 API讲起,让读者熟悉 React 的编码过程。第 2章 这一章更深入到 React 的方方面面,并从一个具体实例的实现到自动化测试过程来讲述 React 组件化的过程和思路。
第 3 章 这一章深入到 React 源码,介绍了React背后的实现原理,包括 Virtual DOM、diff算法到生命周期的管理,以及 setState 机制。
第 4章 这一章介绍了 React 官方应用架构组合 Flux,从讲解 Flux 的基本概念及其与 MV*架构的不同开始,解读 Flux 的核心思想。
第 5 章 这一章介绍了业界炙手可热的应用架构 Redux,从构建一个 SPA 应用讲到背后的实现逻辑,并扩展了 Redux 生态圈中常用的 middleware 和 utils 方法。
第 6章 这一章讲述 Redux高阶运用,包括高阶 reducer、它在表单中的运用以及性能优化的方法。另外,从源码的角度解读了Redux。
第 7 章 这一章介绍了React 在服务端渲染的方法,并从一个实例出发结合 Koa 完整地讲述了同构的实现。
第 8章 这一章探索了实现可视化图形图表的方法,以及如何通过这些方法和 React 结合在一起运转。
附录 A 探讨了React开发环境的基本组成部分以及常规的安装方法。附录 B 探讨了团队实践或多人协作过程中需要关注的编码规范问题。附录C 探讨了Koa middleware 的相关知识,帮助理解 Redux middleware。
欢迎进入 React世界。从本章开始,不论你是刚刚入门的前端开发者,还是经验老道的资深工程师,都可以学习到 React 的基本思想以及基本用法。在之后慢慢深入的过程中,各节均会不同程度地带上进阶的实践与分析。希望在本章结束时,我们能够带领你实现应用 React 进行基本的组件开发。请从这里开始你的旅程…
1.1 React 简介
React 是Facebook在2013年开源在 GitHub 上的 JavaScript库。React把用户界面抽象成一个个组件,如按钮组件Button、对话框组件Dialog、日期组件Calendar。开发者通过组合这些组件,最终得到功能丰富、可交互的页面。通过引入 JSX语法,复用组件变得非常容易,同时也能保证组件结构清晰。有了组件这层抽象,React 把代码和真实渲染目标隔离开来,除了可以在浏览器端渲染到 DOM来开发网页外,还能用于开发原生移动应用。
1.1.1 专注视图层
现在的应用已经变得前所未有的复杂,因而开发工具也必须变得越来越强大。和 Angular、 Ember 等框架不同,React 并不是完整的 MVC/MVVM 框架,它专注于提供清晰、简洁的 View(视图)层解决方案。而又与模板引擎不同,React 不仅专注于解决 View 层的问题,又是一个包括 View 和 Controller 的库。对于复杂的应用,可以根据应用场景自行选择业务层框架,并根据需要搭配 Flux、Redux、GraphQL/Relay 来使用。
React 不像其他框架那样提供了许多复杂的概念与烦琐的 API,它以 Minimal APIInterface 为目标,只提供组件化相关的非常少量的API。同时为了保持灵活性,它没有自创一套规则,而是尽可能地让用户使用原生 JavaScript 进行开发。只要熟悉原生 JavaScript 并了解重要概念后,就可以很容易上手 React 应用开发。
1.1.2 Vitual DOM
真实页面对应一个DOM树。在传统页面的开发模式中,每次需要更新页面时,都要手动操 作 DOM来进行更新,如图1-1所示。
DOM操作非常昂贵。我们都知道在前端开发中,性能消耗最大的就是 DOM操作,而且这部分代码会让整体项目的代码变得难以维护。React把真实DOM树转换成JavaScript对象树,也就是 Virtual DOM,如图 1-2所示。
每次数据更新后,重新计算 Virtual DOM,并和上一次生成的 Virtual DOM 做对比,对发生变化的部分做批量更新。React也提供了直观的 shouLdComponentUpdate生命周期回调,来减少数据变化后不必要的 Virtual DOM 对比过程,以保证性能。
我们说 Virtual DOM提升了React的性能,但这并不是React的唯一亮点。此外,Virtual DOM的渲染方式也比传统 DOM操作好一些,但并不明显,因为对比 DOM 节点也是需要计算资源的。
它最大的好处其实还在于方便和其他平台集成,比如 react-native 是基于 VirtualDOM渲染出原生控件,因为 React 组件可以映射为对应的原生控件。在输出的时候,是输出 Web DOM,还是 Android控件,还是iOS控件,就由平台本身决定了。因此,react-native有一个口号——Learn Once, Write Anywhere。
1.1.3 函数式编程
在过去,工业界的编程方式一直以命令式编程为主。命令式编程解决的是做什么的问题,比如图灵机,而现代计算机就是一个经历了多次进化的高级图灵机。如果说人脑最擅长的是分析问题,那么电脑最擅长的就是执行指令,电脑只需要几条汇编指令就可以轻松算出我们需要很长时间才能解出的运算。命令式编程就像是在给电脑下命令,现在主要的编程语言(包括C和Java等)都是由命令式编程构建起来的。
而函数式编程,对应的是声明式编程,它是人类模仿自己逻辑思考方式发明出来的。声明式编程的本质是lambda 演算"。试想当我们操作数组的每个元素并返回一个新数组时,如果是计算机的思考方式,则是需要一个新数组,然后遍历原数组,并计算赋值;如果是人的思考方式,则是构建一个规则,这个过程就变成构建一个f 函数作用在数组上,然后返回新数组。这样,计算可以被重复利用。
当回到 UI 界面上,我们的产品经理又想出了一个新点子时,我们是抱怨呢,还是去思考怎么解决这个问题。React把过去不断重复构建 UI的过程抽象成了组件,且在给定参数的情况下约定渲染对应的UI界面。React能充分利用很多函数式方法去减少冗余代码。此外,由干它本身就是简单函数,所以易于测试。可以说,函数式编程才是 React 的精髓。
1.2 JSX语法
当初学 React 时,JSX 是我们遇到的第一个新概念。也许我们都是写惯了JavaScript 程序的开发者,对于类似于静态编译并不感冒。早些年风靡前端界的 CoffeeScript,也因为 ES6 标准化的加速推进,慢慢变为了茶余饭后的谈资。面对 React,我们又一次需要玩转一门新的静态转译语言,而这一次,又会有什么不一样的体验呢。
1.2.1 JSX的由来
JSX与 React有什么关系呢?简单来讲,React为方便View层组件化,承载了构建HTML 结构化页面的职责。从这点上来看,React 与其他 JavaScript 模板语言有着许多异曲同工之处,但不同之处在于 React 是通过创建与更新虚拟元素(virtual element)来管理整个 Virtual DOM的。
说明 JSX语言的名字最早出现在游戏厂商 DeNA,但和React 中的 JSX 不同的是,它意在通过加入增强语法,使得 JavaScript 变得更快、更安全、更简单。
其中,虚拟元素可以理解为真实元素的对应,它的构建与更新都是在内存中完成的,并不会真正渲染到DOM中去。在 React 中创建的虚拟元素可以分为两类,DOM元素(DOM element)与组件元素(component element ),分别对应着原生 DOM元素与自定义元素,而 JSX 与创建元素的过程有着莫大的关联。
接着,我们从这两种元素的构建开始说起。
【下载地址】
链接:https://pan.baidu.com/s/195DjTa4vJ5X1m3ZMNVTM3w
提取码:kjz1
相关文章
希望读者把阅读这本书的过程当做一个旅程,由浅入深地了解 React 和 Redux,如果你对 React 和 Redux 技术已经有一些了解
本书从几个维度介绍了React。一是作为 View 库,它怎么实现组件化,以及它背后的实现原理。二是扩展到 Flux 应用架构及重要的衍生品
本书旨在解决前端开发者的烦恼,使他们的生活更有意义、更加快乐,并通过介绍 React帮助他们赚到更多的钱——这些会以一种快速的方式进行。本书
ReactJS 是 Facebook 推出的 JavaScript 函数库,若以 MVC 框架来看,React 定位是在 View 的范畴。
本书以 React 技术栈为核心,在介绍 React 用法的基础上,从源码层面分析了Redux 思想,同时着重介绍了服务端渲染和同构应用的架
React 的核心思想是∶ 封装组件。
本书共分四部分,全面介绍如何使用 React与 Redux进行Web 开发。
本书是专门为希望学习React脚本库,同时也希望学习当前JavaScript语言最新特性的开发人员而编写的。
通过介绍 React 中最有价值的设计模式,展示如何将设计模式和最佳实践应用于现实的新项目和已有项目中
本书从现代前端开发的标准、趋势和常用工具入手,由此引出了优秀的构建工具 webpack 和 JavaScript库 React,之后用一系列
本书是 React 入门书。前 3章介绍如何从空白的 HTML页面开始构建应用。第4章介绍 JSX语法。从第5章开始,你会学习到在实际开发中
React 是由 Facebook 创建的一个开源项目。它提供了一种在 JavaScript 中构建用户界面的全新方式。自从它公开发布后,这
React Router 是完整的 React 路由解决⽅案 React Router 保持 UI 与 URL 同步。它拥有简单的 API
本书以实战为主旨,通过完整的电商类 App 项目实例,来介绍 React Native 中常用的组件、API、布局、第三方组件和原生接口,让
Native 有更好的人机交互体验:1. 更丰富细腻的动画效果 2. 更精准的手势识别 3. 原生控件有更好的体验 ;4. 更合适的线程模型
FlashFXP绿色版网盘下载,附激活教程 1839
FlashFxp百度网盘下载链接:https://pan.baidu.com/s/1MBQ5gkZY1TCFY8A7fnZCfQ。FlashFxp是功能强大的FTP工具
Adobe Fireworks CS6 Ansifa绿色精简版网盘下载 1607
firework可以制作精美或是可以闪瞎眼的gif,这在广告领域是需要常用的,还有firework制作下logo,一些原创的图片还是很便捷的,而且fireworks用法简单,配合dw在做网站这一块往往会发挥出很强大的效果。百度网盘下载链接:https://pan.baidu.com/s/1fzIZszfy8VX6VzQBM_bdZQ
navicat for mysql中文绿色版网盘下载 1652
Navicat for Mysql是用于Mysql数据库管理的一款图形化管理软件,非常的便捷和好用,可以方便的增删改查数据库、数据表、字段、支持mysql命令,视图等等。百度网盘下载链接:https://pan.baidu.com/s/1T_tlgxzdQLtDr9TzptoWQw 提取码:y2yq
火车头采集器(旗舰版)绿色版网盘下载 1737
火车头采集器是站长常用的工具,相比于八爪鱼,简洁好用,易于配置。火车头能够轻松的抓取网页内容,并通过自带的工具对内容进行处理。站长圈想要做网站,火车头采集器是必不可少的。百度网盘链接:https://pan.baidu.com/s/1u8wUqS901HgOmucMBBOvEA
Photoshop(CS-2015-2023)绿色中文版软件下载 1858
安装文件清单(共46G)包含Window和Mac OS各个版本的安装包,从cs到cc,从绿色版到破解版,从安装文件激活工具,应有尽有,一次性打包。 Photoshop CC绿色精简版 Photoshop CS6 Mac版 Photoshop CC 2015 32位 Photoshop CC 2015 64位 Photoshop CC 2015 MAC版 Photoshop CC 2017 64位 Adobe Photoshop CC 2018 Adobe_Photoshop_CC_2018 Photoshop CC 2018 Win32 Photoshop CC 2018 Win64