使用 Prisma 开发者友好的数据库工具构建高性能、类型安全的 Next.js 应用:全球最受欢迎的 TypeScript ORM 和首个无冷启动的无服务器数据库。
试用 Next.js 与 Prisma
Prisma Postgres 基于 unikernels 构建,可在裸金属服务器上运行,实现峰值性能和无限可扩展性。
首个无服务器数据库,采用按量付费模式,无需基础设施管理,并零冷启动。
使用客户端渲染、服务器端渲染和静态站点生成来显示您的数据。
为任何数据库查询添加缓存策略,其结果将缓存在离用户最近的地方,以实现峰值性能和用户体验。
将 Prisma 与 Next.js 结合使用可确保您的应用从数据库到 React 组件都具有一致的类型。
Next.js 和 Prisma 都有充满活力的社区,您可以在其中找到支持、有趣的活动和出色的开发者。
Prisma 的数据库工具非常适合构建 Next.js 应用程序。它们充当服务器组件(静态和动态)、服务器动作、路由处理程序和独立服务的数据访问层。
Next.js 13+ 引入了数据获取方式的根本性转变。App Router 中默认的服务器组件允许您直接在组件中获取数据,无需额外的封装器或特殊函数。这意味着您可以直接在组件中使用 Prisma,并在可能的情况下自动获得静态生成。
以下是如何实现一个在构建时静态生成的博客页面。数据获取发生在服务器端,HTML 在构建期间生成一次。
// app/blog/[slug]/page.tsximport { PrismaClient } from '@prisma/client'const prisma = new PrismaClient()// Return a list of `params` to populate the [slug] dynamic segmentexport async function generateStaticParams() {const posts = await prisma.post.findMany()return posts.map((post) => ({slug: post.slug,}))}// Multiple versions of this page will be statically generated// using the `params` returned by `generateStaticParams`export default async function Page({ params }: { params: { slug: string } }) {// Fetch the post based on slugconst post = await prisma.post.findUnique({where: { slug: params.slug },})// Simple demo renderingreturn (<div><h1>{post?.title || 'Post not found'}</h1><p>{post?.content || 'No content available'}</p></div>)}
Next.js 13+ 引入了数据获取方式的根本性转变。App Router 中默认的服务器组件允许您直接在组件中获取数据,无需额外的封装器或特殊函数。这意味着您可以直接在组件中使用 Prisma,并在可能的情况下自动获得静态生成。
以下是如何实现一个在构建时静态生成的博客页面。数据获取发生在服务器端,HTML 在构建期间生成一次。
// app/blog/[slug]/page.tsximport { PrismaClient } from '@prisma/client'const prisma = new PrismaClient()// Return a list of `params` to populate the [slug] dynamic segmentexport async function generateStaticParams() {const posts = await prisma.post.findMany()return posts.map((post) => ({slug: post.slug,}))}// Multiple versions of this page will be statically generated// using the `params` returned by `generateStaticParams`export default async function Page({ params }: { params: { slug: string } }) {// Fetch the post based on slugconst post = await prisma.post.findUnique({where: { slug: params.slug },})// Simple demo renderingreturn (<div><h1>{post?.title || 'Post not found'}</h1><p>{post?.content || 'No content available'}</p></div>)}
如果您在 React 应用中需要数据库,Next.js 和 Prisma 是终极组合!🚀
现代 SaaS 应用的启动模板!next-forge 包含 Next.js 15、身份验证、数据库和 ORM、支付、文档、博客、o11y、分析、电子邮件等,为您下一个 Next.js SaaS 应用节省了初始样板文件。
了解在 Next.js App Router 中使用 Prisma 的最佳实践!探索服务器组件、服务器操作和边缘中间件,以及高效查询、处理迁移和部署到 Vercel。完善您的数据库工作流程并无缝扩展!
t3 是一个专注于简洁性、模块化和全栈类型安全的 Web 开发堆栈。它包括 Next.js、tRPC、Tailwind、TypeScript、Prisma 和 NextAuth。
Blitz.js 是一个基于 Next.js 和 Prisma 构建的应用程序框架。它带回了 Ruby on Rails 等服务器渲染框架的简洁性和约定,同时保留了开发者喜爱 React 和客户端渲染的一切。