基于 Nuxt 3 全栈开发的文章管理系统,使用 Nuxt UI 组件库,数据持久化存储在本地 JSON 文件。
# 安装依赖
pnpm install
# 开发模式启动
pnpm dev
# 构建生产版本
pnpm build
# 预览生产版本
pnpm preview访问地址:http://localhost:3000
NuNote/
├── app/ # 前端应用代码
│ ├── assets/css/ # 全局样式文件
│ ├── layouts/ # 布局组件
│ │ └── default.vue # 默认布局(导航栏)
│ ├── pages/ # 页面路由
│ │ ├── index.vue # 文章列表页
│ │ ├── figma.vue # Figma 演示页面
│ │ └── articles/
│ │ ├── new.vue # 新建文章页
│ │ └── [id]/
│ │ ├── index.vue # 文章详情页
│ │ └── edit.vue # 编辑文章页
│ └── app.vue # 应用入口
├── server/ # 后端 API
│ ├── api/articles/ # 文章 REST API
│ │ ├── index.get.ts # GET 获取文章列表
│ │ ├── index.post.ts # POST 创建文章
│ │ └── [id].{get,put,delete}.ts # 单篇文章操作
│ └── utils/storage.ts # JSON 数据存储工具
├── data/articles.json # 数据文件(持久化存储)
├── nuxt.config.ts # Nuxt 配置
└── package.json
- 使用 Node.js
fs/promises读写本地 JSON 文件 - 数据文件位于
data/articles.json - 支持增删改查操作,数据持久化不丢失
- 文章 ID 使用
Date.now()生成时间戳
- 基于文件系统的 API 路由:
server/api/ - RESTful 设计:
GET /api/articles- 获取列表(按时间倒序)GET /api/articles/:id- 获取单篇文章POST /api/articles- 创建文章(验证标题/内容必填)PUT /api/articles/:id- 更新文章DELETE /api/articles/:id- 删除文章
- 使用 Nuxt UI 组件库(UButton, UInput, UTextarea, UCard 等)
- 统一浅色主题(slate 配色方案)
- 响应式布局,支持移动端
- 页面路由:
/- 文章列表(悬停显示编辑/删除按钮)/articles/new- 新建文章表单/articles/:id- 文章详情/articles/:id/edit- 编辑文章/figma- Figma 首页模拟(全屏演示)
- 路由设计:使用
[id]/index.vue避免与[id]/edit.vue冲突 - 样式统一:强制浅色主题,禁用 Google 字体
- 交互优化:文章列表整行可点击,操作按钮悬停显示
- 数据验证:后端 API 校验必填字段,前端友好提示
- 框架:Nuxt 3 + Vue 3
- UI 库:Nuxt UI + Tailwind CSS
- 后端:Nitro Server(Nuxt 内置)
- 存储:本地 JSON 文件
- 包管理器:pnpm