2023 年的 React 生态(下)

简介: 2023 年的 React 生态(下)

2023 年的 React 生态(上)https://developer.aliyun.com/article/1411448


表单

React 中最流行的表单库是 React Hook Form。 它带有从验证(最流行的集成是 zod)到提交到表单状态管理所需的一切。 替代方案有 Formik 和 React Final Form。 如果已经在使用了 React UI 库,可以查看它们内置的表单解决方案。

建议

  • React Hook Form
  • 与用于验证的 zod 集成
  • 如果使用 UI 库,可以检查内置表单是否满足所有需求
  • React Hook Form 带有一个干净的 API,用于 UI 库集成

类型检查

React 带有一个名为 PropTypes 的内部类型检查。 通过使用 PropTypes,可以为 React 组件定义 props。 每当将错误类型的 prop 传递给组件时,将在运行应用时收到错误消息:


import PropTypes from 'prop-types';
const List = ({ list }) =>
  <div>
    {list.map(item => <div key={item.id}>{item.title}</div>)}
  </div>
List.propTypes = {
  list: PropTypes.array.isRequired,
};

但是,PropTypes 不再包含在 React 核心库中。 在过去的几年里,PropTypes 变得不那么流行了,取而代之的是 TypeScript:

type Item = {
  id: string;
  title: string;
};
type ListProps = {
  list: Item[];
};
const List: React.FC<ListProps> = ({ list }) =>
  <div>
    {list.map(item => <div key={item.id}>{item.title}</div>)}
  </div>

如果想在 React 中接受类型,TypeScript 是目前的最佳选择。如果想超越 TypeScript 进行类型化表单验证、API 输入/输出验证等,可以使用 Zod。

建议

  • 如果需要类型化的 JavaScript,请使用 TypeScript。

风格和格式

如果想拥抱统一的代码风格,可以在 React 项目中使用 ESLint。 ESLint 等 linter 在 React 项目中强制执行特定的代码风格。例如,可以要求 ESLint 遵循流行的风格指南(例如 Airbnb 风格指南)。 可以将其与 ESLint 与 IDE/编辑器集成,它会指出每个错误。

如果想拥抱统一的代码格式,可以在 React 项目中使用 Prettier。 它是一个代码格式化程序,只有少数可选配置。 可以将它集成到编辑器或 IDE 中,以便在每次保存文件时格式化代码。尽管 Prettier 并没有取代 ESLint,但它与 ESLint 集成得很好。

建议

  • ESLint + Prettier

身份验证

在 React 应用中,如果希望引入具有注册、登录和注销等功能的身份验证。通常还需要其他功能,如密码重置和密码更改功能。这些功能远远超出了 React 的范畴,因为后端应用会管理这些事情。

由于身份验证会带来很多安全风险和并非人人都知道的细节,建议使用现有的身份验证/后端即服务解决方案:

  • Firebase Auth
  • Supabase Auth
  • Auth0
  • AWS Cognito

建议

  • 选择身份验证服务或 BaaS(例如 Firebase/Supabase)

部署和托管

可以像任何其他 Web 应用一样部署和托管 React 应用。 如果想完全控制,可以选择 Digital Ocean。 如果想让托管服务处理所有事情,Netlify 或 Vercel(尤其是 Next.js)是流行的解决方案。 如果已经在使用第三方后端作为 Firebase/Supabase 等服务,可以检查他们是否也提供托管服务。其他流行的托管服务提供商有 Render、Fly.io 或 Railway。

测试

可以使用 Jest 这样的测试框架来测试 React 应用。 它提供了测试运行程序、断言库等功能,综合了测试框架所需的一切。 如果你是 Vite 的粉丝,可以使用 Vitest 作为 Jest 替代品。

可以使用 react-test-renderer 在测试框架中渲染 React 组件。这已经足以使用 Jest 或 Vitest 执行快照测试。 快照测试的工作方式如下:运行测试后,将创建 React 组件的渲染 DOM 元素的快照。 当在某个时间点再次运行测试时,将创建另一个快照,用作前一个快照的差异。如果差异不相同,测试框架会报错,要么必须接受快照,要么更改组件的实现。

React Testing Library (RTL) 是一个比较流行的 React 测试库,RTL 使渲染组件和模拟 HTML 元素上的事件成为可能。之后,可以使用测试框架(例如 Jest/Vitest)用于 DOM 节点上的断言。

