2022 年值得推荐的 76个 React 库!

此文为译文,原文出自:

原作者:Amitav Mishra 原文链接:React Libraries for 2022[1]

译者:LBJ

React 出现已经有一定的时间了。从那时起,围绕组件驱动的库发展了一个全面而强大的库生态系统。来自其他编程语言或库/框架的开发者通常很难弄清楚使用 React 创建 Web 应用程序的所有库。

从本质上讲,React 使用户能够使用函数组件[2]创建组件驱动的用户界面。不过,它带有几个内置的解决方案,例如,用于本地状态、副作用和性能优化的 React Hooks。但毕竟,你在这里只处理函数(组件和钩子)来创建 UI

以下文章将会为你如何选择库来构建 React 应用程序提供指导。

目录

本文目录如下:

  • 如何创建 React 项目
  • React 状态管理
  • React 数据获取
  • 使用 React Router
  • React 中的 CSS 样式
  • React UI 库
  • React 动画库
  • React 中的可视化和图表库
  • React 中的表单库
  • React 类型检查
  • React 代码结构:样式和格式
  • React 验证
  • React 托管
  • React 中的测试
  • React 和不可变数据结构
  • React 国际化
  • React中的富文本编辑器
  • React 中的支付
  • React 中的时间
  • React 桌面应用程序
  • 使用React进行手机开发
  • React VR/AR
  • React的原型设计
  • React 组件文档

如何创建 React 项目

对于每个React初学者来说,在加入React 时如何建立一个React项目都是未知的。有许多框架可供选择。React社区的现状是Facebook的create-react-app (CRA)[3]。它的配置为零,并为你提供了一个极简的开箱即用的React应用程序。所有工具都对你隐藏,但你可以稍后更改工具(例如 eject 或 craco)。

继续阅读:了解为什么像React这样的框架很重要[4]

然而,现在CRA建立在过时的工具上——这导致了较慢的开发体验。Vite[5] 是时下最受欢迎的新产品之一,它的开发和生产速度令人难以置信[6],而且有很多模板可供选择(如React、React + TypeScript)。

如果你已经熟悉 React,你可以选择它最流行的(元)框架之一作为替代:Next.js[7]Gatsby.js[8]。这两个框架都建立在 React 之上,因此你应该已经熟悉 React 的基础知识[9]。这个领域另一个流行但更新的框架是 Remix[10],它在 2022 年绝对值得一试。

继续阅读:了解有关网站和 Web 应用程序的更多信息[11]

虽然Next.js最初用于服务器端渲染(例如动态web应用程序),但Gatsby.js主要用于静态站点(例如静态网站,如博客和登陆页面)。但是,在过去几年中,两个框架之间的线路都有模糊,因为 Next.js 允许你选择加入静态站点,而 Gatsby 允许你选择加入服务器端渲染。在这个阶段,我会说 Next.js 赢得了大多数用例的流行之战。

继续阅读:如何创建现代 JavaScript 项目[12]

如果你只是想了解像create-react-app这样的工具在底层是如何工作的,试着自己从头开始创建一个React项目[13]。你将从一个简单的HTML JavaScript项目开始,自己添加React及其支持工具(如Webpack, Babel)。这不是你在日常工作中必须要处理的事情,但这是了解底层工具的一个很好的学习经验。

建议:

  • Vite 用于客户端 React 应用程序
    • CRA 备选
  • Next.js 主要用于服务器端渲染的 React 应用程序
    • 前沿技术:Remix
    • Gatsby 用于静态生成器 备选
  • 可选学习经验:从头开始创建 React 项目

React 状态管理

React自带两个内置钩子来管理本地状态:useState[14]useReducer[15]。如果状态需要全局管理,你可以选择加入React内置的useContext Hook[16],在不使用道具的情况下将道具从顶级组件传递到底层组件,从而避免了props drilling的问题。

继续阅读:了解何时使用useState和useReducer[17]

这三个React钩子都能让开发者在React中实现强大的状态管理,这些状态管理可以通过React的useState/useReducer钩子放在组件中,也可以通过与React的useContext钩子结合在一起进行全局管理。

继续阅读: 学习如何结合useState/useReducer和useContext[18]

如果你发现自己过于频繁地使用React的Context来处理共享/全局状态,你一定要看看Redux[19],它是最流行的状态管理库。它允许你管理应用程序的全局状态,任何连接到其全局存储的React组件都可以读取和修改应用程序的全局状态。

继续阅读: 学习Redux[20]

