React是一个专门用于创建网页前端图形界面的库。与功能全面的框架(如Angular)不同,这类库仅涵盖应用程序的特定方面。现在Web应用程序变得越来越复杂,就需要更多的库来加快开发速度并保持源代码的可管理性。接下来的部分将简要介绍一些React生态系统中最重要的库。在本书的后续章节中,你将更详细地了解这些工具。
状态管理
大型React应用程序的一种流行架构是Flux架构,这个架构实现了展示层与状态和业务逻辑的解耦。redux库是Flux架构的具体实现之一。redux的核心是提供一个中央存储库(store)来存储应用程序的信息。这个存储库的数据可以被读取,但不能直接写入。要修改数据,需要通过所谓的"动作(actions)”。动作是描述状态变化的简单JavaScript对象,由reducer函数接收,reducer函数可以修改存储库。有关集中式状态管理和redux的更多信息,请参见第14章。
路由
如果应用程序有多个视图(页面),切换视图可能会非常耗时,并且会导致应用程序中的代码变得杂乱。一个解决方案是使用路由,这在大多数其他前端框架中也可以使用。这一功能通过使用React Router实现,可以根据选定的URL插入组件树。在使用React Router时,可以使用浏览器的History API。
除了在组件树之间导航,路由还支持其他功能,比如可以在组件中访问的URL变量,或者嵌套路由。
Material UI
你可以在互联网上可以找到许多设计相关的建议和规范,而其中最受欢迎的一种是Google推出的Material Design。为了让开发者不必亲自编写和实现各个元素,有一个名为Material UI的库,该库提供了一系列已经按照Material Design规范实现的预制组件。这些组件不仅包括像按钮、输入框这样的基本组件,还包含了一些更复杂的组件,如对话框、数据表格和菜单等。使用Material UI,可以帮助开发者更轻松地创建符合Material Design标准的用户界面。
Jest
Meta开发了一个测试框架,叫做Jest。虽然这个测试框架并不直接与React绑定,但非常适合与React库一起使用。默认情况下,Jest不需要额外的配置,并且在一个模拟环境中运行测试React运用程序,而不是在浏览器中运行。这一特点也确保了测试的执行速度比其他框架(如Jasmine与Karma的组合)更快。
Jest的另一个显著特点是快照测试,你可以使用Jest的快照测试功能生成并保存组件在特定时间点的静态“快照”,即组件的当前输出状态。将静态“快照”作为比较的基础,以检测组件的变化。