什么是 Wasp
Wasp(Web 應用程序規范)是一個類似 RAIls 的 React、Node.js 和 Prisma 框架,借助于該框架開發者可以快速構建應用程序并使用單個 CLI 命令進行應用部署。
Wasp 的典型優勢包括:
- 快速入門:由于其表現力,開發者可以使用很少的簡潔、一致的聲明性代碼從頭開始創建和部署一個生產就緒的 Web 應用程序。
- 無樣板代碼:通過抽象出復雜的全棧功能,可以減少樣板代碼。 這意味著需要維護和理解的代碼更少,同時也更容易升級。
- 無鎖定:開發者可以在任何地方部署 Wasp 應用程序。 沒有鎖定特定的提供者,可以完全控制代碼。
Wasp 的典型特征包括:
- 全棧身份驗證
- ? RPC(客戶端 <-> 服務器)
- 簡單部署
- 支持 Job,電子郵件發送, 全棧類型安全等等
給定一個簡單的 .wasp 配置文件(描述 Web 應用程序的高級詳細信息)和 .js(x)/.css 等特定邏輯的源文件,Wasp 編譯器會生成 Web 應用程序的完整源代碼,包括:前端、后端和應用部署。這種獨特的方法使 Wasp 變得聰明并賦予了它獨特的超能力。
目前 Wasp 在 Github 上通過 MIT 協議開源,有超過 3.5k 的 star,是一個值得關注的前端開源項目。
如何使用 Wasp
通過簡單的 Wasp 配置文件,開發者可以用來描述 Web 應用程序的高級詳細信息:
// file: main.wasp
App todoApp {
title: "ToDo App",
// 在瀏覽器選項卡中可見
wasp: { version: "^0.11.0" },
auth: {
// 開箱即用的全棧身份驗證
userEntity: User, methods: { email: {...} }
}
}
route RootRoute { path: "/", to: MainPage }
page MainPage {
authRequired: true,
// 限制對已登錄用戶的訪問。
component: import Main from "@client/Main.tsx"
// React組件
}
query getTasks {
fn: import { getTasks } from "@server/tasks.js",
// Node.js 代碼
entities: [Task]
// 自動緩存失效
}
entity Task {=psl
// Prisma數據模型
id Int @id @default(autoincrement())
description String
isDone Boolean @default(false)
psl=}
在 React / Node.js / Prisma 中編寫的其余代碼只需從 .wasp 文件中引用即可。在 Wasp 配置中定義應用程序將自動獲得以下能力:
- 使用 Auth UI 組件登錄和注冊,
- 全棧式安全,
- 電子郵件發送,
- 異步處理 Job,
- React Query 支持數據獲取,
- 安全最佳實踐等等
開發者不需要為這些功能編寫任何代碼,Wasp 會自動處理,同時 Wasp 還會維護代碼,而開發者不必擔心跟上最新的安全性,最佳實踐。 隨著 Wasp 的更新,應用程序也會同步更新。
本文總結
本文主要和大家介紹 Wasp,即一個類似 Rails 的 React、Node.js 和 Prisma 框架,借助于該框架開發者可以快速構建應用程序并使用單個 CLI 命令進行應用部署。相信通過本文的閱讀,大家對 Wasp 會有一個初步的了解。
因為篇幅有限,關于 Wasp 的更多用法和特性文章并沒有過多展開,如果有興趣,可以在我的主頁繼續閱讀,同時文末的參考資料提供了大量優秀文檔以供學習。最后,歡迎大家點贊、評論、轉發、收藏,您的支持是我不斷創作的動力。
參考資料
https://wasp-lang.dev/
https://github.com/wasp-lang/wasp
https://wasp-lang.dev/docs
https://www.ycombinator.com/launches/HbQ-wasp-beta-develop-full-stack-web-apps-in-react-node-js-without-boilerplate
https://blog.openreplay.com/a-dive-into-wasp/