开发人员快速构建后端的 7 种实用方法
由于有如此多的选择,构建后端可能会让人感到不知所措。
通过正确的工具和方法组合,您可以加快开发过程并更快地创建强大的应用程序。
今天,我们将探讨构建后端的七种实用方法,每种方法都包含一些强大的框架、工具和库的组合。
这份名单一定会让你大吃一惊。
1.使用Encore作为后端框架。
使用云服务构建可扩展的应用程序通常会带来糟糕的开发人员体验,开发人员最终需要管理复杂的基础设施并执行重复性任务,从而降低他们的速度。
Encore通过提供一个开源后端框架(用于 TypeScript 和 Go)来帮助解决该问题,该框架可让您将基础设施定义为应用程序中的类型安全对象,从而将您的基础设施与应用程序代码统一起来。
Encore 可以通过解析应用程序代码,实现基础设施配置和 DevOps 的自动化。这使得开发人员能够使用微服务、Postgres 和 Pub/Sub 等工具快速创建可用于生产的后端,而无需承担常见的复杂性和 DevOps 麻烦。您还可以获得:
✅ 使用本地仪表板进行跟踪和日志记录。✅
自动生成架构图,为您提供实时概览。✅
API Explorer,用于测试您的 API 端点。
根据GitHub 上的基准代码,就冷启动时间而言,Encore.ts 比 Express 快 5 倍以上,比 NestJS 快 17 倍。
您可以观看此介绍视频来了解有关 Encore 的大部分内容。
如果您不知道要构建什么,那么您可以查看Encore 团队的教程和入门应用程序。
🎯 一个坚实的理由,为什么是 Encore?
Encore 为您打造云基础架构和 DevOps 服务。这意味着您可以专注于应用代码编写,无需处理复杂的设置。对于那些不想费力构建复杂可扩展应用的开发者来说,Encore 是理想之选。
Encore 在 GitHub 上拥有 8k 颗星,并且他们还运营着拥有 1k+ 名成员的discord 社区。
2. 使用 ORM 将后端作为服务。
最被低估的方法之一是使用后端即服务,这消除了管理服务器基础设施的复杂性并提高了开发过程的速度。
🎯 什么是后端即服务?
后端即服务 (BaaS) 是一种云计算模型,它为开发人员提供预先构建的后端服务,例如用户身份验证、数据库管理、云存储、API SDK、实时通知等。
它可以帮助开发人员构建前端,而无需管理服务器基础设施。一些流行的选项包括Appwrite和Supabase。
🎯 什么是 ORM?
对象关系映射器 (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 和便捷的数据库管理。这对于个人开发者或小型团队快速上手现代技术栈来说,是理想之选。
3. NestJS 与 TypeORM。
NestJS是一个使用 Node.js 和 TypeScript 构建高效可扩展的服务器端应用程序的框架。它提供了一种结构化的方式来促进模块化架构(受 Angular 启发)、依赖注入、中间件、WebSocket 通信和装饰器的使用。
它默认使用 TypeScript,并兼容 Express 或 Fastify 等各种库和框架。它还用于构建 RESTful API、GraphQL 服务器和微服务。
您可能已经注意到,我推荐使用 Nestjs 的TypeORM,而之前的选项是 Prisma。
这是因为 TypeORM 使用直接应用于 TypeScript 类的装饰器(例如@Entity
、@Column
)来定义数据库模式,而 Prisma 使用schema.prisma
以其自己的声明语法编写的专用模式文件( )。
⚡ NestJS 和 TypeORM 都是用 TypeScript 构建的,它提供了强类型检查。
⚡ NestJS 提倡模块化结构,使得将代码组织成不同的模块变得更加容易,而 TypeORM 非常适合这一点。
⚡ 使用 TypeORM,开发人员可以轻松管理实体之间的关系、执行迁移和处理事务,所有这些都有助于构建可扩展的应用程序。
您可以在 Nestjs 官方文档中阅读更多关于如何使用 Nextjs 开始使用 TypeORM 的信息。
🎯 一个坚实的理由,为什么选择这个选项?
高度模块化且可扩展,非常适合熟悉 Node.js 并希望构建结构良好的后端的开发者。您将获得强大的模块化架构和社区支持。
4. Hasura 带有 GraphQL 代码生成器。
Hasura是一个开源 GraphQL 引擎,可连接到您的数据库和微服务,立即提供可用于生产的 GraphQL API。
它可以立即从您的数据库模式生成 GraphQL API,因此开发人员无需编写大量后端代码即可查询和操作数据。
GraphQL 代码生成器是一款基于 GraphQL 模式和操作(例如查询、修改和订阅)生成代码的工具。它可以自动为不同的编程语言和框架创建类型化的输出。
GraphQL 代码生成器如何与 Hasura 良好结合?
⚡ GraphQL 代码生成器通过基于 GraphQL 模式自动创建 TypeScript 类型和钩子来补充 Hasura。
⚡ 它消除了开发人员手动定义类型和接口的需要,从而节省了时间并最大限度地降低了客户端和服务器之间出现拼写错误或不一致的风险。
⚡ 生成的类型作为 API 的一种文档形式,使开发人员更容易了解可用的数据以及如何与其交互。
⚡ 通过自动生成的查询、变异和订阅,开发人员可以快速实现功能,而不必担心类型定义与 GraphQL 模式保持同步。
🎯 一个坚实的理由,为什么选择这个选项?
即时 GraphQL API 和自动生成的前端代码节省时间。非常适合构建现代化 API 驱动应用的开发者。
5. 喝杜松子酒。
Go是由 Google 设计的一种静态类型编译型编程语言,以其简洁易用而闻名,是构建高性能、可扩展后端的首选。对于注重应用程序速度和控制力的开发者来说,Go 是理想之选。
Gin是一个用 Go(Golang)编写的 HTTP Web 框架。它提供了快速构建 RESTful API 的工具,并具备零分配路由器、中间件支持、内置渲染、JSON 验证等功能。它采用类似 Martini 的 API,性能提升约 40 倍。
为什么 Go with Gin 是一个绝佳的组合?
⚡ Go 的速度和简单性,加上 Gin 的简约设计和快速的 HTTP 路由器,使其成为构建 Web 服务器和 API 的最快组合之一。
⚡ Go 内置的带有 goroutines 的并发模型使您的后端能够轻松扩展,对于处理高流量特别有用。
⚡ 使用 Gin,您可以开箱即用地获得路由、中间件和请求处理,而无需额外配置,这使您能够专注于构建功能而不是管理样板代码。
您可以阅读有关如何使用 Go 和 Gin 开发 RESTful API 的教程。
🎯 一个坚实的理由,为什么选择这个选项?
Go 与 Gin 结合使用,可提供极快的性能和极低的开销,是构建可扩展高性能后端的理想之选。非常适合熟悉 Go 语言的开发者,以及希望在不牺牲速度的情况下获得完全控制权的开发者。
6. Django 与 Django REST 框架。
Django是一个高级 Python Web 框架,它鼓励快速开发和简洁实用的设计。它以其设计batteries-included
哲学而闻名,并内置了许多工具(例如管理面板),可以节省大量开发工作。
Django REST 框架 (DRF)是一个强大的工具包,用于在 Django 中构建 Web API。它通过序列化、身份验证和视图处理等功能简化了 RESTful API 的创建流程,同时还能与 Django 无缝集成。
为什么 Django 与 Django REST Framework 是一个绝佳的组合?
⚡ Django 配备了您所需的一切,包括管理面板、身份验证系统和数据库 ORM,因此您可以快速构建后端而无需额外的配置。
⚡ DRF 通过提供序列化器、视图集和身份验证机制等内置功能,轻松创建 RESTful API。这减少了开发人员需要编写的代码量,同时保持了功能性。此外,它们还提供了一个可浏览的 Web API 界面,使任何人都可以更轻松地测试端点并在开发过程中与 API 进行交互。
⚡ Django 的强大架构与 DRF 相结合,提供了可扩展性和强大的安全功能,例如防御 SQL 注入、XSS 和 CSRF 攻击。
🎯 一个坚实的理由,为什么选择这个选项?
一个快速、安全且可扩展的解决方案,使用 Python 以极简设置构建强大的 API。强大的社区支持和内置工具使其成为追求可靠性的个人开发者的理想之选。
7. Nextjs 与 Payload 一起作为 nextjs 原生无头 CMS。
Next.js是一个流行的 React 框架,以其在构建现代服务端渲染或静态 Web 应用方面的灵活性而闻名。它拥有许多实用功能,例如自动代码拆分、动态 HTML 流、React 服务器组件、自动优化(图像、字体、脚本)、路由处理程序等等,让您可以轻松创建快速、SEO 友好的网站。
我目前几乎所有项目都使用 Nextjs。
Payload是一款专为 Next.js 开发者打造的无头 CMS。随着 v3 版本的发布,它变得更加便捷,Next.js native
这意味着可以顺利集成 Next 路由处理程序、应用路由器和其他相关概念。
我实际上在它处于测试阶段时就使用它来测试,并在如何用一行在任何 Next 应用程序中获得 CMS 中写了它。
为什么 Next.js 和 Payload 是一个绝佳的组合?
⚡ 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 语言,那么 Spring Boot + Hibernate 是个不错的选择。
-
Ruby on Rails + ActiveRecord - 凭借其“约定优于配置”的理念和强大的自动化功能,非常适合快速原型设计。虽然 Rails 对于小型项目来说可能略显笨重,但对于经验丰富的 Ruby 开发者来说,它无疑是一个绝佳选择。
-
Node.js + Express.js - 使用 JavaScript 构建 API 的流行轻量级选择。它的灵活性固然有优势,但与那些固执己见的框架相比,可能需要更多决策和定制。
-
Flask + SQLAlchemy - 简约灵活,适合小型项目(避免使用较重的框架)。SQLAlchemy 非常适合数据库管理,且没有不必要的负担。是 Python 开发者的绝佳选择。
-
FastAPI + Pydantic - 对 Python 开发者来说,它快速又简单。它轻量、直观,并确保数据验证,非常适合快速项目。
-
Laravel + Eloquent - Laravel 通过其内置工具和开发者友好的框架改进了 PHP 开发。与 Eloquent 的 ORM 结合使用,它是快速构建现代后端的理想选择,尤其适合 PHP 爱好者。
而且我相信还会有更多的选择,特别是随着科技的快速发展。
重要的是选择一个拥有良好社区的地方,这样你就不会陷入困境。
说实话,这很难写,因为我不知道该结合哪种技术堆栈才能获得最大的输出。
这些只是开发人员构建复杂后端内容的一些最佳方法的起点。
如果您认为有更多有用的组合,请告诉我。
祝你今天过得愉快!下次再见 :)
我还运营着一个面向开发者和技术作家的社区(超过 200 名成员),在那里我分享我学到的一切。你可以加入dub.sh/opensouls。
你可以在anmolbaranwal.com 查看 我的作品。 感谢阅读!🥰 |
![]() ![]() ![]() |
---|
