Next.js项目中可以使用的12个最佳库

前端新世界 2024-03-04 15:04:10编程技术
56

作为一只已有十年全栈开发经验的老猿,我构建过的项目不胜枚举,既有像gitup这样的小型项目,也有像crosspublic这样的大型项目,可以说是已经身经百战。

这些年来,出于以下目的,我尝试过很多工具:

  1. 提高工作效率

  2. 减少bug

  3. 减少代码编写量

最后我总结出12个库,正是它们每天兢兢业业地帮助我开发出色的Next.JS内容,放心,我会详细解释它们有什么用。一起来看看吧。

1.Trigger.dev

我们知道,Next.JS可以帮助处理与后台作业相关的所有事情。这里所指的所有事情可以是在后台运行的定时任务——发送电子邮件或处理系统中的新用户渠道。

这导致我需要运行另一台服务器来处理这些任务,要么是外部EC2服务器,要么是带有事件桥接的无服务器函数。

于是我不得不为额外的服务付费,并且某些时候还得自己花时间花精力去管理。

Trigger.dev不需要我做这些,它能够在Next.JS(其他也行)上提供后台作业。而且还可以解决为处理长时间运行作业Next.JS无服务器超时限制的问题。超棒!

Trigger.dev.png

2.Prisma

Prisma并不专用于Next.JS。它是处理数据库的ORM。

ORM是数据库查询的统一包装器。它具有良好的结构,允许你在不同的数据库之间快速切换。

虽然ORM有很多,但Prisma的独特之处在于Typescript的支持,提高了百倍效率。Next.JS的默认配置嵌入Typescript,使得Prisma成为绝佳选择。

Prisma.png

3.NextAuth.js

假设我们需要实现各大网站平台,例如Facebook / Google / GitHub(oAuth)的身份验证。在这种情况下,我们必须为每个平台创建或使用外部服务,如Auth0或Clerk。

如果你打算自己动手,那么试试NextAuth。它提供成功的实现,你只需提供正确的密钥即可轻松添加。

登录之后它还会负责授权。Next.JS身份验证可以与Prisma配合使用。

NextAuth.js.png

4.Next-Sitemap

在服务器上部署Next.JS后,我们需要帮助Google索引所有页面。如果能告诉Google这个网站上的所有页面,那就方便多了。

为此,可以创建一个列出所有页面的sitemap.xml文件。只要使用Next-Sitemap就可以轻松实现了。

Next-Sitemap.png

5.Next SEO

SEO是通过提供关键字、描述以及网站预览图像,使网站出现在不同搜索引擎上的过程。

如果你使用的是新的Next.JS app路由,那么可能不需要使用Next SEO。可以使用export metadata方法或generateMetadata。

但是,如果你使用的是旧的app路由,那么Next SEO是将SEO添加到网站的最佳方式。

Next SEO.png

6.Zod

Zod是对象验证器(服务器和客户端)。你可以在对象上配置不同的规则,并在之后进行验证,例如用户名和密码,或者更复杂的如数组长度或其他键上的条件。Zod并不专用于Next.JS。

这些年来,我见识过很多对象验证器,比如Yup和class-validator。Yup看起来不如Zod得到良好的维护,而class-validator在使用NestJS之类的东西时,用力过猛——所以你最好使用Zod。

Zod.png

7.React-hook-form

虽然Zod可以验证对象,但如果没有自定义逻辑,它不会影响客户端和后端。

React-hook-form是优秀的客户端验证项目(可以显示输入错误、管理输入状态和提交)。当然,你可以使用Zod作为React-hook-form的验证器。

React-hook-form.png

8.tRPC

我以前没用过tRPC,但今天的它实实在在吸引了很多人的目光。它的概念与Prisma相似;为请求和响应生成接口,因此当你使用前端调用时,可以获取自动完成。

很不错,因为这样减少了bug几率——假设你修改了后端路由,就会无法编译项目——客户端则会返回不存在的参数或响应键的错误。

tRPC.png

9.SWR和React-Query

这么多年来,我一直使用Axios和fetch作为发送请求的基础库。

SWR和React-Query增强了这些库,并提供钩子、缓存、转换等功能。

强烈推荐大家每个项目都用。注意,这些库用于客户端组件(use client),而不是服务器组件。

React-Query.png

10.lodash

lodash不是专用于Next.JS的库。它是一个用于可变数据的库,虽然JavaScript多年来在flatMap等原生函数方面取得了很大进步,但仍然缺少一些东西,例如按键或分块数组的唯一数组。

我发现自己几乎所有项目中都在用lodash。可见它有多好用了。

lodash.png

11.day.js

day.js这个库包含与日期、格式化、时区等相关的所有内容。

以前我一直用的是moment.js。但现在moment.js不维护了,我试了试day.js,也很不错。

有些人更喜欢用JS函数来处理日期,但我始终觉得day.js和原生JS date函数之间存在显着差距。

dayjs.png

12.jsdom

这个我最近一直在许多项目中用作cheerio的替代品。

你可以获取整个页面内容(<html><body>....</html>),然后转换为之后可以通过querySelector、innerHTML等原生javascript dom函数进行操作的对象。

非常适合一些需要爬取并解析网页的项目。

jsdom.png

这些用于Next.JS的库是不是很酷?

next.js
THE END
蜜芽
故事不长,也不难讲,四字概括,毫无意义。

相关推荐