#学习React + React-Router + Redux 集成前端解决方案
React
React 是一个用来构建用户界面的 JavaScript 库,近年来发展迅速,相关生态建设十分繁荣,它主要具有以下特性:
-
声明式编程。开发者只需为简单的为应用的每个状态(state)设计视图(view),业务逻辑只需要关注数据操作,这样当数据改变时,React 将高效地更新渲染出正确的视图。视图采用声名式的方式编写,使得代码更加可预测和易于调试。
-
组件化。React 代码组织方式为组件(Component)的形式。每个组件包含有各自的状态(state)、逻辑和需渲染的视图内容,构建出组件后,再将这些组件进行组合来构建复杂的用户界面。这使得代码组成更加模块化,重用代码代码也更加容易。并且组件逻辑由 JavaScript 编写而不是固定在视图模板中,这可以更加轻易的在应用中传递、处理复杂数据,并保持了应用状态与 DOM 的分离、使代码逻辑更加清晰更易于维护。
-
可使用于多平台。React 并不依赖于其他的技术栈,所以在现有项目中引入 React 时并不需要覆写原有代码。并且 React 可以在使用 Node.js 时实现服务端渲染,并且借助 React Native 可咦提供实现原生移动 App 的能力。
React-Router
React-Router 是一个基于 React 的强大前端路由库,库中提供了一系列声明式的导航组件(Navigational Components),通过这些组件可以方便的管理 URL,并实现组件的切换和状态的变化。
通过 React-Router 可以很便捷地搭建 SPA (Single Page Application,即单页应用)。SPA 通过 AJAX 实现页面局部更新而避免了页面整体重加载,减少了不必要的渲染并消除了重加载所需的等待时间,在极大提升了用户体验的同时,大大降低了 Web 应用服务端的渲染负担,提高整个 Web 应用服务的效率。
Redux
React 只是一个视图层的库,是 DOM 的一个抽象层,并不是一套 Web 前端应用的完整解决方案,其本身并没有提供完整的状态管理机制,这在应用包含复杂的业务逻辑时状态变的难以操控。
Redux 是 Flux 模式[标注] 的一种实现,是一个 JavaScript 的状态容器,可以提供可预测化的状态管理。
将整个应用的状态抽离,配合 react 的state -> view 的模式,使 Web 应用成为一个状态机,视图与状态是一一对应的。
使得调试更为简单开发体验,可以提供时间旅行式的调试。