<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Wasp全棧 Web 框架

          聯(lián)合創(chuàng)作 · 2023-09-20 00:55

          Wasp (Web Application Specification) 是類(lèi)似 Rails 的全棧 Web 框架,使用了 React, Node.js 和 Prisma,通過(guò)自帶的 CLI 工具即可應(yīng)用程序部署到任何平臺(tái)。

          優(yōu)點(diǎn):

          • 快速入門(mén):你可以從頭開(kāi)始創(chuàng)建和部署生產(chǎn)就緒的 Web 應(yīng)用程序,只需幾行簡(jiǎn)潔、一致的聲明性代碼。
          • No boilerplate:通過(guò)抽象出復(fù)雜的全棧功能,boilerplate code 更少。這意味著需要維護(hù)和理解的代碼更少,也意味著更容易升級(jí)。
          • No lock-in:你可以在任何喜歡的地方部署 Wasp 應(yīng)用程序。沒(méi)有鎖定到特定的 providers,你可以完全控制代碼(如果你有興趣,可以在 .wasp/ 目錄中檢查它)。

          特性:

          • 全棧認(rèn)證:使用強(qiáng)大的 UI 助手在幾行代碼中添加社交提供商的登錄名或電子郵件。沒(méi)有第三方供應(yīng)商鎖定。
          • RPC (Client <-> Server)Wasp 提供了一個(gè)類(lèi)型安全的 RPC 層,可以立即將你的數(shù)據(jù)模型和服務(wù)器邏輯傳輸?shù)娇蛻舳恕?/span>
          • 簡(jiǎn)單部署:將你的應(yīng)用程序部署到任何平臺(tái)。Wasp 為最流行的選項(xiàng)提供 CLI 助手。
          • Jobs輕松定義、安排和運(yùn)行專(zhuān)門(mén)的服務(wù)器任務(wù)。持久的、可重試的、可延遲的。
          • 電子郵件發(fā)送:要做的就是連接電子郵件供應(yīng)商,然后就可以發(fā)送電子郵件了。
          • 全棧類(lèi)型安全:完全支持 TypeScript 以及跨越整個(gè)堆棧的自動(dòng)生成的類(lèi)型。
          • 以及自定義 API 路由、數(shù)據(jù)庫(kù)播種、樂(lè)觀更新、客戶端自動(dòng)緩存失效……

          核心是 Wasp 編譯器,它采用 Wasp 配置和你的 Javascript 代碼并輸出客戶端應(yīng)用程序、服務(wù)器應(yīng)用程序和部署代碼。

          工作原理

          示例代碼

          // file: main.wasp
          
          app todoApp {
            title: "ToDo App",  // visible in the browser tab
            wasp: { version: "^0.10.0" },
            auth: { // full-stack auth out-of-the-box
              userEntity: User, methods: { email: {...} }
            }
          }
          
          route RootRoute { path: "/", to: MainPage }
          page MainPage {
            authRequired: true, // Limit access to logged in users.
            component: import Main from "@client/Main.tsx" // Your React code.
          }
          
          query getTasks {
            fn: import { getTasks } from "@server/tasks.js", // Your Node.js code.
            entities: [Task] // Automatic cache invalidation.
          }
          
          entity Task {=psl  // Your Prisma data model.
              id          Int     @id @default(autoincrement())
              description String
              isDone      Boolean @default(false)
          psl=}
          瀏覽 36
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91极品视觉盛宴 | 国产精品无码久久久久久 | 啊v在线视频观看 | 伊人青青亚洲 | 国内aV免费 |