--- title: "第四章:你必须知道的开发基础" --- # 第四章:你必须知道的开发基础 ![img](/images/Advanced/mlkzwcw8-aa8ae9e1ebb5251a.jpg) ## 序言 在开始写代码之前,老师傅告诉你,还有一些关键的开发常识需要提前了解。这些知识不会直接教你写代码,但会让你理解代码是如何在互联网上运行的。 ### 代码运行的三种状态 老师傅首先给你讲了代码的"生命状态":**Dev(开发)、Build(构建)、Production(生产)**。 Dev 模式就像打草稿,保存代码后浏览器自动更新,方便调试。Build 模式像把草稿印刷成书,压缩优化代码。Production 模式模拟正式环境,运行构建后的版本。 理解这三种状态能避免很多困惑:比如为什么改了代码没效果(可能在错误的模式下),或者为什么别人看不到你的本地演示(Dev 模式不适合演示)。 > [4.0 代码运行的三种状态](./00-build-basics.md) 🟢 - 理解 Dev、Build、Production 三种运行模式 ### 技术栈选择 技术栈选型应该在 PRD 确定后进行。老师傅说:"先搞清楚要做什么,再决定用什么做。" 面对那么多技术选项,新手容易纠结。其实有个简单的决策框架:全栈 Next.js(AI 友好、生态成熟、部署便捷),除非你的项目是纯前端再考虑 Vite;数据库使用 PostgreSQL(关系型 + JSONB + pgvector,扩展性强)。 **PostgreSQL 数据库的两种托管方式**:Supabase 和 Neon 都是托管 PostgreSQL 的云服务,但定位不同。**Supabase** 提供完整的后端功能(认证、存储、实时订阅),适合快速开发;**Neon** 专注于数据库本身,轻量且支持无服务器架构,适合对后端有自定义需求的场景。如果你只想专注业务逻辑,选 Supabase;如果你需要灵活控制,选 Neon。 PostgreSQL 通过扩展支持更多功能,如 `JSONB`(存储 JSON 数据)和 `pgvector`(向量搜索,需单独安装扩展)。 核心思路是"明确需求 → 评估复杂度 → 选择最小可行方案",预留扩展空间但不过度设计。在 AI 时代,技术栈越统一,AI 的上下文理解就越准确,开发效率也越高。 > [4.1 技术栈决策框架](./01-tech-stack-decision.md) 🟡 - 系统化地选择合适的技术栈 ### 编程的基本构件 老师傅说,在写代码之前,你得先明白代码是由什么构成的。就像写文章要先认识字一样,编程也有它的"基本字"——**变量**、**函数**、**条件**和**循环**。所有编程语言,无论语法如何不同,都基于这四个核心概念。变量存储数据,函数封装可复用的逻辑,条件让程序能根据不同情况采取行动,循环让程序能批量处理重复任务。这四个概念是**图灵完备**的基础,任何可计算的问题都可以用它们的组合来解决。 > [4.3 如何读懂 AI 生成的代码](./03-programming-basics.md) 🟢 - 理解代码的四个核心概念 ### PRD 与技术文档的关系 在 PRD 迭代到 5 稿、产品方案基本确定后,老师傅提醒你,除了梳理业务逻辑,你还需要记录具体的技术实现方案,也就是**技术文档**。 很多人容易混淆 PRD 和技术文档,其实它们的分工很明确: **PRD(产品需求文档)** 回答"做什么"的问题: - 目标用户是谁? - 核心功能有哪些? - 用户如何交互? - 边缘场景怎么处理? **技术文档** 回答"怎么做"的问题: - 用什么技术栈?(Next.js + PostgreSQL) - 数据库表结构怎么设计?(用户表、文章表、评论表) - API 接口怎么定义?(/api/auth、/api/posts) - 第三方服务怎么集成?(AI API、地图服务) - 部署方案是什么?(Edgeone、Vercel、云服务器) 老师傅说:"对于现在的你来说,不必拘泥于形式,完全可以将技术文档与 PRD 合并,统称为**项目文档**,这样查阅起来更方便。但要清楚区分哪些是产品层面的思考,哪些是技术层面的决策。" > [4.2 从 PRD 到技术文档](./02-prd-and-tech-docs.md) 🟢 - 理解产品文档与技术文档的分工 ### API 与 HTTP 基础 老师傅看你一脸好奇,便给你讲了**前后端交互**的底层原理。他说,**HTTP** 就像一套远程办事指令系统——浏览器向服务器发送规范化的指令,服务器处理完再把结果返回。每条指令包含四个部分:**请求方法**(GET/POST/PUT/DELETE 等,表示做什么操作)、**URL**(资源的地址)、**Headers**(身份认证等元数据)、**Body**(发送的数据内容)。理解这四个部分能让你更快定位问题:返回 `401` 是未认证(需要登录),`403` 是无权限(登录了但无权访问),`404` 是资源不存在(地址错误或资源已删除)。虽然 AI 会帮你处理细节,但懂原理才能排查问题。 > [4.4 API与HTTP基础](./04-api-and-http.md) 🟢 - 掌握 API 和 HTTP 协议的工作原理 ### 前后端分离概念 在学习 HTTP 通信的过程中,老师傅先给你解释了**前端**和**后端**这两个概念。 **前端(Frontend)** 是用户看到和操作的界面——浏览器里运行的代码。你在网页上看到的按钮、输入框、图片、文字,都是前端渲染出来的。当你点击按钮或输入文字时,前端代码会做出反应。 **后端(Backend)** 是服务器上处理数据和逻辑的代码。用户看不到它,但它负责处理前端发来的请求——比如查询数据库、验证身份、调用其他服务。处理完成后,后端把结果返回给前端,前端再展示给用户。 以前,前端和后端通常是两个独立的项目,用不同的语言写,由不同的团队维护。现在有了 **Next.js 这样的全栈框架**,前端和后端代码都在同一个项目里,用同一种语言(JavaScript/TypeScript)写,但它们各自的职责没有变:前端负责"展示",后端负责"处理"。 在规划功能时,你遇到了两个必须提前考虑的问题:你想要做用户系统,这涉及到鉴权。你想要做地图功能,这涉及到外部 API。老师傅提醒你,不要把所有代码都塞在一个文件里,要学会把功能拆分成不同的模块,比如 `auth`(认证)、`api`(接口)、`components`(组件)。这种**模块化思维**是项目能长期维护的关键。 > [4.5 前后端分离概念](./05-frontend-backend-separation.md) 🟢 - 理解前后端分离的架构与交互 ### 配置文件格式 在编写技术文档和配置项目的过程中,你还顺便了解了 **JSON** 和 **YAML** 这些奇怪的配置文件格式。 **JSON** 就像是一种严格格式化的数据表达方式。它用大括号 `{}` 表示对象,用方括号 `[]` 表示数组,数据以"键: 值"的方式组织。你可以把 JSON 理解为**数字时代的普通话**——不同编程语言、不同系统之间交流的通用语言。 **YAML** 则是一种更人性化的配置格式,它不使用括号,而是通过缩进来表示层级关系,写起来更简洁。很多配置文件(如某些 CI/CD 配置)都使用 YAML 格式。 原来,对于 AI 来说,相比于散漫的自然语言,这些结构清晰的格式才是它们最爱读的"说明书"。 > [4.6 配置文件格式](./06-config-formats.md) 🟢 - 理解 JSON 和 YAML 配置格式 ### API 集成实战 你想接入 AI 能力,或者地图服务等。老师傅告诉你,集成外部 API 有六个步骤:获取凭证、选择 SDK、配置环境变量、编写最小测试、归档参考文档、处理常见错误。 老师傅特意叮嘱,**一定要把 API Key 保存到环境变量 `.env` 文件中**,而不是直接写死在代码里。环境变量就像是代码和密钥之间的"防火墙"。 对于 AI 应用,老师傅推荐使用 **Vercel AI SDK**。它提供 `@ai-sdk/openai-compatible` 包,可以对接任何兼容 OpenAI API 格式的服务商。你只需要学习一套 API 规范,修改 `baseURL`、API Key 和模型名称即可调用全球主流大模型。 测试通过后,记得把官方文档保存下来。下次让 AI 写功能时,直接把文档喂给它,生成的代码更准确。 > [4.7 API集成实战](./07-api-integration.md) 🟢 - 从零开始集成外部 API ### 项目说明书 README.md 代码不仅是给机器运行的,也是给人和 AI 阅读的。你知道了要写 **README.md**。这不是冗余信息,而是项目的"说明书"。你在里面清晰地记录了如何启动项目(`pnpm dev`)、如何配置环境变量、核心功能的逻辑。从此,无论是谁,直接看文档就上手了。 README.md 就像是项目的"门面",包含:项目简介、快速开始、环境变量、核心功能、技术栈、贡献指南。 > [4.8 项目说明书结构](./08-readme-structure.md) 🟢 - 编写完整的项目 README.md 文档 --- ### 学习目标 完成本章后,你将能够: - ✅ 理解代码运行的三种状态 - ✅ 理解技术栈选择的决策框架 - ✅ 区分 PRD 与技术文档的作用 - ✅ 理解代码的四个基本构件(变量、函数、条件、循环) - ✅ 掌握 HTTP 协议的基本原理 - ✅ 理解前后端分离的概念 - ✅ 学会集成外部 API - ✅ 理解 JSON 和 YAML 配置格式 - ✅ 编写清晰的项目 README - ✅ 建立模块化思维 --- --- **上一章**:[第三章:产品思维与文档驱动](../03-prd-doc-driven/index.md) **下一章**:[第五章:界面(UI)与交互(UX)](../05-ui-ux/index.md)