如果你碰巧使用Redux,你一定也应该查看Redux Toolkit[21]。它是Redux核心之上的一个很棒的API,极大地改善了开发者使用Redux的体验。

作为替代方案,如果你喜欢全局store的总体概念,但不喜欢 Redux 的处理方式,请查看其他流行的本地状态管理解决方案,例如 Zustand[22]Jotai[23]XState[24]Recoil[25]

建议:

  • useState/useReducer 用于共存或共享状态

  • 选择使用 useContext 来启用

    一些

    全局状态

    • 可选学习经验:学习如何结合useState/useReducer和useContext
  • Redux(或另一种选择)用于许多全局状态

React 数据获取

React的内置钩子非常适合UI状态,但当涉及到远程数据的状态管理(因此也包括数据获取)时,我建议使用一个专门的数据获取库,比如React Query[26],它自带内置的状态管理功能。虽然React Query本身并不被看作是一个状态管理库,因为它主要用于从api获取你的远程数据,但它会为你处理这些远程数据的所有状态管理(例如缓存,乐观更新)。

继续阅读: 了解React Query是如何工作的[27]

React Query是为使用REST api[28]而设计的。然而,现在它也支持GraphQL[29]。但是如果你正在为你的React前端寻找一个专用的GraphQL库,可以选择Apollo Client[30](流行版)、urql[31](轻量级版)或Relay[32] (Facebook版)。

继续阅读: React中关于本地和远程数据状态的所有内容[33]

如果你已经在使用 Redux,并且想在 Redux 中添加具有集成状态管理的数据获取功能,而不是添加 React Query,你可能需要查看 RTK Query[34],它将数据获取巧妙地集成到 Redux 中。

建议:

  • React Query (REST APIs, GraphQL APIs)
    • 使用axios作为获取库
  • Apollo Client (GraphQL APIs)
  • 可选的学习经验:学习React Query是如何工作的

使用 React Router

如果你使用的是像Next.js或Gatsby.js这样的React框架,路由已经为你解决了。然而,如果你使用React时没有框架,只用于客户端渲染(如CRA),那么最强大、最流行的路由库是React Router[35]

继续阅读: 学习使用React Router[36]

在你的React项目中引入路由器之前,当你正要学习React时,你可以先尝试一下React的条件渲染[37]。它不是路由的替代品,但在小型应用程序中,它经常以这种方式交换组件。微信搜索公众号:Java项目精选,回复:java 领取资料 。

建议:

  • React Router
    • 可选学习经验:学习使用React Router

React 中的 CSS 样式

React中有很多关于样式/CSS的选项,甚至更多的意见,所以把所有的东西放在一个部分是不够的。如果你想更深入地了解这个主题,了解所有的选项,请查看以下指南。

继续阅读: React CSS样式[38]

但是让我们先从概述开始。作为一个React初学者,可以通过使用一个带有所有CSS属性的样式对象作为HTML样式属性的键/值对来开始使用内联样式和基本的CSS。

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[64]是现在的最佳选择。

建议:

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

React 代码结构:样式和格式

本质上,有两种方法可以遵循代码结构的常识:

如果你想要一种统一的、通用的代码风格,在你的React项目中使用ESLint。像ESLint这样的检测程序在你的React项目中强制执行特定的代码风格。例如,你可以在ESLint中要求遵循一个流行的风格指南(如Airbnb风格指南)。之后,将ESLint与你的IDE/编辑器集成,它会指出你的每一个错误。

继续阅读: React文件/文件夹结构[65]

如果你想采用统一的代码格式,在React项目中使用Prettier。它是一个固执的代码格式化器,只有少量可选择的配置。你可以将其集成到编辑器或IDE中,以便在每次保存文件时对代码进行格式化。虽然Prettier不能取代ESLint,但它可以很好地与ESLint集成。

建议:

  • ESLint + Prettier

React 验证

在React应用程序中,你可能希望引入带有注册、登录和退出等功能的身份验证。其他功能,如密码重置和密码更改功能通常也需要。这些特性远远超出了React的范畴,因为后台应用程序会为你管理这些东西。

继续阅读: 如何准备React Router认证[66]

最好的学习经验是自己实现一个带有身份验证的后端应用程序(例如GraphQL backend[67])。然而,由于身份验证有很多安全风险,而且并非每个人都知道细节,我建议使用现有的众多身份验证/后端即服务解决方案中的一种:

  • Firebase[68]
  • Auth0[69]
  • AWS Cognito[70]

