阅读完本节后,你将会收获:
- 理解技术栈决策的核心原则
- 掌握"需求优先"的选型思维
- 学会评估技术方案的可行性和复杂度
- 了解常见技术方案的适用场景
PRD 确定后再进行技术栈选型,先搞清楚要做什么,再决定用什么做。
在 AI 辅助开发时代,技术栈选择有了新的考量维度。AI 友好度描述的是 AI 对某项技术的训练数据覆盖程度。主流技术如 JavaScript、Python 拥有庞大的训练数据,AI 知道它们的最佳实践和常见陷阱;而冷门技术或新出现的框架,训练数据覆盖较少,生成的代码可能需要更多验证。
当你使用统一的技术栈时,AI 的上下文理解会更连贯。如果前端用 React,后端用 Python,数据库用 MongoDB——三种不同的技术范式混在一起,上下文切换多,生成的代码风格也容易不统一。而统一使用 TypeScript 生态——Next.js 做前后端,PostgreSQL 做数据库——AI 可以在一个连贯的上下文中工作,生成的代码更加一致和准确。类型定义在前后端共享,AI 不会搞错字段名;AI 能一次性理解整个项目,生成跨组件的代码。这些看似小的改进,累积起来会显著提升开发效率。
过去,技术选型往往是一个权衡游戏:选择 Java 意味着企业级稳定但开发缓慢;选择 Python 意味着快速开发但性能受限;选择 JavaScript 意味着全栈统一但类型不安全。TypeScript 和 Next.js 的组合打破了这种权衡——它提供了企业级的类型安全,实现了全栈的统一语言,适配 AI 时代,释放了个人开发者的生产力。这就是为什么本教程选择 TypeScript + Next.js 作为核心技术栈。
| 方案 | 适用场景 | 不适用场景 |
|---|---|---|
| Next.js | 需要后端、SEO、全栈开发 | 纯静态展示 |
| Vite + React | 纯前端、SPA 应用 | 需要 SSR/SEO |
| 纯 HTML/CSS | 极简静态页面 | 交互复杂的应用 |
| 方案 | 适用场景 | 不适用场景 |
|---|---|---|
| PostgreSQL | 关系型数据、需要事务 | 极简键值存储 |
| Supabase | 快速开发、需要认证/存储 | 需要完全自定义后端 |
| Neon | 无服务器架构、轻量需求 | 需要完整后端功能 |
| SQLite | 本地开发、极简需求 | 多用户并发写入 |
PostgreSQL 是最强大的开源数据库:
| 方案 | 适用场景 | 特点 |
|---|---|---|
| Vercel | Next.js 项目、全球分发 | 零配置部署,自动 CI/CD,Edge Functions 支持 |
| EdgeOne Pages | 需要国内节点、边缘计算 | 腾讯云全球加速,支持 Pages Functions 和 Node.js 运行时 |
| 云服务器 | 完全控制、复杂应用 | 需要自行配置环境和运维 |
| Docker | 需要环境一致性、多服务架构 | 容器化打包,确保开发与生产环境一致 |
Vercel 是 Next.js 的原生部署平台,提供:
EdgeOne Pages 是腾讯云推出的边缘部署平台:
选择建议:主要用户在国内选 EdgeOne Pages;需要全球分发或深度使用 Next.js 选 Vercel。
如果你想更深入理解技术背后的原理,可以阅读以下内容。这些知识对开发不是必须的,但有助于理解技术选型的逻辑。
理解语言的执行方式有助于选择合适的技术。你从应用商店下载的 App 是编译型的产物——代码在发布前就已经翻译成手机能直接执行的指令;而你在浏览器里打开的网页是解释型的——浏览器拿到代码后边读边执行。
| 类型 | 代表语言 | 执行方式 | 特点 |
|---|---|---|---|
| 编译型 | C、C++、Go、Rust | 先编译成机器码,再执行 | 运行速度快,部署简单 |
| 解释型 | Python、Ruby、JavaScript | 解释器逐行执行 | 开发效率高,灵活性强 |
| 混合型 | Java、C# | 编译成字节码,在虚拟机上运行 | 兼顾性能和跨平台 |
混合型语言(如 Java)需要先编译成一种中间代码,然后在虚拟机(VM)上运行。虚拟机就像是一座桥梁——同一份中间代码可以在 Windows、Mac 或 Linux 上运行,只要这些系统安装了对应的虚拟机。这就是"一次编写,到处运行"的原理。
这种思想延伸到了部署领域。Docker 采用了类似的概念:它把你的应用代码、运行时、依赖库和配置打包成一个"容器"。无论部署到开发环境、测试环境还是生产环境,容器里的应用行为都是一致的。
对于全栈开发者来说,Docker 的价值很简单:它解决了"在我机器上能运行"的问题。当你和团队协作时,不再需要担心"你的环境配置和我的不一样"。只要用同一个 Docker 镜像,每个人的运行环境就是一致的。
现代 Web 开发中,JavaScript/TypeScript 采用了一种灵活的方式:开发时使用解释型的便利性,部署时通过构建工具(如 Webpack、Vite)进行编译优化,生成适合生产环境的代码。
这种分层演进不是简单的替代关系,而是能力的叠加。每一层新技术都建立在前一层的基础之上,解决前一层无法高效解决的问题。选择技术时,理解这种分层思维能帮助你判断:一个新技术是真正的创新,还是只是现有技术的重新包装?前者可能带来长期价值,后者往往只是增加了学习成本。
例如,TypeScript 并非取代 JavaScript,而是在其之上增加了类型系统这层"安全网";Next.js 不是替代 React,而是在 React 基础上增加了服务端渲染、路由管理等能力。真正有价值的新技术,往往是站在巨人肩膀上的创新,而非平地起高楼的重造轮子。
不需要。PRD 阶段确定大方向即可:用什么框架(Next.js)、什么数据库(PostgreSQL)、部署到哪里(Vercel)。具体的库选择、组件设计可以在开发中调整。过度规划会浪费时间,因为实际开发中需求可能会变化。
先问 AI。把你的功能描述发给 AI,问"这个功能用 Next.js 能实现吗?大概需要什么技术?"AI 会告诉你可行性,以及可能的技术路线。如果 AI 说"需要用到 WebRTC"或"需要第三方地图服务",你就知道需要额外调研这些技术。
不需要。你可以边做边学。遇到不懂的语法问 AI:"这行代码是什么意思?""怎么给这个变量加类型?"实际项目是最好的老师——你为了做出功能而学习,比先看教程再动手效率高得多。本教程假设你是零基础,所有代码都会有解释。
Next.js 本身是做网页的,但网页可以在手机浏览器中打开。如果你想做原生 App(从应用商店下载的那种),有几个选择:
对于 MVP 验证,网页版通常就够了。等验证成功后再考虑做原生 App。