Lightly Logo
返回按钮
返回博客

适用于不同编程场景的5个React库和框架

2023-02-20

编写React应用是一件非常有趣的事情,因为React虽然只是JavaScript的其中一个库,我们却可以选择更多不同种类的工具和库来进一步优化我们的React项目。所以,如果没有选对合适的工具或库,编写React应用也有可能会变得十分棘手。

这篇文章希望向大家分享五个不同编程场景的实用React库,让你能更快更好地开发这些React应用。

什么是React?

React其实是一个能够通过「组件」帮助开发者构建用户界面(UI)的库。这些结合了HTML和JavaScript代码的组件承载着整体用户界面的一小部分,而结合这些较小的组件就能构成一个较为完整但复杂的应用。

React对于构建复杂而互动性强的网页而言十分使用,其核心功能在于只需要改动代码的一小部分,就能快速地修改网页的内容。这些组件能让开发者区分网页应用的各种功能,同时也让开发者在应用的各个部分重复使用已成型的代码,让整体的网页维护更加简易。

要如何开始编写React项目?

Lightly IDE中自带TypeScript和JavaScript的React项目模板,用户只需要登录后便可以在项目页面中选择新建对应的React项目。

点击「新建项目」后,Lightly会自动生成并配置React的编程环境,大家可以直接在模板项目中编写自己的React应用。

编写好网页代码后,可以根据项目中「README.md」文档上的提示,打开终端输入 yarn 和 yarn dev 构建并运行项目。

构建好的项目可以在弹出的提示中添加端口,在网页或IDE中预览项目。

如果你使用其他编辑器,你也可以根据React官方文档中的教程在网页中添加React库。

实用React库推荐

当我们使用React编写应用时,我们还可以考虑是否要同时使用React框架。市面上有很多类似Gatsby和Redwood.js的React框架,大家也可以根据自己的编程场景来选择合适的React框架。

网页应用 - Next.js

Next.js是一个开源的React框架,同时也是开发全栈应用和静态网站的强大工具。它通过在预建组件中利用React的最佳实践来简化开发过程,让开发人员能够使用自动代码分割、服务器端渲染和静态网站生成等功能。

开发者可以借助Next.js来创建加载速度快且SEO友好的网站,甚至还包括预装字体、免配置环境变量等功能。此外,Next.js对CSS-in-JS库(如Styled Components)提供了极大的支持,这有助于开发人员轻松地建立高度可定制的网站。它也支持整合Express或Koa等流行的Node框架,让开发人员进一步增强他们的网页应用。著名的文本编辑应用Notion便是使用Next.js开发的应用之一。

获取数据 - React Query

如果你需要在应用中获取数据,那更推荐你使用React Query库。最新版本的React Query为@tanstack/react-query。

React Query适用于获取数据或其他使用自定义钩子处理异步操作的任务,例如useQuery和useMutation。React Query能让我们对数据有更多的操作权限,包括指定获取和重新获取的时间。如果数据在获取途中有所变化,React Query也会先为我们获取原本的数据,随后再更新替代新的数据,减少全部数据刷新的频率。

管理状态 - Zustand

Zustand是一个能让全局状态管理变得更简单的React库,你只需要导入 zustand 包就可以创建一个储存库(store)来接收特定值,然后将这个储存库作为管理整个应用的钩子。 import create from 'zustand' const useCounterStore = create({ count: 0 })

Zustand的好处是这个状态可以与其他的React组件共享,甚至也可以在React组件以外使用。此外,Zustand也会根据改变的状态,为用户提供组件更新的控制权限。如果你只想在某个特定的值发生改变时更新组件,你可以选择使用部分的状态: const count = useCounterStore((state) => state.count)

否则,你也可以直接使用整个状态: const state = useCounterStore()

动画 - Framer Motion

Framer Motion是一个能让网页中的转场和动画变得更简单的包,里面包含了各种不同的转场甚至比较复杂的版面动画。

使用Framer Motion的好处在于你可以使用简单明了的接口来定义你的动画,你只需要替换你要添加动画的JSX元素,即可以通过里面的内部组件来控制动画效果。

例如,我们可以通过这段代码 <motion.div animate={{ x: 100 }} /> 来设置动画的起始位置,动画效果以及离场效果。此外,Framer也可以使用延迟效果或结合useScroll、useSpring等不同功能来实现多种不同类型的动画。

更多Framer Motion的用法,可参考Framer官网中的试例。

React Native应用 - Capacitor.js

React Native能让开发者以React网页项目类似的语法来构建iOS和安卓应用,其中能够帮助大家构建跨平台React用用的库就包括了Capacitor.js。

Capacitor.js是一个能让你的网页应用在本地平台上运行的简化解决方案。换句话说,它可以轻易地让你在应用商店中部署你的应用,你甚至无需改变现有的任何代码,就可以让你的应用在这些手机或平板设备中原生运行。

要使用Capacitor,你只需要安装几个包,即@capacitor/core和@capacitor/cli。Capacitor将为你提供许多本地API,以提供标准的本地应用程序所具有的所有功能,如推送通知或触觉反馈等。Capacitor允许你将你的网页应用变成一个原生应用并且拥有原生应用的所有功能,让你可以真正改变你的应用的局限性,为完全不同的用户提供服务。