# Novalon Website

这是一个基于 Next.js 16 构建的现代化静态网站项目，采用 React 19 和 TypeScript 技术栈。

## 技术栈

- **框架**: Next.js 16.1.6 (App Router)
- **语言**: TypeScript 5
- **UI 库**: React 19.2.3 + React DOM 19.2.3
- **样式**: Tailwind CSS v4 + CSS Variables
- **组件库**: shadcn/ui (基于 Radix UI)
- **动画**: Framer Motion 12.29.2
- **图标**: Lucide React 0.563.0
- **工具库**:
  - `clsx` - 条件类名合并
  - `tailwind-merge` - Tailwind 类名智能合并
  - `class-variance-authority` - CVA 变体管理
  - `zod` - 数据验证

## 项目特性

- ✨ **现代化 UI** - 基于 shadcn/ui 的精美组件设计
- 🎨 **主题支持** - CSS Variables 驱动的深色/浅色主题
- 📱 **响应式设计** - 完美适配各种屏幕尺寸
- 🚀 **静态导出** - 支持静态 HTML 输出
- 🔧 **类型安全** - 完整的 TypeScript 支持
- 📦 **代码分割** - 自动按路由代码分割
- 🎯 **路径别名** - 使用 `@/*` 别名导入

## 快速开始

### 环境要求

- Node.js 18+
- npm / yarn / pnpm / bun

### 安装依赖

```bash
npm install
# 或
yarn install
# 或
pnpm install
# 或
bun install
```

### 开发模式

启动开发服务器：

```bash
npm run dev
# 或
yarn dev
# 或
pnpm dev
# 或
bun dev
```

访问 [http://localhost:3000](http://localhost:3000)

### 构建生产版本

构建静态导出：

```bash
npm run build
# 或
yarn build
# 或
pnpm build
# 或
bun build
```

输出目录: `dist/`

### 启动生产服务器

```bash
npm start
# 或
yarn start
# 或
pnpm start
# 或
bun start
```

### 代码检查

```bash
npm run lint
# 或
yarn lint
# 或
pnpm lint
# 或
bun lint
```

## 项目结构

```
novalon-website/
├── src/
│   ├── app/                    # Next.js App Router 页面
│   │   ├── layout.tsx         # 根布局文件
│   │   ├── page.tsx           # 首页
│   │   ├── globals.css        # 全局样式
│   │   └── [routes]/          # 动态路由
│   ├── components/            # React 组件
│   │   ├── ui/               # shadcn/ui 基础组件
│   │   └── ...               # 业务组件
│   ├── lib/                   # 工具函数和配置
│   │   └── utils.ts          # cn() 工具函数
│   └── assets/               # 静态资源
├── public/                   # 公共静态资源
├── dist/                     # 构建输出目录（静态导出）
├── next.config.ts            # Next.js 配置
├── tsconfig.json             # TypeScript 配置
├── tailwind.config.*         # Tailwind CSS 配置
├── components.json           # shadcn/ui 配置
└── package.json
```

## 路径别名

项目配置了以下路径别名：

| 别名           | 映射路径              | 示例                   |
| -------------- | --------------------- | ---------------------- |
| `@/*`          | `./src/*`             | `@/components/Button`  |
| `@/components` | `./src/components`    | @/components/ui/button |
| `@/lib`        | `./src/lib`           | @/lib/utils            |
| `@/ui`         | `./src/components/ui` | @/ui/button            |
| `@/hooks`      | `./src/hooks`         | @/hooks/useToggle      |

## 主要依赖

### 生产依赖

| 依赖                     | 版本    | 用途              |
| ------------------------ | ------- | ----------------- |
| next                     | 16.1.6  | React 全栈框架    |
| react                    | 19.2.3  | UI 库             |
| react-dom                | 19.2.3  | React DOM 渲染    |
| framer-motion            | 12.29.2 | 动画库            |
| lucide-react             | 0.563.0 | 图标库            |
| @radix-ui/react-\*       | -       | 无状态可访问组件  |
| tailwind-merge           | 3.4.0   | Tailwind 类名合并 |
| class-variance-authority | 0.7.1   | 变体类名管理      |
| clsx                     | 2.1.1   | 条件类名合并      |
| zod                      | 4.3.6   | 数据验证          |

### 开发依赖

| 依赖               | 版本   | 用途                |
| ------------------ | ------ | ------------------- |
| typescript         | 5      | 类型系统            |
| tailwindcss        | 4      | CSS 框架            |
| @types/node        | 20     | Node.js 类型        |
| @types/react       | 19     | React 类型          |
| @types/react-dom   | 19     | React DOM 类型      |
| eslint             | 9      | 代码检查            |
| eslint-config-next | 16.1.6 | Next.js ESLint 配置 |

## 配置说明

### Next.js 配置 (`next.config.ts`)

```typescript
import type { NextConfig } from "next";

const nextConfig: NextConfig = {
  output: "export", // 静态导出模式
  distDir: "dist", // 输出目录
  images: {
    unoptimized: true, // 静态导出需要禁用图片优化
  },
};

export default nextConfig;
```

### TypeScript 配置 (`tsconfig.json`)

- 目标: ES2017
- 模块: ESNext (bundler)
- 严格模式: 启用
- JSX: react-jsx
- 路径别名: `@/*` → `./src/*`

### Tailwind CSS

使用 Tailwind CSS v4，采用 CSS-first 配置方式，通过 CSS Variables 实现主题定制。

### shadcn/ui 配置

- 风格: New York
- RSC 支持: 启用
- CSS 变量: 启用
- 前缀: 空
- RTL: 禁用
- 图标库: Lucide

## 构建输出

运行 `npm run build` 后：

- 静态文件输出到 `dist/` 目录
- 包含静态 HTML、CSS、JavaScript 文件
- 图片未优化（因为使用了 `unoptimized: true`）

可以直接部署到任何静态托管服务：

- Vercel
- Netlify
- GitHub Pages
- AWS S3 + CloudFront
- 阿里云 OSS
- 腾讯云 COS

## 命令速查

| 命令            | 描述                     |
| --------------- | ------------------------ |
| `npm run dev`   | 启动开发服务器           |
| `npm run build` | 构建生产版本（静态导出） |
| `npm run start` | 启动生产服务器           |
| `npm run lint`  | 运行 ESLint 检查         |

## 浏览器支持

- Chrome (最新 2 个版本)
- Firefox (最新 2 个版本)
- Safari (最新 2 个版本)
- Edge (最新 2 个版本)

## 学习资源

- [Next.js 文档](https://nextjs.org/docs)
- [React 文档](https://react.dev)
- [TypeScript 文档](https://www.typescriptlang.org/docs)
- [Tailwind CSS 文档](https://tailwindcss.com/docs)
- [shcn/ui 文档](https://ui.shadcn.com)
- [Framer Motion 文档](https://www.framer.com/motion)
- [Lucide 图标](https://lucide.dev)

## 许可证

本项目仅供学习和参考使用。