建议:

  • 选择一个认证服务或BaaS(如Firebase)
  • 可选学习经验:自定义后端

React 托管

你可以像部署其他web应用一样部署和托管React应用。如果你想拥有完全的控制权,选择像Digital Ocean[71]这样的东西。如果你想找人来处理所有的事情,Cloudflare Workers[72]Netlify[73]Vercel[74](特别是针对Next.js)是流行的解决方案。如果你已经在使用像Firebase这样的第三方后台服务,你可以检查他们是否也提供托管服务(例如Firebase hosting[75])。

React 中的测试

如果你想深入了解React中的测试,请阅读这篇文章:如何在React中测试组件。这里有一个要点:测试一个React应用的主干是Jest。它提供了测试运行器、断言库和监视/模仿/存根功能。一个全面的测试框架所需要的一切。

至少,你可以使用React-test-renderer[76]在Jest测试中呈现React组件。这已经足够用Jest执行所谓的Snapshot Tests[77]了。Snapshot Tests的工作方式如下:一旦运行测试,就会创建React组件中呈现的DOM元素的快照。当你在某个时间点再次运行测试时,将创建另一个快照,该快照将用作前一个快照的差异。如果差异不相同,Jest将发出抱怨,你要么必须接受快照,要么更改组件的实现。

最终,你会发现自己正在使用流行的React测试库(RTL)[78]——它是在Jest测试环境中使用的——来为React创建一个更复杂的测试库。RTL使呈现组件和在HTML元素上模拟事件成为可能。之后,Jest用于DOM节点上的断言。

如果你正在寻找React端到端(E2E)测试的测试工具,Cypress[79]是最受欢迎的选择。不过另一个越来越受欢迎的是Playwright[80]

建议:

  • Unit/Integration: Jest + React Testing Library (最流行的)
  • Snapshot Tests: Jest
  • E2E Tests: Cypress

React 和不可变数据结构

Vanilla JavaScript 为你提供了大量的内置工具来处理数据结构,就好像它们是不可变的一样。但是,如果你和你的团队觉得需要执行不可变的数据结构,那么最流行的选择之一就是Immer[81]。我个人不使用它,因为JavaScript可以用于管理不可变的数据结构,但任何时候有人问起JS的不可变性,就会有人推荐它。

React 国际化

当涉及到React应用程序的国际化i18n时,你不仅需要考虑翻译,还需要考虑多元化、日期和货币的格式,以及其他一些事情。以下是最常用的处理它的库:

  • FormatJS[82]
  • react-i18next[83]

React中的富文本编辑器

说到React中的富文本编辑器,我只能想到以下这些,因为我还没有在React中使用过其他的编辑器:

  • Draft.js[84]
  • Slate.js[85]
  • ReactQuill[86]

React 中的支付

和其他网络应用一样,最常见的支付提供商是Stripe和PayPal。两者都可以巧妙地集成到React中。这是一个与React集成的Stripe Checkout。

  • PayPal[87]
  • React Stripe Elements[88] or Stripe Checkout[89]

React 中的时间

JavaScript本身在最近几年的日期和时间处理上做得非常棒。因此,实际上不需要使用库来处理它们。然而,如果你的React应用需要处理大量的日期、时间和时区,你可以引入一个库来为你管理这些东西。以下是你的选择:

  • date-fns[90]
  • Day.js[91]
  • Luxon[92]

React 桌面应用程序

Electron[93] 是跨平台桌面应用程序的框架。然而,也有其他选择,例如:

  • Tauri[94] (fairly new)
  • NW.js[95]
  • Neutralino.js[96]

使用React进行手机开发

想将React从网页带到手机平台的解决方案仍然是React Native。如果你想帮助一个框架创建React Native应用程序,请查看Expo[97]

继续阅读: 学习React Native[98]

React VR/AR

通过React,我们可以深入研究虚拟现实或增强现实。老实说,我没有使用过这些库中的任何一个,但它们是我在React中所熟悉的AR/VR库:

  • react-three-fiber[99] (流行的 3d 库, 我也看到过VR的例子)
  • react-360[100]
  • aframe-react[101]

React的原型设计

如果你有UI/UX背景,你可能想要使用一个工具来快速创建React组件、布局或UI/UX概念的原型。我过去使用Sketch[102],但后来改用Figma[103]。虽然我两个都喜欢,但我现在不后悔使用Figma。Zeplin[104]是另一种选择。对于粗糙而轻量级的草图,我喜欢使用Excalidraw[105]。如果你正在寻找交互式UI/UX设计,请查看InVision[106]

