Skip to content

全栈日记项目教程

txt
内容包括:   
后台管理系统+后台API   
前端网站+前端API

教程文档更新中...

开发流程

1.需求分析和规划
2.技术选型
3.项目架构设计
4.前端开发
5.数据模型设计与开发
6.后端开发
7.部署和发布

1.需求分析和规划

编写一个后端管理系统和前端网站。

后台管理系统功能包括:

txt
系统登录、系统登出;   
博客管理:包括博客的新增、修改、删除、列表展示、分页、搜索、编辑博客、发布、撤销、恢复等功能;    
专题管理:专题是对一些列文章的管理。功能包括:新增、修改、删除、展示、分页、搜索、发布、撤销等功能;   
标签管理:标签是给单个文章做分类的。功能包括:新增、删除、搜索等功能;

前端网站功能包括:

txt
专题展示;
文章列表;
文章搜索;
标签选择;

至此一个简单的系统分析就做完了。

2.技术选型

整体项目分为:后台管理系统+前端网站
后台管理系统的主要技术:Vite、Vue3、Vue-router、element-plus、wangeditor富文本插件、Axios、Express、Mysql等技术
前端网站的主要技术:Vite、Vue3、Vue-router、Bootstrap、Axios、Koa等技术

3.项目架构设计

管理系统页面和前端网站页面选用Vite搭建;
管理系统后端接口选用Express+Mysql;
前端网站后端接口选用Koa+Mysql;

4.前端开发

后台管理系统

1.创建项目

javascript
npm create vite@4.2.0 project-name

2.项目结构

javascript
project-root/
  ├── src/
  |    ├── assets/ #静态资源 比如网站图标
  |    ├── auth/
  |    |    └── auth.js  # 前端登录验证
  |    ├── components/ # 组件
  |    ├── plugins/ # 插件
  |    |    └── fetch/      
  |    |          └── axios.js      # axios配置
  |    ├── router/ #路由配置
  |    ├── utils/ #工具库
  |    ├── views/ #页面
  |    └── App.vue # 主应用页面
  |    └── main.js                  # 主应用文件
  ├── node_modules/
  ├── package.json
  └── ...

3.配置路由
安装vue-router插件

javascript
npm install vue-router@4

在router目录下创建一个children子目录放置子路由
在router目录下创建index.js作为主路由

4.Axios配置
主要配制:
请求transformRequest:对请求的data任意转换。
请求拦截器:在发送请求之前做些什么。比如:添加token。
响应拦截器:对响应数据做点什么。比如:根据接口返回code判断未登录的情况,执行后续行为。

5.其它项目配置
配置全局Axios

js
import plugins from './plugins/fetch/index.js';
app.config.globalProperties.$fetch = plugins

添加element-plus组件

js
import 'element-plus/dist/index.css'
import ElementPlus from 'element-plus'
app.use(ElementPlus)

5.数据模型设计与开发

数据库设计选用MySQL8。

数据表设计:
文章表

sql
CREATE TABLE `article` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '文章ID',
  `title` varchar(255) NOT NULL COMMENT '文章标题',
  `summary` varchar(255) NOT NULL COMMENT '文章摘要',
  `label_id` varchar(255) DEFAULT NULL COMMENT '标签ID',
  `cover` varchar(255) DEFAULT '' COMMENT '文章封面',
  `content` longtext COMMENT '文章内容',
  `likenum` int(10) unsigned DEFAULT '0' COMMENT '点赞量',
  `status` int(10) unsigned DEFAULT '0' COMMENT '文章状态 0未上线1已上线2已删除',
  `visitnum` int(10) unsigned DEFAULT '0' COMMENT '浏览量',
  `category_id` int(10) unsigned DEFAULT '0' COMMENT '文章分类ID',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  `level` int(10) unsigned DEFAULT '0' COMMENT '文章等级',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=384 DEFAULT CHARSET=utf8mb4 COMMENT='博客文章表';

专题表

sql
  CREATE TABLE `categories` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(255) NOT NULL COMMENT '名称',
  `status` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '状态',
  `cover` varchar(255) NOT NULL COMMENT '封面',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  `level` int(10) unsigned DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COMMENT='博客类型表';

标签表

sql
  CREATE TABLE `labels` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '标签ID',
  `name` varchar(255) NOT NULL COMMENT '标签名称',
  `status` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '标签状态',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=utf8mb4 COMMENT='博客标签表';

用户表

sql
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `username` varchar(50) NOT NULL COMMENT '用户名',
  `password` varchar(255) NOT NULL COMMENT '密码',
  `email` varchar(50) DEFAULT NULL COMMENT '电子邮箱',
  `mobile` varchar(20) DEFAULT NULL COMMENT '手机号码',
  `nickname` varchar(50) DEFAULT NULL COMMENT '昵称',
  `avatar` varchar(255) DEFAULT NULL COMMENT '头像',
  `gender` tinyint(4) DEFAULT NULL COMMENT '性别(0:未知,1:男,2:女)',
  `birthday` date DEFAULT NULL COMMENT '出生日期',
  `country` varchar(50) DEFAULT NULL COMMENT '国家',
  `province` varchar(50) DEFAULT NULL COMMENT '省份',
  `city` varchar(50) DEFAULT NULL COMMENT '城市',
  `district` varchar(50) DEFAULT NULL COMMENT '区县',
  `address` varchar(255) DEFAULT NULL COMMENT '详细地址',
  `zip` varchar(10) DEFAULT NULL COMMENT '邮政编码',
  `status` tinyint(4) DEFAULT '0' COMMENT '状态(0:正常,1:锁定,2:禁用)',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `username_UNIQUE` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

6.后端开发

管理系统的后端用的是Express框架。
创建一个项目:

js
npm install -g express-generator
express my-express-app