# HaoAWS官方网站
一个现代化的多语言企业云服务官网,基于 Next.js 14 构建,支持完全静态导出和多语言国际化。
## ✨ 项目特性
- 🌍 **多语言支持** - 简体中文、繁体中文、英文
- 📱 **响应式设计** - 完美适配桌面、平板、手机
- ⚡ **静态导出** - 支持完全静态化部署,加载速度极快
- 🔍 **SEO 优化** - 完整的 Meta 标签、结构化数据、多语言 sitemap
- 📰 **新闻系统** - 基于 Markdown 的内容管理系统
- 🎨 **现代 UI** - 使用 Tailwind CSS 和 ShadCN 组件
- 🚀 **性能优化** - 代码分割、图片优化、预加载
- 📦 **部署友好** - 支持 Netlify、Vercel、GitHub Pages 等平台
## 🛠️ 技术栈
- **前端框架**: [Next.js 14](https://nextjs.org/) (App Router)
- **样式**: [Tailwind CSS](https://tailwindcss.com/)
- **组件**: [ShadCN/UI](https://ui.shadcn.com/)
- **国际化**: 自定义 i18n 解决方案
- **内容管理**: Markdown + Gray Matter
- **类型安全**: TypeScript
- **代码规范**: ESLint + Prettier
## 📁 项目结构
```
kejiyun/
├── app/ # Next.js App Router
│ ├── [locale]/ # 多语言路由
│ │ ├── about/ # 关于我们页面
│ │ ├── news/ # 新闻列表和详情
│ │ ├── products/ # 产品页面
│ │ ├── support/ # 支持页面
│ │ └── layout.tsx # 多语言布局
│ ├── news/[id]/ # 默认语言新闻详情
│ ├── globals.css # 全局样式
│ └── layout.tsx # 根布局
├── components/ # 可复用组件
│ ├── about/ # 关于页面组件
│ ├── LanguageSwitcher.tsx # 语言切换器
│ ├── Layout.tsx # 布局组件
│ └── SEOPreview.tsx # SEO 预览
├── data/ # 数据文件
│ └── locales/ # 多语言翻译文件
│ ├── en/ # 英文翻译
│ ├── zh-CN/ # 简体中文翻译
│ └── zh-TW/ # 繁体中文翻译
├── docs/ # 文档和新闻内容
│ └── news/ # 新闻 Markdown 文件
├── lib/ # 工具函数
│ ├── i18n.ts # 国际化配置
│ ├── markdown.ts # Markdown 解析
│ └── seo.ts # SEO 工具
├── public/ # 静态资源
└── middleware.ts # 路由中间件
```
## 🚀 快速开始
### 安装依赖
```bash
npm install
# 或
yarn install
```
### 开发模式
```bash
npm run dev
```
打开 [http://localhost:3000](http://localhost:3000) 查看网站。
### 构建生产版本
```bash
# 普通构建
npm run build
# 静态导出构建
npm run build:static
```
### 本地预览静态版本
```bash
npm run serve
# 或
npm run preview
```
## 🌍 多语言支持
### 支持的语言
- **简体中文** (`zh-CN`) - 默认语言,路径: `/`
- **繁体中文** (`zh-TW`) - 路径: `/zh-TW/`
- **英文** (`en`) - 路径: `/en/`
### 路由示例
```
/ # 简体中文首页
/about/ # 简体中文关于页面
/news/article-id/ # 简体中文新闻详情
/zh-TW/ # 繁体中文首页
/zh-TW/about/ # 繁体中文关于页面
/zh-TW/news/article-id/ # 繁体中文新闻详情
/en/ # 英文首页
/en/about/ # 英文关于页面
/en/news/article-id/ # 英文新闻详情
```
### 添加新语言
1. 在 `lib/i18n.ts` 中添加语言配置
2. 在 `data/locales/` 中创建对应的翻译文件
3. 在 `docs/news/` 中添加对应语言的新闻文件
4. 更新各页面的 `generateStaticParams` 函数
## 📰 新闻系统
### 新闻文件结构
```markdown
---
title: "文章标题"
description: "文章描述"
date: "2024-01-01"
author: "作者"
tags: ["标签1", "标签2"]
---
# 文章内容
这里是 Markdown 格式的文章内容...
```
### 添加新新闻
1. 在 `docs/news/[语言]/` 目录下创建新的 `.md` 文件
2. 更新 `app/[locale]/news/[id]/page.tsx` 中的 `generateStaticParams` 函数
3. 重新构建网站
## 🔍 SEO 优化
### 已实现的 SEO 功能
- ✅ 多语言 Meta 标签
- ✅ Open Graph 标签
- ✅ Twitter Card 支持
- ✅ 结构化数据 (JSON-LD)
- ✅ 自动生成 sitemap.xml
- ✅ robots.txt 配置
- ✅ 语言链接标签 (hreflang)
### SEO 配置
在 `lib/seo.ts` 中配置默认的 SEO 设置,每个页面可以覆盖这些设置。
## 📦 部署
### 静态部署(推荐)
#### Netlify
```bash
# 构建命令
npm run build:static
# 发布目录
out
```
#### Vercel
```bash
npm install -g vercel
vercel --prod
```
#### GitHub Pages
```bash
npm run build:static
# 将 out/ 目录内容推送到 gh-pages 分支
```
### 服务器部署
```bash
npm run build
npm start
```
## 🎨 自定义和扩展
### 添加新页面
1. 在 `app/[locale]/` 目录下创建新页面
2. 添加对应的翻译文件
3. 更新导航菜单
4. 添加 `generateStaticParams` 函数(如果需要静态导出)
### 修改样式
项目使用 Tailwind CSS,可以在以下文件中修改样式:
- `app/globals.css` - 全局样式
- `tailwind.config.ts` - Tailwind 配置
- 各组件文件中的 className
### 添加新组件
在 `components/` 目录下创建新组件,遵循现有的命名和结构规范。
## 🔧 开发指南
### 代码规范
```bash
# 代码格式化
npm run format
# 代码检查
npm run lint
```
### Windows 开发
如果在 Windows 上遇到权限问题,请参考 [WINDOWS_BUILD_GUIDE.md](./WINDOWS_BUILD_GUIDE.md)。
## 📋 可用脚本
```bash
npm run dev # 开发模式
npm run build # 生产构建
npm run build:static # 静态导出构建
npm run build:simple # 简化构建(解决权限问题)
npm run start # 启动生产服务器
npm run lint # 代码检查
npm run format # 代码格式化
npm run serve # 本地预览静态文件
npm run preview # 构建并预览
```
## 🐛 故障排除
### 常见问题
1. **构建权限错误** - 参考 [WINDOWS_BUILD_GUIDE.md](./WINDOWS_BUILD_GUIDE.md)
2. **语言切换不工作** - 检查 Cookie 设置和客户端 JavaScript
3. **静态导出失败** - 确保所有动态路由都有 `generateStaticParams`
### 获取帮助
- 查看 [静态部署指南](./STATIC_DEPLOYMENT.md)
- 查看 [Windows 构建指南](./WINDOWS_BUILD_GUIDE.md)
- 检查 Next.js 官方文档
## 📄 许可证
本项目采用 MIT 许可证。
---
**提示**: 这是一个完全静态化的网站,构建后可以部署到任何静态文件托管服务,无需 Node.js 服务器环境。