--- title: "1.2 技术栈概念" description: "理解现代 Web 开发的技术分层" chapter: "第一章" --- # 1.2 技术栈概念 > **阅读完本节后,你将会收获:** > > - 理解技术栈的分层架构(前端、后端、数据库) > - 了解本教程采用的技术栈及其选择原因 > - 掌握通过 package.json 快速识别项目技术栈 > 序言中提到的 TypeScript、Next.js 等名词,构成了现代 Web 开发的技术栈。 ## 技术栈是什么 **技术栈(Tech Stack)**是开发项目时使用的技术组合。 现代 Web 应用分三层: ```mermaid graph TB A[用户界面
浏览器/移动端] --> B[全栈框架
Next.js] B --> C[前端层
React + TypeScript + CSS] B --> D[后端层
API + 业务逻辑] B --> E[数据层
PostgreSQL] style B fill:#e3f2fd style C fill:#fff3e0 style D fill:#f3e5f5 style E fill:#e8f5e9 ``` - **前端**:用户看到的界面(HTML、CSS、JavaScript) - **后端**:服务器端逻辑,处理数据(Node.js、Python) - **数据库**:存储数据(PostgreSQL、MongoDB) 本教程用的是 **Next.js 全栈框架**——前后端在同一个项目中,一个命令全部启动。 ::: details 🏗️ 点击体验:技术栈分层架构 > 💡 **练习**:点击各层查看详细内容,理解前端、后端、数据库、基础设施的关系。 > > 🎯 **核心概念**:现代 Web 应用分为多层,每层负责不同的职责,通过 API 进行通信。 ::: ## 本教程的技术栈 | 层级 | 技术选型 | 作用 | |:-----|:---------|:----| | **框架** | Next.js | 前后端一体 | | **语言** | TypeScript | 类型安全 | | **样式** | Tailwind CSS | 实用优先的 CSS | | **组件库** | shadcn/ui | 可复用的 UI 组件 | | **用户认证** | better-auth | 类型安全的认证 | | **数据库 ORM** | Drizzle ORM | 类型安全的数据库操作 | | **数据库** | PostgreSQL | 关系型数据库 | | **AI 集成** | Vercel AI SDK | 流式 AI 交互 | ::: tip 常用"轮子"参考 npm 上有数百万个现成的代码包,以下是常用的: | 功能 | 推荐包 | |------|--------| | **表单验证** | `zod` | | **表单管理** | `react-hook-form` | | **数据请求** | `@tanstack/react-query` | | **时间处理** | `date-fns` 或 `dayjs` | | **HTTP 客户端** | `axios` 或 `ofetch` | | **图标** | `lucide-react` | | **工具函数** | `lodash` | AI 会根据需求选择合适的包,你只需要知道"不重复造轮子"这个原则。 ::: ## 为什么选这套技术栈 这套技术栈是**为 AI 原生开发**选择的,核心原则:让 AI 更高效、让你更省钱。 **1. AI 理解成本低** Next.js 全栈 = 前后端在同一个项目。传统方式需要两个项目、配置跨域、启动两个服务;Next.js 只需一个 `pnpm dev`。项目结构越统一,AI 生成的代码越不容易出错。 **2. 部署零成本** | 方案 | 成本 | |------|------| | 传统:租服务器 | ¥50-200/月 | | 本教程:Vercel/EdgeOne | 免费 | **3. npm 生态:不重复造轮子** npm 是世界最大的开源代码仓库,有超过 200 万个包。 ```bash # 需要用户认证?现成的 pnpm add next-auth # 需要处理时间?现成的 pnpm add dayjs # 需要验证数据?现成的 pnpm add zod ``` AI 不会从零写代码,而是组合这些现成的"积木"。 **4. PostgreSQL 有免费托管** | 数据库 | 免费托管平台 | |--------|-------------| | PostgreSQL | Supabase、Neon、Railway | | MySQL | 几乎没有 | **5. 什么时候需要全栈?** 如果只是纯静态展示(如公司官网),HTML + CSS 足够。当你的项目需要: - 用户系统(登录、注册、权限) - 数据持久化(保存用户数据) - 业务逻辑(支付、通知、邮件) 就考虑全栈技术栈。 ## 快速识别项目技术栈 接手新项目时,查看 `package.json` 就能快速了解技术栈: | 依赖名 | 技术类型 | |--------|----------| | `next` | Next.js 全栈框架 | | `react` | React 前端库 | | `typescript` | TypeScript 类型系统 | | `drizzle-orm` | Drizzle 数据库 ORM | | `tailwindcss` | Tailwind CSS 样式 | | `ai` | Vercel AI SDK | 知道技术栈后,你就知道: - 项目是什么类型 - 需要哪些环境 - 遇到问题该搜索什么关键词 ## 常见问题 ### Q1: 我需要理解这些技术吗? 知道它们是什么、解决什么问题即可,不需要会写。AI 会负责写代码,你只需要: - 能看懂项目的结构 - 能描述你想要的功能 ### Q2: 为什么用 TypeScript 而不是 JavaScript? TypeScript 在开发阶段就能发现错误,AI 会用它写代码。你只需要看到 `.ts` 后缀时知道这是 TypeScript 即可。 ### Q3: 和大学教的 Java/Python 有什么区别? | 传统教学 | AI 原生路径 | |---------|-------------| | 面向找工作 | 面向做产品 | | 学 6-24 个月 | 跟着做项目即学会 | | 成为程序员 | 用工具解决问题 | 根本区别:大多数教程教你成为程序员,而这套教程教你用产品解决问题。AI 时代,你不需要成为程序员——你需要的是理解工具、描述需求、让 AI 帮你实现。 ## 相关内容 - 详见:[1.1 代码格式演变](./01-code-formats.md) - 详见:[1.3 浏览器与服务器基础](./03-browser-server.md) - 后续:[1.5 包管理与项目配置](./05-package-manager-and-config.md)