# NextApp - 门户系统使用说明 基于 Next.js 15 + Prisma 6 + SQLite 构建的最小化门户网站。 ## 环境要求 - Node.js 18.x 或更高版本 - npm 或 yarn ## 快速开始 ### 1. 安装依赖 ```bash npm install ``` ### 2. 数据库初始化 项目使用 SQLite 数据库,数据存储在 `dev.db` 文件中。 ```bash # 生成 Prisma 客户端 npx prisma generate # 应用数据库迁移(创建表结构) npx prisma migrate dev # 种子数据(添加初始页面) curl http://localhost:3000/api/seed # 或在浏览器访问: http://localhost:3000/api/seed ``` ### 3. 启动开发服务器 ```bash npm run dev ``` 服务器启动后,访问 **http://localhost:3000** ### 4. 停止服务器 在运行服务器的终端按 `Ctrl + C`,或: ```bash # 查找进程 ps aux | grep "next" # 结束进程 kill -9 # 或 pkill -f "next-server" ``` ## 常用命令 | 命令 | 说明 | |------|------| | `npm run dev` | 启动开发服务器(支持热重载)| | `npm run build` | 构建生产版本 | | `npm run start` | 启动生产服务器 | | `npm run lint` | 代码检查 | ## 数据库操作 ### Prisma 命令 ```bash # 生成 Prisma 客户端 npx prisma generate # 创建新迁移 npx prisma migrate dev --name <迁移名称> # 重置数据库(清空所有数据) npx prisma migrate reset # 打开 Prisma Studio(数据库可视化工具) npx prisma studio ``` ### 数据库文件 - **位置**: `prisma/dev.db` - **类型**: SQLite - **工具**: 可使用 `npx prisma studio` 或 SQLite 客户端(如 DB Browser for SQLite)查看 ## 项目结构 ``` nextapp/ ├── app/ # Next.js App Router │ ├── api/ # API 路由 │ │ ├── pages/ # 页面相关 API │ │ │ ├── route.ts # GET/POST 所有页面 │ │ │ └── [slug]/ │ │ │ └── route.ts # GET 单个页面 │ │ └── seed/ │ │ └── route.ts # 种子数据接口 │ ├── components/ # React 组件 │ │ └── TestButton.tsx # 测试按钮组件 │ ├── lib/ │ │ └── prisma.ts # Prisma 客户端实例 │ ├── globals.css # 全局样式 │ ├── layout.tsx # 根布局 │ └── page.tsx # 首页 ├── prisma/ │ ├── schema.prisma # 数据模型定义 │ └── migrations/ # 数据库迁移文件 ├── dev.db # SQLite 数据库(运行时生成) ├── .env # 环境变量 ├── package.json └── tsconfig.json ``` ## API 端点 ### 页面相关 | 方法 | 端点 | 说明 | |------|------|------| | GET | `/api/pages` | 获取所有页面 | | POST | `/api/pages` | 创建新页面 | | GET | `/api/pages/[slug]` | 获取指定页面 | | GET | `/api/seed` | 初始化种子数据 | ### 示例 ```bash # 获取所有页面 curl http://localhost:3000/api/pages # 创建新页面 curl -X POST http://localhost:3000/api/pages \ -H "Content-Type: application/json" \ -d '{"slug":"contact","title":"联系我们","content":"

联系我们

联系方式...

"}' # 获取指定页面 curl http://localhost:3000/api/pages/home ``` ## 数据模型 ### Page(页面) ```prisma model Page { id Int @id @default(autoincrement()) slug String @unique # 页面标识(如:home, about) title String # 页面标题 content String # 页面内容(HTML) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } ``` ### Setting(设置) ```prisma model Setting { id Int @id @default(autoincrement()) key String @unique # 设置键名 value String # 设置值 createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } ``` ## 功能说明 ### 首页 - 访问 `/` 显示 slug 为 `home` 的页面内容 - 导航栏包含 Logo 和"测试按钮" - 点击"测试按钮"弹出 "hello" 提示 ### 测试按钮 - 位置:导航栏右侧 - 功能:点击弹出 alert 提示 "hello" - 实现:`app/components/TestButton.tsx`(客户端组件) ## 生产部署 ### 构建 ```bash npm run build ``` ### 启动生产服务器 ```bash npm run start ``` 生产服务器默认运行在 **http://localhost:3000** ## 注意事项 1. **数据库文件**:`dev.db` 包含数据库,不要手动编辑 2. **环境变量**:数据库 URL 配置在 `.env` 文件中 3. **Prisma 客户端**:修改 `schema.prisma` 后需运行 `npx prisma generate` 4. **迁移**:修改数据模型后需创建新的迁移:`npx prisma migrate dev --name <描述>` 5. **热重载**:开发模式下代码修改会自动刷新浏览器 ## 技术栈 - **框架**: Next.js 15 (App Router) - **ORM**: Prisma 6 - **数据库**: SQLite - **样式**: Tailwind CSS 4 - **语言**: TypeScript ## 故障排查 ### 数据库不同步 ```bash npx prisma migrate reset npx prisma migrate dev ``` ### Prisma 客户端未生成 ```bash npx prisma generate ``` ### 端口被占用 ```bash # 修改端口启动 npm run dev -- -p 3001 ``` ### 清除缓存重新构建 ```bash rm -rf .next node_modules/.cache npm run dev ``` ## 许可证 MIT