我把我的项目构建了四次,这就是我学到的

发布: (2026年3月30日 GMT+8 20:28)
4 分钟阅读
原文: Dev.to

Source: Dev.to

Requirements

  • 一个能够简要说明协会内容的着陆页
  • 一个用于登记人员并在活动中签到的 web 应用

Initial Stack (2022)

  • React 18
  • PHP 8.1
  • MySQL

运行良好且响应迅速。代码库简单且天真。

Switching to a More Powerful Stack

Next.js

想要原始的 SSR 能力、前端层的服务器端逻辑以及 SEO 优化。

Go

需要为未来的移动应用和成千上万的用户提供 API 可扩展性。

PostgreSQL

开始为托管的 PostgreSQL 服务付费,认为它比 MySQL 更有必要。

第一版在一个月内发布。

Price

第一个问题是成本。使用 render.com,每个服务每月 $7。前端、后端和数据库合计大约 $21 / month,对一个小协会来说负担不小。

Scalability

一个重大错误是把可扩展性和复杂性混为一谈。
系统充斥着抽象和层级,虽然组织良好,却难以快速修改。这种设置适合拥有众多开发者的大公司,但对小项目来说,每当需要微调功能时都成了负担。

Version 3

在意识到需要更便宜的方案后,我们在保留 SEO 好处的前提下切换了技术栈。

  • Next.js – 用于 SEO
  • Directus – 后台管理
  • PostgreSQL

Next.js 直接调用 Directus API,在本地体验极佳。部署使用 fly.io 以获得低成本和自动机器扩展。

缺点: Directus 启动需要 5–10 秒,前端再需 2–3 秒,总计 7–13 秒才能加载着陆页。
好处: 没有月费。

Version 4

后来我们发现很多 Directus 可编辑的区块并非必要。重构后可编辑的部分仅剩三个区块。

  • Next.js(完整静态站点)
  • PostgreSQLPrisma 作为 ORM
  • NextAuth 用于快速登录系统
  • 简单的仪表盘管理这三个可编辑区块

结果:在近四年工作后,仅用一周就完成了网站。

What I Have Learned

  • 复杂的方案是很好的话题,却不一定适合生产代码。
  • 成本和基础设施决策应在绘制 UML 图之前就确定。
  • 该项目让我把产品视为整体系统的组成部分,与协会需求保持一致。
  • 可扩展性是相对的,取决于你的实际需求。
  • “越少考虑产品的未来,越好。” 构建简单的东西并留出成长空间——少即是多
0 浏览
Back to Blog

相关文章

阅读更多 »

React Hooks 详解:2026 年图解指南

当你刚接触 React Hooks 时,它们可能会让人感到困惑。本指南通过清晰的示例解释了最重要的 Hook。useState jsx import { useState } from 're...