# myweb_bigevent_server
**Repository Path**: yang-yu1997/myweb_bigevent_server
## Basic Information
- **Project Name**: myweb_bigevent_server
- **Description**: 本项目地址为基于 Node.js,Express 框架搭建的小型服务器,匹配 myweb_bigevent 大事件后台管理系统项
- **Primary Language**: NodeJS
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2021-08-18
- **Last Updated**: 2024-04-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 大事件后台管理项目(后端)
    
### 基本介绍
**前后端分离的后台管理项目**,用户可以登录注册后,进入管理系统,管理文章分类,编辑更新文章,并可设置昵称,设置个人头像(可裁剪),设置密码等功能
- 本项目地址为基于 Node.js,Express 框架搭建的小型服务器,匹配 myweb_bigevent 大事件后台管理系统项目
**仓库地址**
- 前端:https://gitee.com/yang-yu1997/myweb_bigevent
- 后端:https://gitee.com/yang-yu1997/myweb_bigevent_server
**技术栈**:
- **前端** Layui + jQuery + Echarts
- **后端** Node.js + Express 框架 + 数据库 MySQL
### 前端
- MPA 应用
- 基于 jQuery 实现页面主要业务逻辑功能,操作 DOM,实现文章增删改查,个人中心编辑,发送 Ajax 请求等
- 模板引擎实现数据的动态渲染
- Less 编写样式,使用 Layui 快速搭建基本页面 UI,使用表单,按钮,layer 弹出层提示框等
- rem 适配,Echarts 绘制后台系统首页
**主要功能展示**
1. 首页

2. 文章管理-文章类别

3. 文章管理-文章列表

4. 文章管理-文章发布

5. 个人中心-基本资料修改

6. 个人中心-修改密码

7. 登录页面

### 后端
- 基于 Express 框架
- Node.js 操作 MySQL(本地) 实现用户的登录注册功能
- 配置 HTTP2,配置 JWT 跨域认证,CORS 跨域,加密密码,表单数据合法性验证
- 声明中间件,如错误级别中间件捕获全局错误信息
- 实现文章增删改查功能,实现用户数据增删改查功能
- 模块化架构
### 目录结构描述
(本项目——后端部分)
1. app.js 是入口文件,使用 `node app.js` 运行
2. router 文件夹,用来存放所有的路由模块,只存放客户端的请求与处理函数之间的映射关系
3. router_handler 文件夹,用来存放所有的路由处理函数模块,专门负责存放每个路由对应的处理函数
4. schema 文件夹,用来存放验证规则
5. db 文件夹下,导入数据库对象
```
├── app.js -- 入口文件
├── config.js -- 全局配置文件(token)
├── package-lock.json -- 包管理lock
├── certs -- ssl证书
│ └──art_cate.html -- 证书
│ └──ca.csr -- 证书请求文件
│ └──ca.key -- 证书私钥
│ └──openssl.cnf -- openssl 配置文件
├── db
│ └──index.js -- 导入数据库模块
├── router -- 路由,存放客户端的请求与处理函数之间的映射关系
│ └──artcate.js -- 文章分类路由
│ └──article.js -- 文章信息增删查改路由
│ └──user.js -- 用户注册登录路由
│ └──userinfo.js -- 个人中心路由
├── router_handler -- 路由处理模块,存放每个路由对应的处理函数,结构同router
├── schema -- 校验规则
│ └──artcate.js -- 文章分类校验
│ └──article.js -- 文章信息增删查改校验
│ └──user.js -- 用户注册登录校验
├── uploads -- 托管文章封面-静态资源
│ └──index.js -- 导入数据库模块
├── node_modules -- 依赖
```
### 项目运行
#### 依赖及插件
- 前端: jQuery, Layui, Echarts, cropper(裁剪图片), tinymce(富文本编辑器), art-template(数据渲染模板引擎)
- 后端:MySQL, Node.js, Express, cors 跨域中间件, jsonwebtoken + express-jwt 解析 token, bcryptjs 加密密码,hapi/joi + escook/express-joi 中间件定义验证规则
#### 使用说明
1. 前端项目:`git clone git@gitee.com:yang-yu1997/myweb_bigevent.git`
2. 后端项目:`git clone git@gitee.com:yang-yu1997/myweb_bigevent_server.git`
3. 导入并连接本地 MySQL 模块——示例
```js
// 1. 导入 mysql 数据库模块 首先要npm i mysql
const mysql = require("mysql");
const { resourceLimits } = require("worker_threads");
// 2. 建立与 mysql 数据库连接 指定配置对象
const db = mysql.createPool({
host: "127.0.0.1", // 数据库的IP地址 这里是本机地址
user: "root", // 数据库的账号
password: "admin123", // 数据库用户的密码
database: "my_db_01", // 指定要操作的数据库
});
```
4. 后端项目:`npm install`
5. 启动后端项目:`node app.js`
6. 前端项目:live-server 启动 login.html
### 版本更新
- 2022.08.05 更新支持 HTTP2
#### 参与贡献
1. Fork 本仓库
2. 新建分支
3. git commit 提交代码
4. 新建 Pull Request