四时宝库

程序员的知识宝库

我的现代 Web 应用技术栈

在当今技术飞速发展的时代,每周都会有新工具和新技术诞生。特别是在人工智能(AI)领域,几乎每天都有新工具或模型发布。同样,在 JavaScript 生态系统中,各种新库和框架也层出不穷。

技术的迭代速度让人难以跟上,因此,拥有一套可靠、易用的技术栈显得尤为重要。这套技术栈应该能支持你快速、稳定地开发 Web 应用,同时减少选择的混乱和不必要的学习成本。

以下是我当前使用的技术栈,希望能为你的开发工作提供参考和启发。

前端开发

在前端开发中,我首选 React,这是一个经过时间验证的工具,功能强大且灵活。我常将它与 Next.js 搭配使用,以便轻松实现服务器端渲染(SSR)和构建现代 Web 应用。

尽管 Next.js 的某些默认约定显得有些“强制化”,我并不完全遵循它的规范,但我欣赏它在构建 React 应用时提供的便利,例如 App Router 和 Image 组件。我暂未尝试它的 Server Actions 功能,因为目前还处于探索阶段。

在处理 API 时,我将 React QueryAxios 搭配使用。这两者配合默契,React Query 的数据缓存和管理功能尤其出色,为开发提供了极大的便利。

在样式方面,我选择 Tailwind CSS。虽然它的类名体系可能显得冗长,但上手简单、效率高,是不错的折衷方案。我还结合 shadcn/ui 来快速构建简约风格的 UI 组件。

前端技术栈总结

? React & Next.js

? React Query & Axios

? Tailwind CSS & shadcn/ui

?? 后端开发

后端开发方面,我使用 Node.js,这是一个经过多次项目检验的工具。我通常将它与 Nest.js 搭配,后者提供了模块化的开发体验,并使用装饰器让 API 构建更高效。

Nest.js 的结构化设计让我能够快速搭建清晰的项目架构。虽然可能会遇到循环依赖或“代码魔法”问题,但深入理解其原理并认真阅读文档后,这些问题基本可以迎刃而解。

对于数据库,我偏爱 PostgreSQL(通过 Supabase 提供支持),并配合 TypeORM 使用。TypeORM 的文档详细,与 Nest.js 的集成效果非常好,是我用过的最可靠的 ORM 工具之一。

后端技术栈总结

? Node.js & Nest.js

? PostgreSQL(Supabase) & TypeORM

? 部署与基础设施

部署方面,我最近开始使用 Coolify,这是一个极简的部署工具,支持自托管,同时让 SSL 设置变得非常简单。相较于之前使用的 VercelGCP(Cloud Run),我更倾向于使用传统的 VPS,因其性能更稳定,且控制权更高。我通常选择 DigitalOcean 的 VPS 服务。

Coolify 的配置非常简单,文档也易于理解。对于 DNS 和 CDN 管理,我使用 Cloudflare,并直接从他们那里购买域名,以便于集中管理。

CI/CD 方面,我通过 Github 集成 Coolify,并设置部署通知推送至 Discord,方便实时监控。

部署技术栈总结

? Coolify(DigitalOcean)

? Cloudflare

? Github

邮件服务

邮件服务常常被低估,但它在项目中其实必不可少。我使用 Resend 来处理邮件发送,简单高效。此外,结合 @react-emails,我能够快速构建可靠的邮件模板,极大地提升了邮件开发的效率。

如果需要更复杂的邮件功能,我也会将 Resend 与 Supabase 集成,灵活性很高。

邮件技术栈总结

? Resend

? @react-emails

用户认证

用户认证方面,我使用 Supabase 提供的身份认证服务。通过后端调用其 API,我能够快速实现用户登录、注册等功能。当然,Supabase 也支持前端 SDK,但我更倾向于后端实现,这样数据管理更加安全且灵活。

由于我使用的是 Postgres 数据库,如果需要,我还可以在现有栈的基础上自行实现认证服务,从而更好地掌控用户数据。

认证技术栈总结

? Supabase

文件存储

对于图片存储,我选择 ImageKit,它支持快速存储和实时图片处理,非常方便。至于通用文件存储,目前我还没有明确的偏好,但 Cloudflare R2AWS S3Supabase Storage 都是不错的选择。

存储技术栈总结

? ImageKit(图片存储)

? Cloudflare R2、AWS S3 或 Supabase Storage(通用存储)

成本

采用以上技术栈,主要开销集中在 DigitalOcean 的 VPS 服务,每月约 $20-$30。如果预算有限,可以选择更便宜的替代方案,例如 Hetzner 的服务,其定价通常低于 DigitalOcean。

此外,许多服务提供免费套餐,可以帮助你在前期探索时控制成本。

结语

这套技术栈是我经过长期项目验证后总结出的可靠选择。它让我能够快速、高效地开发 Web 应用,同时保持灵活性和稳定性。

记住,选择技术栈的关键不在于追逐最新的工具,而是找到适合自己需求的方案。希望这份技术栈能为你提供灵感,甚至成为你构建 Web 应用的起点!

如果你有任何问题或建议,欢迎留言,我很期待与你交流! ??

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接