# 前端架构

**我是卡若。**

前端就是项目的脸。用户不管是通过朋友圈、抖音还是私域进来，第一眼看到的就是这个页面。如果加载慢、长得丑、滑动卡，人家转头就走，我的流量就浪费了。

所以，前端的核心目标只有一个：**极致的移动端阅读体验，像原生 App 一样丝滑。**

## 1. 技术底座

别跟我说什么技术先进，我要的是**稳**和**快**。

-   **框架**: Next.js 14 (App Router) - 必须用最新的 App Router，路由管理更清晰。
-   **语言**: TypeScript - 必须用 TS，类型安全，少出低级 Bug。
-   **样式**: Tailwind CSS - 写样式最快，没有之一。配合 `globals.css` 做全局控制。
-   **UI 组件库**: Shadcn UI (基于 Radix UI) + Vant UI (风格参考)。
    -   *注意*：我们要像素级复刻 iOS 风格，字体用 San Francisco，圆角、阴影都要对齐。

## 2. 目录结构（我的地盘）

前端代码主要集中在 `app/` 和 `components/`。

\`\`\`
app/
├── (routes)/               # 路由组，逻辑隔离
│   ├── page.tsx            # 首页：封面、简介、购买按钮
│   ├── chapters/           # 目录页：章节列表
│   ├── read/[id]/          # 阅读页：核心体验区
│   ├── my/                 # 个人中心：购买记录、分销
│   ├── admin/              # 管理后台：给自己用的
│   └── documentation/      # 文档生成：内部工具
├── layout.tsx              # 全局布局：导航栏、SEO Meta
├── globals.css             # 全局样式
└── error.tsx               # 错误处理页面

components/
├── ui/                     # 通用组件 (Button, Input, Skeleton)
├── modules/                # 业务模块组件 (新增)
│   ├── auth/               # 认证模块 (AuthModal)
│   ├── payment/            # 支付模块 (PaymentModal)
│   ├── marketing/          # 营销模块 (QRCodeModal)
│   └── referral/           # 分销模块 (ReferralShare)
├── book-cover.tsx          # 书籍封面展示
├── chapter-content.tsx     # 章节内容渲染器
├── bottom-nav.tsx          # 底部导航栏 (手机端核心)
└── theme-provider.tsx      # 主题管理 (深色/浅色模式)
\`\`\`

## 2.1 业务模块化 (Modularization)

为了支持“云阿米巴”模式的快速迭代，我们将核心业务逻辑封装为独立模块：

- **支付模块 (Payment)**: 统一管理微信、支付宝、USDT 等支付方式，支持整书/单章购买。
- **营销模块 (Marketing)**: 负责引流（如二维码弹窗、倒计时Banner），连接私域流量池。
- **分销模块 (Referral)**: 负责裂变传播（如分享按钮、返利计算），让用户帮我们卖书。
- **认证模块 (Auth)**: 统一的用户登录与权限校验。

这种设计允许我们在不修改页面核心逻辑的情况下，插拔不同的变现策略。

## 3. 核心交互设计

### 3.1 骨架屏 (Skeleton)
**规则**：凡是需要加载数据的地方，必须先展示骨架屏。
- 用户不能看白屏，哪怕等 0.5 秒，也要让他看到“东西正在来”的样子。
- 强制引入 `Skeleton` 组件。

### 3.2 路由动画 (Transition)
**规则**：页面切换不能生硬地跳。
- 使用 Framer Motion 或 CSS Transition。
- 模拟 iOS 的滑动切换或淡入淡出。

### 3.3 阅读体验
- **字体**：针对不同设备优化，保证字号适中，行间距舒服（建议 1.6-1.8）。
- **图片**：懒加载 (Lazy Load)，点击可放大预览。
- **代码块**：虽然是书，但如果有代码，要有高亮和复制按钮。

## 4. 数据获取 (Fetching)

- **服务端组件 (Server Components)**：
    - `page.tsx`, `read/[id]/page.tsx` 默认都是服务端组件。
    - 直接在组件内 `await` 获取数据（通过 `lib/book-data.ts`），SEO 极佳。
- **客户端组件 (Client Components)**：
    - 需要交互的（点击、弹窗、状态变化），头部加 `'use client'`。
    - 比如 `auth-modal.tsx`, `purchase-section.tsx`。

## 5. 待办事项 (Todo)

- [ ] 全局引入 Skeleton，替换掉所有的 `Loading...` 文字。
- [ ] 检查所有页面的 Mobile 适配，在 Chrome 开发者工具里用 iPhone SE 和 iPhone 14 Pro Max 两个尺寸测。
- [ ] 优化字体栈，确保在安卓上也不难看。

---
**总结**：
前端不仅是写代码，是**做产品**。每一个像素的偏移都影响用户的信任感。把细节抠好，转化率自然就高了。
