在当今技术飞速发展的时代,每周都会有新工具和新技术诞生。特别是在人工智能(AI)领域,几乎每天都有新工具或模型发布。同样,在 JavaScript 生态系统中,各种新库和框架也层出不穷。
技术的迭代速度让人难以跟上,因此,拥有一套可靠、易用的技术栈显得尤为重要。这套技术栈应该能支持你快速、稳定地开发 Web 应用,同时减少选择的混乱和不必要的学习成本。
以下是我当前使用的技术栈,希望能为你的开发工作提供参考和启发。
前端开发
在前端开发中,我首选 React,这是一个经过时间验证的工具,功能强大且灵活。我常将它与 Next.js 搭配使用,以便轻松实现服务器端渲染(SSR)和构建现代 Web 应用。
尽管 Next.js 的某些默认约定显得有些“强制化”,我并不完全遵循它的规范,但我欣赏它在构建 React 应用时提供的便利,例如 App Router 和 Image 组件。我暂未尝试它的 Server Actions 功能,因为目前还处于探索阶段。
在处理 API 时,我将 React Query 和 Axios 搭配使用。这两者配合默契,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 设置变得非常简单。相较于之前使用的 Vercel 和 GCP(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 R2、AWS S3 和 Supabase Storage 都是不错的选择。
存储技术栈总结:
? ImageKit(图片存储)
? Cloudflare R2、AWS S3 或 Supabase Storage(通用存储)
成本
采用以上技术栈,主要开销集中在 DigitalOcean 的 VPS 服务,每月约 $20-$30。如果预算有限,可以选择更便宜的替代方案,例如 Hetzner 的服务,其定价通常低于 DigitalOcean。
此外,许多服务提供免费套餐,可以帮助你在前期探索时控制成本。
结语
这套技术栈是我经过长期项目验证后总结出的可靠选择。它让我能够快速、高效地开发 Web 应用,同时保持灵活性和稳定性。
记住,选择技术栈的关键不在于追逐最新的工具,而是找到适合自己需求的方案。希望这份技术栈能为你提供灵感,甚至成为你构建 Web 应用的起点!
如果你有任何问题或建议,欢迎留言,我很期待与你交流! ??