React 组件文档

如果你负责为组件编写文档,有各种各样的React文档工具。我已经在许多项目中使用了Storybook,我只能推荐它,但我也听说过其他解决方案的好处:

  • Docusaurus[107]
  • Docz[108]
  • Styleguidist[109]

毕竟,React生态系统可以被看作是React的一个框架,但它的核心仍然是React的灵活性。它是一个灵活的框架,你可以根据自己的了解做出想要选择加入哪些库的决定。你可以从小处开始,只添加库来解决特定的问题。相反,如果你只需要React,你可以只使用这个库来保持轻量级。

结语

好了以上就是本文的所有内容,如有问题,欢迎指正 🌹

作者:LBJ

链接:https://juejin.cn/post/7085558184252801061

参考资料

[1]

React Libraries for 2022: https%3A%2F%2Fwww.robinwieruch.de%2Freact-libraries%2F

[2]

函数组件: https%3A%2F%2Fwww.robinwieruch.de%2Freact-function-component%2F

[3]

create-react-app (CRA): https%3A%2F%2Fgithub.com%2Ffacebookincubator%2Fcreate-react-app

[4]

了解为什么像React这样的框架很重要: https%3A%2F%2Fwww.robinwieruch.de%2Fwhy-frameworks-matter%2F

[5]

Vite: https%3A%2F%2Fvitejs.dev%2F

[6]

速度令人难以置信: https%3A%2F%2Ftwitter.com%2Frwieruch%2Fstatus%2F1491093471490412547

[7]

Next.js: https%3A%2F%2Fnextjs.org%2F

[8]

Gatsby.js: https%3A%2F%2Fwww.gatsbyjs.org%2F

[9]

React 的基础知识: https%3A%2F%2Fwww.roadtoreact.com%2F

[10]

Remix: https%3A%2F%2Fremix.run%2F

[11]

了解有关网站和 Web 应用程序的更多信息: https%3A%2F%2Fwww.robinwieruch.de%2Fweb-applications%2F

[12]

如何创建现代 JavaScript 项目: https%3A%2F%2Fwww.robinwieruch.de%2Fjavascript-project-setup-tutorial%2F

[13]

创建一个React项目: https%3A%2F%2Fwww.robinwieruch.de%2Fminimal-react-webpack-babel-setup%2F

[14]

useState: https%3A%2F%2Fwww.robinwieruch.de%2Freact-usestate-hook

[15]

useReducer: https%3A%2F%2Fwww.robinwieruch.de%2Freact-usereducer-hook%2F

[16]

useContext Hook: https%3A%2F%2Fwww.robinwieruch.de%2Freact-usecontext-hook%2F

[17]

了解何时使用useState和useReducer: https%3A%2F%2Fwww.robinwieruch.de%2Freact-usereducer-vs-usestate%2F

[18]

学习如何结合useState/useReducer和useContext: https%3A%2F%2Fwww.robinwieruch.de%2Freact-state-usereducer-usestate-usecontext%2F

[19]

Redux: https%3A%2F%2Fredux.js.org%2F

[20]

学习Redux: https%3A%2F%2Fwww.robinwieruch.de%2Freact-redux-tutorial%2F

[21]

Redux Toolkit: https%3A%2F%2Fredux-toolkit.js.org%2F

[22]

Zustand: https%3A%2F%2Fgithub.com%2Fpmndrs%2Fzustand

[23]

Jotai: https%3A%2F%2Fgithub.com%2Fpmndrs%2Fjotai

[24]

XState: https%3A%2F%2Fgithub.com%2Fstatelyai%2Fxstate

[25]

Recoil: https%3A%2F%2Fgithub.com%2Ffacebookexperimental%2FRecoil

[26]

React Query: https%3A%2F%2Freact-query.tanstack.com%2F

[27]

了解React Query是如何工作的: https%3A%2F%2Fwww.robinwieruch.de%2Freact-hooks-fetch-data%2F

[28]

REST api: https%3A%2F%2Fwww.robinwieruch.de%2Fnode-express-server-rest-api%2F

[29]

GraphQL: https%3A%2F%2Fwww.roadtographql.com%2F

[30]

Apollo Client: https%3A%2F%2Fwww.apollographql.com%2Fdocs%2Freact%2F

[31]

urql: https%3A%2F%2Fformidable.com%2Fopen-source%2Furql%2F

