首頁 >web前端 >js教程 >ENT堆棧:在5中構建全堆棧Web應用程序的關鍵決策

ENT堆棧:在5中構建全堆棧Web應用程序的關鍵決策

Patricia Arquette
Patricia Arquette原創
2025-01-30 00:36:09833瀏覽

構建可擴展的全棧Web應用程序需要從一開始就需要仔細的計劃和戰略決策。 從框架選擇到身份驗證,都會影響成本,可伸縮性和適應性。 本文詳細介紹了ENT堆棧背後的設計選擇,這是一個可重複使用的全堆棧解決方案,該解決方案由Express,Next.js和Trpc。

The ENT Stack: Key Decisions for Building a Full-Stack Web App in 5 ENT堆棧的目的是成為一個可部署的項目,該項目在允許獨立部署的同時共享後端和前端之間的代碼。 它專為成本效益而設計(最初以低成本VPS運行),但具有可擴展性來處理未來的增長。 為了避免昂貴的重構,在十三個關鍵領域進行了預先做出的關鍵決策:框架選擇,項目結構,API層,環境和配置,數據庫,身份驗證和授權,驗證和錯誤處理,州管理,國際化,國際化(I18N),日誌記錄,郵寄,郵件,測試和DevOps。

> ENT堆棧可作為github上的monorepo和一個NPM軟件包,可輕鬆腳手架。

github存儲庫

  • npm軟件包
  • 快速啟動指南
  • 文檔
  • (它是2025年,重新訪問我們的技術堆棧實際上是每年的儀式!)
這是關鍵架構決策的摘要:

1。框架選擇

後端(express):

以其極簡主義,穩定性和靈活性而選擇。 考慮了諸如Nestjs和Factify之類的替代方案,但Express提供了簡單性和可靠性的最佳平衡。

    frontend(Next.js):利用React的受歡迎程度和Next.js的強大功能,強大的社區支持以及Vercel的支持確保長期可行性和開發人員可訪問性。
  • 2。項目結構(帶PNPM的MonorePo)
  • >使用PNPM工作區的MonorePo結構有助於在後端和前端之間共享代碼,從而在YARN或NPM工作區提供了速度和簡單性。 目錄結構的組織如下:
  • 3。 API層(TRPC)
> TRPC選擇了REST和GraphQL的開發人員友好方法和端到端類型的安全性。 它與Next.js和Tanstack查詢的無縫集成最小化樣板並增強類型推理。

4。環境和配置(T3 Env,ESM,尾風)

> T3 ENV確保對環境變量的靜態驗證。 自定義配置類管理靜態設置,而ESM(ecmascript模塊)支持後端和前端之間的代碼共享。 Tailwind CSS用於前端樣式。

5。數據庫(帶有毛毛雨的mysql)

選擇一個符合酸的MySQL數據庫,以提供可靠性和交易保證。毛毛雨ORM為數據庫交互提供了輕巧的類型安全方法。

6。身份驗證和授權(無密碼,路線級保護)

>自定義無密碼身份驗證系統提供靈活性和控制。 基本前端路由級保護是使用路由定義中的

標誌實現的。 protected7。驗證和錯誤處理(ZOD,TRPC錯誤Formatter,Sonner) ZOD手柄輸入驗證,而TRPC的

>標準化錯誤處理。 Sonner Toasts向用戶顯示錯誤。自定義

確保明確的錯誤處理。

errorFormatter8。國家管理(Zustand,Tanstack查詢)ErrorService

> zustand管理簡單,同步的全球狀態,而tanstack查詢手柄異步狀態管理。

9。國際化(I18N)(使用INTL-MESSAGEFORMAT的自定義解決方案)

>使用ICU語法的獨立打字稿函數(通過

)的自定義I18N解決方案提供了類型的安全性和自動樹木震動。 路線也是完全可以翻譯的。

10。記錄(pino)intl-messageformat Pino為後端和前端提供結構化日誌記錄,提供速度和一致的輸出。

11。郵寄(重新發送,車把,郵件)

>重新啟動簡化電子郵件,車把創建電子郵件模板,並促進電子郵件測試。

>

12。測試(劇作家,Supertest)

劇作家都可以處理前端E2E和後端API測試(與Supertest集成)。

13。 DevOps(AWS ECS,Terraform,GitHub Action,S3,CloudFront) - 單獨的存儲庫

aws ecs,Terraform,github Action,S3和CloudFront管理基礎架構和CI/CD,在單獨的存儲庫中詳細介紹。

>

> ENT堆棧是開源的,歡迎捐款。 報告問題或通過GITHUB存儲庫提出問題。

以上是ENT堆棧:在5中構建全堆棧Web應用程序的關鍵決策的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn