项目名称:简易全栈博客系统
技术栈:
前端:Next.js (React)、Tailwind CSS (样式)
后端:Node.js + Express
数据库:MongoDB (或替代为 SQLite 等)
认证:JWT (JSON Web Tokens)
部署:Vercel (或 Heroku、Docker 等)
项目目标:
1. 独立搭建前后端分离架构
2. 实现用户注册、登录、权限控制
3. 支持文章增删改查 (CRUD) 操作
4. 数据库持久化存储数据
5. 部署至线上环境
项目结构:
my-blog-system/
├── frontend/ # Next.js 前端项目
│ ├── pages/ # Next.js 路由页面
│ ├── components/ # 可复用组件
│ ├── styles/ # Tailwind CSS 样式
│ └── ... # 其他配置
└── backend/ # Node.js + Express 后端项目
├── routes/ # API 路由 (用户、文章等)
├── models/ # 数据库模型 (Mongoose)
├── middlewares/ # 中间件 (认证、错误处理)
├── config/ # 数据库配置、JWT密钥等
└── app.js # 入口文件
分步骤实现指南:
一、环境准备
1. 安装 Node.js (v18+)
2. 安装 MongoDB 并启动服务(或创建本地数据库)
3. 克隆项目仓库(或手动创建上述目录结构)
二、后端开发(Node.js + Express)
1. 进入backend/目录,初始化项目:npm init -y
2. 安装依赖:npm install express mongoose cors dotenv bcryptjs jsonwebtoken
3. 配置数据库连接:
在backend/config/db.js中填入 MongoDB 连接串(如mongodb://localhost:27017/blog)
使用mongoose连接数据库
4. 设计用户模型:
在backend/models/User.js定义用户Schema(含用户名、密码哈希、JWT生成方法)
5. 实现用户认证路由:
注册:POST /api/users/register(验证输入,加密密码后存库)
登录:POST /api/users/login(验证凭据,返回 JWT)
保护路由中间件:useAuth.js(使用jsonwebtoken验证AuthorizationHeader)
6. 实现文章路由(CRUD):○
创建文章:POST /api/posts(需要认证)
获取文章列表:GET /api/posts(分页)
获取单篇文章:GET /api/posts/:id
更新/删除文章:PUT /DELETE /api/posts/:id(仅作者可操作)
7. 启动后端服务:node app.js(监听端口 5000)
三、前端开发(Next.js)
1. 进入frontend/目录,创建 Next.js 项目:npx create-next-app --ts
2. 安装 Tailwind CSS:npm install -D tailwindcss postcss autoprefixer
3. 配置 Tailwind 并创建基本布局(如 Header、Footer、Auth 弹窗)
4. 实现用户认证页面:
注册页:/register(表单 + 提交到后端 API)
登录页:/login(处理 JWT 存储至本地)
使用useContext+useState管理用户状态
5. 实现文章管理功能:
列表页:/posts(获取后端数据,分页展示)
创建页:/posts/new(表单 + 富文本编辑器如react-quill)
详情页:/posts/[id](动态路由,显示单篇文章)
编辑/删除:在详情页添加操作按钮(需验证用户权限)
6. 使用axios或fetch调用后端 API,处理请求/响应
7. 部署前配置环境变量(如NEXT_PUBLIC_API_URL=http://localhost:5000)
四、集成与测试
1. 启动后端:cd backend && npm start
2. 启动前端:cd frontend && npm run dev
3. 测试流程:
注册新用户 → 登录 → 创建文章 → 查看/编辑/删除文章
注销后无法访问保护路由(需重定向至登录页)
4. 使用 Postman 测试后端 API 是否正常工作
五、部署到生产环境
1. 后端部署(可选):
使用 Heroku:创建应用,配置Procfile(web: node app.js),部署代码
或使用 Docker 容器化部署
2. 前端部署(Vercel):
在 Vercel 导入frontend项目
配置环境变量(如API_URL指向后端部署地址)
3. 配置反向代理(若前后端分离部署),解决跨域问题
六、扩展与优化方向
1.性能优化:
后端添加缓存层(如 Redis)
前端使用 Next.js 的 ISR(增量静态再生)优化 SEO
2.用户体验:
添加实时编辑(如使用WebSocket同步文章更新)
集成 Markdown 编辑器替代富文本
3.安全增强:
实现密码强度校验、用户激活邮件
添加 Rate Limit 防止暴力破解
学习建议:
1. 先专注实现核心功能(用户认证、文章CRUD),再逐步扩展高级特性
2. 阅读官方文档:Next.js、Express、Mongoose、JWT
3. 调试技巧:使用 Postman 测试 API,前端控制台查看网络请求
4. 参考开源项目:如https://github.com/vercel/next.js/tree/canary/examples中的全栈示例
资源推荐:
Next.js 全栈教程:https://nextjs.org/learn/basics/data-fetching
Mongoose 文档:https://mongoosejs.com/docs/guide.html
JWT 认证实战:https://www.digitalocean.com/community/tutorials/nodejs-authorization-jwt
注意事项:
数据库操作需处理错误(如用户已存在、文章不存在)
生产环境务必隐藏密钥(使用环境变量,不提交到 Git)
部署后测试所有权限控制是否生效
开始实践: 按照以上步骤,从零搭建项目,理解每个模块的作用和通信流程。重点学习前后端如何协作(API 设计、数据验证、状态管理)以及全栈思维(从数据库到用户界面)。完成项目后,你将具备独立交付全栈应用的能力,为简历增添实战经验!