这是你作为 Python 后端开发者需要经历的第一个,也是最关键的一个思维转变。
在第一章中,我们了解了 Node.js 异步的““哲学””。现在,我们来谈谈 JavaScript 生态的““安全带””:TypeScript (TS)。
作为一名 Python 后端开发者,你最熟悉的可能是 Jinja2。在 Flask 或 Django 中,你从数据库获取数据,将其““注入””到一个 HTML 模板中,服务器““渲染””出一个 HTML 字符串,然后发送给浏览器。这个过程是 命令式 (Imperative) 的——你告诉模板引擎““在这里循环,在...
如果你在 1.4 节建立的算法思维是““计算原语””,那么 Next.js App Router 就是一个将这些原语““工程化””的集大成者。它是一个为解决 SAAS 应用(尤其是数据驱动和 I/O 密集型)性能瓶颈而设计的、高度优化的架构。
在第 4 章中,我们建立了 RSC 的““架构””——基于““树””的路由和基于““哈希表””的缓存。在本章中,我们将深入探讨这些架构的““运行时””:我们如何具体地获取、刷新和““流式””传输数据,以构建一个高性能的 SAAS 仪表盘。
从 Django 或 Flask 迁移过来,我们最习惯的模式是什么?为 'Create', 'Update', 'Delete' (C/U/D) 操作定义 REST/GraphQL API 路由。
欢迎来到第四部分。在这里,我们将从 '如何实现' 暂时跳出,进入 '为何这样选' 的架构师思维。对于一个全栈 SAAS 应用,有两个最关键的决策将决定你的开发速度、扩展性和长期成本:数据库和认证。
在第 7 章中,我们选择了 ORM 路径,决定使用 Drizzle 来掌控我们的数据库。这个决定会直接影响我们的认证(Authentication)方案。
欢迎来到第九章。到目前为止,我们已经构建了一个单用户系统:用户登录,创建_自己的_项目。但几乎所有成功的 SAAS (Software as a Service) 应用(如 Slack, Notion, Figma)都不是单用户系统,它们是多租户系统。
在第 7 章和第 9 章,我们在 src/db/schema/ 目录中定义了我们的数据库表结构。但我们遗留了一个关键问题:当你修改了 schema (比如给 usersTable 添加一个 bio 字段),这个变更如何安全地应用到已经在线上运行的生产数据库中?
欢迎来到第五部分,也是我们 SAAS 应用的核心商业逻辑。在前面的章节中,我们构建了坚实的应用基础——从前端 UI、RSC 数据流、安全的 Server Actions 到类型安全的 Drizzle ORM 和 'better-auth' 认证。现在,是时候将我们的应用从一个“项目”转变为一个“产品”了:实现付费订阅。
在第 11 章中,我们成功地集成了 Stripe Checkout 和 Webhooks,为我们的 SAAS 奠定了“订阅”基础。用户现在可以为“Pro”计划付费了。然而,一个现代 SAAS,尤其是 AI SAAS,仅仅区分“免费”和“付费”是远远不够的。
一个 SAAS 应用如果“只进不出”,是无法长久运营的。用户在你的平台上执行了操作,平台必须以某种方式给予反馈。应用启动和运行后,你也需要一种方式来触达你的用户,无论是通知他们新功能,还是在他们遇到问题时提供帮助。
欢迎来到第六部分:DevOps 与质量保障。在前面的章节中,我们已经构建了一个功能完备的 SAAS 应用,涵盖了从数据库 (Drizzle)、认证 (better-auth)、支付 (Stripe) 到运营 (React Email) 的所有核心功能。现在,是时候确保我们能安全、可靠、快速地将这些功能交付给我们的...
在第 14 章中,我们建立了一个坚实的 CI/CD 流水线,它充当了我们 SAAS 应用的“守门员”。这个守门员的核心职责之一就是运行 pnpm lint 和 pnpm typecheck。但是,这些命令背后到底是什么在工作?
在第 14 章中,我们建立了一个 CI/CD 流水线,它充当了我们 SAAS 应用的“守门员”。在第 15 章中,我们使用 Biome (Linter) 确保了代码的“静态质量”。然而,一个只检查语法的守门员是远远不够的。我们的 CI 流程中还有一个 pnpm test 命令——这才是质量保障的核心。
到目前为止,我们的 SAAS 应用已经功能完备,并通过了严格的 CI/CD 流程(第 14 章)和自动化测试(第 16 章)。它已经部署到了 Vercel 上的生产环境。但是,一旦应用“走出”了我们的开发和测试环境,进入了真实用户的、不可预测的设备和网络中,我们如何知道它是否运行良好?
欢迎来到第七部分:高级集成与架构实践。在第六部分中,我们建立了一个完整的 DevOps 和可观测性堆栈。我们现在拥有:
在本书的前 18 章中,我们已经构建了一个极其坚实的 SAAS 基础。我们拥有了支付 (Stripe)、认证 (better-auth)、数据库 (Drizzle)、DevOps (GitHub Actions) 和功能发布 (Feature Flags) 的所有核心组件。现在,是时候为我们的 SAAS 注入“智...
欢迎来到本书的最后一部分。在过去的 19 章中,我们一起经历了一场从 Python 后端到现代 JS 全栈的思维转变。我们构建了一个功能完备、可观测、可测试、可安全部署的 AI SAAS。
欢迎来到本书的最后一章。在第 20 章中,我们直面了 Next.js 15+ 架构中那些最令人头疼的陷阱,尤其是 React Server Components (RSC) 的缓存问题和各种反模式。你可能会想:“理论我都懂了,但当我的应用真的出现缓存不刷新或数据错乱时,我该如何像 Python 调试器 (PDB)...
如果你从第一章开始一路跟随,你已经完成了一次意义非凡的跨越:从一名经验丰富的 Python 后端开发者,转变为一名能够驾驭现代 JavaScript 生态的全栈架构师。