面對如此多的選擇,建造後端可能會讓人感到不知所措。
透過正確的工具和方法組合,您可以加快開發過程並更快地建立強大的應用程式。
今天,我們將探索建構後端的七種實用方法,每種方法都具有框架、工具和函式庫的強大組合。
這份清單會讓你大吃一驚。
使用雲端服務建立可擴展的應用程式通常會帶來糟糕的開發人員體驗,開發人員最終會管理複雜的基礎架構並執行重複的任務,從而減慢速度。
Encore透過提供一個開源後端框架(適用於 TypeScript 和 Go)來幫助解決這個問題,該框架允許您將基礎設施定義為應用程式中的類型安全物件,從而將基礎設施與應用程式程式碼統一起來。
然後,Encore 可以透過解析應用程式程式碼來自動化基礎架構配置和 DevOps。這使得開發人員可以使用微服務、Postgres 和 Pub/Sub 等工具快速建立生產就緒的後端,而無需通常的複雜性和 DevOps 麻煩。您還可以獲得:
✅ 使用本地儀表板進行追蹤和記錄。
✅ 自動架構圖為您提供即時概覽。
✅ 用於測試 API 端點的 API Explorer。
根據GitHub 上的基準程式碼, Encore.ts 的冷啟動時間比 Express 快 5 倍以上,比 NestJS 快 17 倍。
您可以觀看此介紹影片以了解有關 Encore 的大部分內容。
https://www.youtube.com/watch?v=vvqTGfoXVsw
如果您對建立什麼感到困惑,那麼您可以查看 Encore 團隊提供的教學課程和入門應用程式。
Encore 會為您處理雲端基礎架構和 DevOps。這意味著您可以專注於應用程式編碼,而不是處理複雜的設定。對於那些想要開始而又不想建立複雜的可擴展應用程式的開發人員來說,它是完美的選擇。
Encore 在 GitHub 上擁有 8000 顆星,他們還經營著擁有超過 1000 名成員的Discord 社群。
https://github.com/encoredev/encore 明星安可 ⭐️
最被低估的方法之一是將後端用作服務,它消除了管理伺服器基礎設施的複雜性並提高了開發過程的速度。
後端即服務(BaaS)是一種雲端運算模型,為開發人員提供預先建置的後端服務,例如使用者身分驗證、資料庫管理、雲端儲存、API SDK、即時通知等。
它可以幫助開發人員建立前端,而無需擔心管理伺服器基礎架構。一些流行的選項包括Appwrite和Supabase 。
物件關聯映射器 (ORM) 是一種程式設計技術,可協助開發人員使用物件導向的程式語言與關聯式資料庫進行互動。它充當橋樑,允許開發人員以物件形式處理資料,而不是編寫複雜的 SQL 查詢。
基本上,開發人員可以用他們喜歡的程式語言定義他們的資料模型,ORM 會自動處理底層資料庫互動。這加快了開發過程並減少了出錯的機會,因為它們使用物件而不是直接處理 SQL 或複雜的資料庫結構。
Prisma ORM旨在讓 Node.js 和 TypeScript 應用程式的資料庫互動變得更容易。它提供類型安全的查詢、直覺的 API、自動遷移,並使用聲明性模式定義將資料庫與應用程式邏輯分開。
讓我們探討一下 Prisma 與這兩個選項的組合。
-→ Supabase + Prisma。
⚡ Prisma 為 PostgreSQL 提供了類型安全的查詢建構器,透過確保在編譯時檢查查詢來減少執行時間錯誤。
⚡ Supabase 和 Prisma 的組合透過 Prisma Studio 等工具提供了現代開發體驗,用於資料管理和 Supabase 的即時功能,使建立響應式應用程式變得更加容易。
⚡ Supabase 的即時功能和 Prisma 強大的查詢功能的結合為複雜的用例奠定了堅實的基礎。
對於需要具有即時功能和類型安全資料庫互動的強大 PostgreSQL 後端的開發人員來說,此選項是理想的選擇。
您可以閱讀 Supabase 的官方指南,以了解如何將 Prisma 與 Supabase 結合使用。
-→ Appwrite + Prisma。
根據GitHub 問題 3005 ,它仍然沒有與 appwrite 生態系統整合。在這種情況下,您可以使用上一個選項。
⚡ 整合 Prisma 將允許開發人員管理複雜的資料庫互動以及身份驗證和儲存等服務。
⚡ 有各種框架的 SDK,開發人員還可以實作自訂伺服器端邏輯。
您只需最少的設定即可獲得即時 API 和輕鬆的資料庫管理。這非常適合獨立開發人員或小型團隊快速開始使用現代堆疊。
NestJS是一個使用 Node.js 和 TypeScript 建立高效且可擴展的伺服器端應用程式的框架。它提供了一種結構化的方式來促進模組化架構(受到 Angular 的啟發)、依賴注入、中間件、WebSocket 通訊和裝飾器的使用。
它預設使用 TypeScript,並與 Express 或 Fastify 等各種庫和框架相容。它也用於建立 RESTful API、GraphQL 伺服器和微服務。
您可能已經注意到,我推薦使用TypeORM和 Nestjs,而上一個選項中是 Prisma。
這是因為 TypeORM 使用直接套用於 TypeScript 類別的裝飾器(例如@Entity
、 @Column
)來定義資料庫架構,而 Prisma 使用以其自己的聲明性語法編寫的專用架構檔案( schema.prisma
)。
⚡ NestJS 和 TypeORM 都是用 TypeScript 建構的,它提供了強大的類型檢查。
⚡ NestJS 提倡模組化結構,可以更輕鬆地將程式碼組織到不同的模組中,而 TypeORM 非常適合這一點。
⚡ 使用 TypeORM,開發人員可以輕鬆管理實體之間的關係、執行遷移和處理事務,所有這些都有助於建立可擴展的應用程式。
您可以閱讀 Nestjs 官方文件,以了解有關如何使用 Nextjs 開始使用 TypeORM 的更多資訊。
高度模組化和可擴展,非常適合熟悉 Node.js、想要建立結構良好的後端的開發人員。您將獲得強大的模組化架構和強大的社群支援。
Hasura是一個開源 GraphQL 引擎,可連接到您的資料庫和微服務,立即提供可用於生產的 GraphQL API。
它會立即從您的資料庫架構產生 GraphQL API,因此開發人員可以查詢和操作資料,而無需編寫大量後端程式碼。
GraphQL 程式碼產生器是基於 GraphQL 架構和操作(例如查詢、突變和訂閱)產生程式碼的工具。它可以自動為不同的程式語言和框架建立類型化輸出。
⚡ GraphQL 程式碼產生器透過基於 GraphQL 架構自動建立 TypeScript 類型和掛鉤來補充 Hasura。
⚡ 它消除了開發人員手動定義類型和介面的需要,從而節省了時間並最大限度地降低了客戶端和伺服器之間出現拼字錯誤或不一致的風險。
⚡ 產生的類型作為 API 文件的一種形式,使開發人員更容易理解哪些資料可用以及如何與其互動。
⚡ 透過自動產生的查詢、突變和訂閱,開發人員可以快速實現功能,而無需擔心類型定義與 GraphQL 架構保持同步。
即時 GraphQL API 和自動產生的前端程式碼可以節省時間。非常適合開發人員建立現代 API 驅動的應用程式。
Go是一種由 Google 設計的靜態類型、編譯型程式語言,以其簡單性而聞名,是建立高效能、可擴展後端的首選。它非常適合需要應用程式速度和控制的開發人員。
Gin是一個用 Go (Golang) 寫的 HTTP Web 框架。它提供了快速建立 RESTful API 的工具,具有零分配路由器、中間件支援、內建渲染、JSON 驗證等功能。它具有類似 Martini 的 API,效能提高了大約 40 倍。
⚡ Go 的速度和簡單性,與 Gin 的簡約設計和快速 HTTP 路由器結合,使其成為建立 Web 伺服器和 API 的最快組合之一。
⚡ Go 的內建並發模型與 goroutine 讓您的後端輕鬆擴展,對於處理高流量特別有用。
⚡ 使用 Gin,您無需額外配置即可獲得開箱即用的路由、中間件和請求處理,這讓您可以專注於建立功能而不是管理樣板程式碼。
您可以閱讀如何使用 Go 和 Gin 開發 RESTful API 的教學。
Go with Gin 以最小的開銷提供極快的效能,使其成為建立可擴展的高效能後端的理想選擇。非常適合熟悉 Go 的開發人員以及想要完全控製而不犧牲速度的開發人員。
Django是一個高階 Python Web 框架,鼓勵快速開發和簡潔、務實的設計。它以其batteries-included
理念而聞名,並附帶許多內建工具(例如管理面板),可以節省大量精力。
Django REST Framework (DRF)是一個用於在 Django 中建立 Web API 的強大工具包。它透過序列化、身份驗證和視圖處理等功能簡化了建立 RESTful API 的過程,同時與 Django 無縫整合。
⚡ Django 配備了您需要的一切,包括管理面板、身份驗證系統和資料庫 ORM,因此您可以快速建立後端,而不需要額外的配置。
⚡ DRF 透過提供序列化器、視圖集和驗證機制等內建功能,可以輕鬆建立 RESTful API。這減少了開發人員在維護功能的同時需要編寫的程式碼量。此外,它們還提供可瀏覽 Web 的 API 介面,使任何人都可以更輕鬆地在開發過程中測試端點並與 API 互動。
⚡ Django 強大的架構與 DRF 結合,提供可擴展性和強大的安全功能,例如防止 SQL 注入、XSS 和 CSRF 攻擊。
一種快速、安全且可擴展的解決方案,用於使用 Python 以最少的設定建立強大的 API。強大的社群支援和內建工具使其成為尋求可靠性的獨立開發人員的理想選擇。
Next.js是一種流行的 React 框架,以其在建立現代伺服器端渲染或靜態 Web 應用程式方面的靈活性而聞名。它可以輕鬆建立快速、SEO 友善的網站,並具有許多有用的功能,例如自動程式碼分割、動態 HTML 流、反應伺服器元件、自動優化(圖像、字體、腳本)、路由處理程序等等。
我目前幾乎所有專案都使用 Nextjs。
Payload是為 next.js 開發人員建置的無頭 CMS。隨著 v3 版本的發布,它成為Next.js native
,這意味著可以順利整合 Next 路由處理程序、應用程式路由器和其他相關概念。
實際上,我在 Beta 版期間就使用了它來進行測試,並在How to get CMS in any Next app with one line中寫了有關它的內容。
⚡ Payload 直接安裝到您的 next.js 應用程式資料夾中,提供管理面板和後端,而無需依賴第三方服務。這種整合將前端和後端保持在一個位置,從而使開發過程更加順暢。
⚡ Payload 提供了一個漂亮的管理介面來管理內容,可以輕鬆建立和組織資料模型,同時受益於 next.js 動態渲染功能。
⚡ 借助 Payload 的本機 API,開發人員可以直接從伺服器元件和功能查詢和修改資料,從而實現快速資料管理,而無需外部 API 的開銷。
⚡ 開發人員可以在任何地方部署 Payload,包括 Vercel 等無伺服器環境或容器中,讓他們可以自由選擇自己喜歡的託管解決方案。
它是一個穩定版本,您可以在官方部落格上閱讀更多內容,了解Payload 3.0 如何成為第一個直接安裝到任何 Next.js 應用程式中的 CMS 。
透過將強大的內容管理直接整合到應用程式結構中,無需管理單獨的後端服務的複雜性,這是建立現代內容驅動應用程式的最佳方式。
我嘗試介紹一些不太常見的方法,但還有許多其他不錯的選擇,例如:
Django + Celery - 非常適合處理任務佇列和背景作業,特別是在需要非同步處理的專案中。但如果後台任務不是核心需求,Celery 可能會帶來複雜性。
Firebase Functions + Express.js - Firebase Functions 與 Express.js 結合,提供了適合動態、輕量應用的無伺服器架構。它們簡化了基礎設施管理,但隨著使用規模的擴大,成本可能會變得昂貴。
Spring Boot + Hibernate - 對於企業級應用程式來說很強大,但對於較小的個人專案來說就太過分了。如果 Java 是您的首選語言,那就太好了。
Ruby on Rails + ActiveRecord - 憑藉其約定優於配置的方法和廣泛的自動化,非常適合快速原型設計。雖然 Rails 對於較小的專案來說可能會感覺很重,但對於有 Ruby 經驗的開發人員來說,它是一個不錯的選擇。
Node.js + Express.js - 在 JavaScript 中建立 API 的流行、輕量級選擇。與固執己見的框架相比,它的靈活性可能是有利的,但可能需要更多的決策和客製化。
Flask + SQLAlchemy - 簡約且靈活,適合小型專案(以避免較重的框架)。 SQLAlchemy 非常適合資料庫管理,沒有不必要的體積。對於 Python 開發人員來說是一個不錯的選擇。
FastAPI + Pydantic - 對於 Python 開發人員來說快速且簡單。它輕巧、直觀並確保資料驗證,非常適合快速專案。
Laravel + Eloquent - Laravel 透過其內建工具和開發人員友好的框架改進了 PHP 開發。與 Eloquent for ORM 結合使用,它非常適合快速建立現代後端,特別是對於 PHP 愛好者。
我確信還有更多的選擇,尤其是隨著科技的快速發展。
重要的是選擇擁有良好社區的人,這樣你就不會陷入困境。
老實說,這很難寫,因為我很困惑要結合哪個技術堆疊才能獲得最大輸出。
這些只是開發人員建構複雜後端內容的一些最佳方法的起點。
如果您認為還有更有用的組合,請告訴我。
祝你有美好的一天!直到下次:)
我還為開發人員和技術作家(200 多名成員)經營我的社區,在那裡我分享我學到的一切。您可以透過dub.sh/opensouls加入。
原文出處:https://dev.to/anmolbaranwal/7-practical-ways-to-build-backends-much-faster-as-a-developer-g6c