[32]

Relay: https%3A%2F%2Fgithub.com%2Ffacebook%2Frelay

[33]

React中关于本地和远程数据状态的所有内容: https%3A%2F%2Fwww.robinwieruch.de%2Freact-state%2F

[34]

RTK Query: https%3A%2F%2Fredux-toolkit.js.org%2Frtk-query%2Foverview

[35]

React Router: https%3A%2F%2Freactrouter.com%2F

[36]

学习使用React Router: https%3A%2F%2Fwww.robinwieruch.de%2Freact-router%2F

[37]

条件渲染: https%3A%2F%2Fwww.robinwieruch.de%2Fconditional-rendering-react%2F

[38]

React CSS样式: https%3A%2F%2Fwww.robinwieruch.de%2Freact-css-styling%2F

[39]

styles-components: https%3A%2F%2Fwww.robinwieruch.de%2Freact-styled-components%2F

[40]

Tailwind CSS: https%3A%2F%2Ftailwindcss.com%2F

[41]

Material UI (MUI): https%3A%2F%2Fmaterial-ui.com%2F

[42]

Mantine: https%3A%2F%2Fmantine.dev%2F

[43]

Chakra UI: https%3A%2F%2Fchakra-ui.com%2F

[44]

Ant Design: https%3A%2F%2Fant.design%2F

[45]

Radix: https%3A%2F%2Fwww.radix-ui.com%2F

[46]

Primer: https%3A%2F%2Fprimer.style%2Freact%2F

[47]

NextUI: https%3A%2F%2Fnextui.org%2F

[48]

Tailwind UI: https%3A%2F%2Fwww.tailwindui.com%2F

[49]

Semantic UI: https%3A%2F%2Fwww.robinwieruch.de%2Freact-semantic-ui-tutorial

[50]

React Bootstrap: https%3A%2F%2Freact-bootstrap.github.io%2F

[51]

React-table-library: https%3A%2F%2Freact-table-library.com%2F

[52]

React Transition Group: https%3A%2F%2Freactcommunity.org%2Freact-transition-group%2F

[53]

Framer Motion: https%3A%2F%2Fwww.framer.com%2Fmotion%2F

[54]

react-spring: https%3A%2F%2Fgithub.com%2Freact-spring%2Freact-spring

[55]

react-motion: https%3A%2F%2Fgithub.com%2Fchenglou%2Freact-motion

[56]

react-move: https%3A%2F%2Fgithub.com%2Fsghall%2Freact-move

[57]

Animated: https%3A%2F%2Ffacebook.github.io%2Freact-native%2Fdocs%2Fanimated

[58]

D3: https%3A%2F%2Fd3js.org%2F

[59]

Recharts: http%3A%2F%2Frecharts.org%2F

[60]

react-chartjs: https%3A%2F%2Fgithub.com%2Freactchartjs%2Freact-chartjs-2

[61]

visx: https%3A%2F%2Fgithub.com%2Fairbnb%2Fvisx

[62]

Victory: https%3A%2F%2Fformidable.com%2Fopen-source%2Fvictory%2F

[63]

PropTypes: https%3A%2F%2Ffacebook.github.io%2Freact%2Fdocs%2Ftypechecking-with-proptypes.html

[64]

TypeScript: https%3A%2F%2Fwww.typescriptlang.org%2F

[65]

React文件/文件夹结构: https%3A%2F%2Fwww.robinwieruch.de%2Freact-folder-structure%2F

[66]

如何准备React Router认证: https%3A%2F%2Fwww.robinwieruch.de%2Freact-router-authentication%2F

[67]

GraphQL backend: https%3A%2F%2Fwww.robinwieruch.de%2Fgraphql-apollo-server-tutorial%2F

[68]

Firebase: https%3A%2F%2Fwww.robinwieruch.de%2Fcomplete-firebase-authentication-react-tutorial%2F

[69]

Auth0: https%3A%2F%2Fauth0.com%2F

[70]

AWS Cognito: https%3A%2F%2Faws.amazon.com%2Fcognito%2F

[71]

Digital Ocean: https%3A%2F%2Fm.do.co%2Fc%2Ffb27c90322f3

[72]

Cloudflare Workers: https%3A%2F%2Fworkers.cloudflare.com%2F

[73]

Netlify: https%3A%2F%2Fwww.netlify.com%2F

[74]

Vercel: https%3A%2F%2Fvercel.com%2F

[75]