如果正在寻找用于 React 端到端 (E2E) 测试的测试工具,Playwright 和 Cypress 是最受欢迎的选择。

建议

  • 单元/集成测试:Jest/Vitest + React Testing Library(最受欢迎)
  • 快照测试:Jest/Vitest
  • E2E 测试:Playwright、Cypress

不可变数据结构

原生 JavaScript 提供了大量内置工具来处理数据结构,就好像它们是不可变的一样。 但是,如果需要使用不可变数据结构,那么最受欢迎的选择之一就是 Immer。

国际化

当涉及到 React 应用的国际化 i18n 时,不仅需要考虑翻译,还需要考虑多元化、日期和货币的格式等。 这些是处理它的最受欢迎的库:

  • FormatJS
  • react-i18next

富文本编辑器

React 中的富文本编辑器:

  • Draft.js
  • Slate.js
  • ReactQuill

时间

近年来,JavaScript 本身在处理日期和时间方面变得非常棒,如果 React 应用需要大量处理日期、时间和时区,可以引入一个库来管理这些东西。

  • date-fns
  • Day.js
  • Luxon

桌面应用程序

Electron 仍然是跨平台桌面应用程序的首选框架。 还有一些替代方案,例如:

  • Tauri(很好的选择,非常受欢迎)
  • Neutralino.js
  • NW.js

文件上传

  • react-dropzone
  • filepond

移动开发

将 React 从 Web 带到移动设备的首选解决方案是 React Native。

VR/AR

使用 React 可以深入虚拟现实或增强现实。现成的解决方案包括:

  • react-three-fiber
  • react-360
  • aframe-react

组件文档

编写组件文档的解决方案包括:

  • Storybook
  • Docusaurus
  • Docz
  • Styleguidist

参考:www.robinwieruch.de/react-libra…


相关文章
|
7月前
|
存储 前端开发 JavaScript
【第24期】一文读懂React生态
【第24期】一文读懂React生态
170 0
|
7月前
|
资源调度 前端开发 JavaScript
2023 年的 React 生态(上)
2023 年的 React 生态
125 0
|
前端开发
|
资源调度 前端开发 JavaScript
react生态下jest单元测试
react生态下jest单元测试
1862 1
react生态下jest单元测试
|
前端开发 JavaScript 测试技术
React生态单元测试框架对比
React生态单元测试框架对比
129 0
|
前端开发 JavaScript Shell
基于react/vue生态的前端集成解决方案探索与总结
本文主要总结了笔者在多年前端工作中的技术方案选型,结合各种不同类型的项目,搭建了一套完整的前端集成解决方案,主要包含如下内容
417 0
|
前端开发 JavaScript 测试技术
React生态单元测试框架对比
单元测试通过对最小的可测试单元(通常为单个函数、模块、对象、组件等)进行测试和验证,来保证代码的健壮性。单元测试是开发者的第一道防线。单元测试不仅能强迫开发人员理解我们的代码,也能帮助我们记录和调试代码
1421 0
React生态单元测试框架对比
|
Web App开发 前端开发 JavaScript
react 前端项目技术选型、开发工具、周边生态
react 前端项目技术选型、开发工具、周边生态 声明:这不是一篇介绍 React 基础知识的文章,需要熟悉 React 相关知识 主架构:react, react-router, redux, redux-thunk, r...
2142 0
|
23天前
|
前端开发 JavaScript 开发者
颠覆传统:React框架如何引领前端开发的革命性变革
【10月更文挑战第32天】本文以问答形式探讨了React框架的特性和应用。React是一款由Facebook推出的JavaScript库,以其虚拟DOM机制和组件化设计,成为构建高性能单页面应用的理想选择。文章介绍了如何开始一个React项目、组件化思想的体现、性能优化方法、表单处理及路由实现等内容,帮助开发者更好地理解和使用React。
59 9
|
2月前
|
前端开发
深入解析React Hooks:构建高效且可维护的前端应用
本文将带你走进React Hooks的世界,探索这一革新特性如何改变我们构建React组件的方式。通过分析Hooks的核心概念、使用方法和最佳实践,文章旨在帮助你充分利用Hooks来提高开发效率,编写更简洁、更可维护的前端代码。我们将通过实际代码示例,深入了解useState、useEffect等常用Hooks的内部工作原理,并探讨如何自定义Hooks以复用逻辑。