Blitz 是一个基于 Next.js、功能齐备,并提供一个能消除 REST/GraphQL 依赖的零 API 数据抽象层的框架,受到了 Ruby on Rails 的启发。
// app/projects/mutations/createProject.ts
import { resolver } from "blitz"
import db from "db"
import * as z from "zod"
// 这里提供运行时验证 + 类型安全
export const CreateProject = z
.object({
name: z.string(),
})
// resolver.pipe 是一个函数式管道
export default resolver.pipe(
// 验证输入数据
resolver.zod(CreateProject),
// 确保用户已经登陆
resolver.authorize(),
// 执行业务逻辑
async (input) => {
const project = await db.project.create({ data: input })
return project
}
)
“零 API” 数据层允许你 直接导入服务端代码到你的组件中 而无需手动增加 API 端口和在客户端上请求与缓存。
新的 Blitz 应用为你解决了所有枯燥繁琐的事务!比如 ESlint、Prettier、Jest、用户注册、登陆和密码重置。
为路由、文件结构和身份验证等提供有用的默认值和约定,同时还非常灵活。
我们的社区温暖、安全、多样化、包容性强也很有趣!LGBTQ+、女性和少数民族尤其受欢迎。
请阅读我们的 行为准则.
我们此刻携手共进,无论年轻还是年长。我们的相似超越了彼此的不同。我们喜欢在一起工作。
我们邀请你来帮助 Blitz 成为越来越好的框架!
内置的身份验证非常简单和安全。适用于任何身份提供者,包括自托管的用户名和密码以及像 Auth0 这样的第三方。
你可以使用任何你想使用的数据库。Prisma 2 是默认的数据库客户端,但你可以删掉它并使用任何其它数据库,如 Fauna 或 DynamoDB。
一行命令即可安装代码和/或包到你的项目中。例如:`blitz install tailwind` 或 `blitz install chakra-ui`。任何人都可以定制配方。
Blitz 是为服务器密集型任务而设计的,例如发送电子邮件、自动化作业、后台处理、生成 PDF 等。目前我们的后端指南较少,但也正在开发更多的模式和添加更多文档中。
Blitz 是用 TypeScript 构建的,因此 Blitz 的数据层提供完全端到端的类型安全。同时所有的类型都完全静态,不需要一个单独的类型生成过程!
现在还为时尚早,但 Blitz 的脚手架将非常强大。非常适合原型设计和构建真正的应用程序。将能够覆盖任何模版并为你的项目进行自定义。