Firebase hosting: https%3A%2F%2Ffirebase.google.com%2Fdocs%2Fhosting

[76]

React-test-renderer: https%3A%2F%2Freactjs.org%2Fdocs%2Ftest-renderer.html

[77]

Snapshot Tests: https%3A%2F%2Fwww.robinwieruch.de%2Freact-testing-jest%2F

[78]

React测试库(RTL): https%3A%2F%2Fwww.robinwieruch.de%2Freact-testing-library%2F

[79]

Cypress: https%3A%2F%2Fwww.robinwieruch.de%2Freact-testing-cypress%2F

[80]

Playwright: https%3A%2F%2Fplaywright.dev%2F

[81]

Immer: https%3A%2F%2Fgithub.com%2Fimmerjs%2Fimmer

[82]

FormatJS: https%3A%2F%2Fgithub.com%2Fformatjs%2Fformatjs

[83]

react-i18next: https%3A%2F%2Fgithub.com%2Fi18next%2Freact-i18next

[84]

Draft.js: https%3A%2F%2Fdraftjs.org%2F

[85]

Slate.js: https%3A%2F%2Fwww.slatejs.org%2F

[86]

ReactQuill: https%3A%2F%2Fgithub.com%2Fzenoamaro%2Freact-quill

[87]

PayPal: https%3A%2F%2Fdeveloper.paypal.com%2Fdocs%2Fcheckout%2F

[88]

React Stripe Elements: https%3A%2F%2Fgithub.com%2Fstripe%2Freact-stripe-js

[89]

Stripe Checkout: https%3A%2F%2Fstripe.com%2Fdocs%2Fpayments%2Fcheckout

[90]

date-fns: https%3A%2F%2Fgithub.com%2Fdate-fns%2Fdate-fns

[91]

Day.js: https%3A%2F%2Fgithub.com%2Fiamkun%2Fdayjs

[92]

Luxon: https%3A%2F%2Fgithub.com%2Fmoment%2Fluxon%2F

[93]

Electron: https%3A%2F%2Fwww.electronjs.org%2F

[94]

Tauri: https%3A%2F%2Fgithub.com%2Ftauri-apps%2Ftauri

[95]

NW.js: https%3A%2F%2Fnwjs.io%2F

[96]

Neutralino.js: https%3A%2F%2Fgithub.com%2Fneutralinojs%2Fneutralinojs

[97]

Expo: https%3A%2F%2Fwww.robinwieruch.de%2Freact-native-expo%2F

[98]

学习React Native: https%3A%2F%2Fwww.robinwieruch.de%2Freact-native-navigation%2F

[99]

react-three-fiber: https%3A%2F%2Fgithub.com%2Fpmndrs%2Freact-three-fiber

[100]

react-360: https%3A%2F%2Ffacebook.github.io%2Freact-360%2F

[101]

aframe-react: https%3A%2F%2Fgithub.com%2Fsupermedium%2Faframe-react

[102]

Sketch: https%3A%2F%2Fwww.sketch.com%2F

[103]

Figma: https%3A%2F%2Fwww.figma.com%2F

[104]

Zeplin: https%3A%2F%2Fzeplin.io%2F

[105]

xcalidraw: https%3A%2F%2Fexcalidraw.com%2F

[106]

InVision: https%3A%2F%2Fwww.invisionapp.com%2F

[107]

Docusaurus: https%3A%2F%2Fgithub.com%2Ffacebook%2Fdocusaurus

[108]

Docz: https%3A%2F%2Fgithub.com%2Fdoczjs%2Fdocz

[109]

Styleguidist: https%3A%2F%2Fgithub.com%2Fstyleguidist%2Freact-styleguidist


关注公众号后,回复下面关键词获取

022

回复 面试,获取最新大厂面试资料。
回复 简历,获取 3200 套 简历模板。
回复 TypeScript,获取 TypeScript 精讲课程。
回复 uniapp,获取 uniapp 精讲课程。
回复 Node,获取 Nodejs+koa2 实战教程。
回复 架构师,获取 架构师学习资源教程。
更多教程资源应用尽有,欢迎 关注获取

创作不易,加个点赞、在看 支持一下哦!022

本篇文章来源于微信公众号:前端技术编程

原创文章,作者:software,如若转载,请注明出处:https://www.sldh123.com/969.html

(0)
上一篇 5月 3, 2022 5:52 上午
下一篇 5月 6, 2022 4:00 下午

相关推荐

发表回复

您的电子邮箱地址不会被公开。