以毕业项目:青年旅社移动端 的登录注册为例,记录 Vue+Koa2+MySQL 全栈开发过程
相关目录介绍
1 | Youth-Hostel |
log4js 配置
首先要注入日志管理工具,这里选择了 log4js ,可以分类别、按日期地记录各日志,方便调试、debugger
数据库配置
db/config/default.ts
中进行数据库配置
1 | module.exports = { // mysql 配置 |
Koa2 配置
db/index.ts
中编写入口文件,完成服务器连接和日志服务
1 | const globalAny: any = global; |
编写 SQL 拼接模板
db/lib/dbtools.ts
编写 SQL 拼接模板,之后在每个子文件中调用模板进行拼接,可以大大提高 sql 语句的编写效率,如db/lib/mysql.ts
1 | const globalAny: any = global; |
分析登录 注册逻辑
- 注册 -> 判断是否用户名存在->(否)sql 注册
- 登录 -> 判断账号是否存在 -> (是)校验密码 -> 成功 -> 返回Toke
后端编写
注册
编写路由
db/router/signUp.ts
1 | const globalAny: any = global; |
编写 SQL 语句
db/lib/mysql.ts
1 | const insetUser = (val) => { // 注册 |
解析 token
db/token/checkToken.ts
1 | const jwt = require('jsonwebtoken'); |
登录
编写路由
db/router/signIn.ts
1 | const globalAny: any = global; |
编写 SQL 语句
db/lib/mysql.ts
1 | const findUser = (val) => { // 查找所有User |
生成 token
db/token/createToken.ts
1 | const jwt = require('jsonwebtoken'); |
前端编写
编写拦截器
client/src/services/lib/http.ts
,对 axios 设置 request 拦截器和 response 拦截器
1 | import axios from 'axios' |
编写 API 接口
client/src/services/loginAPI.ts
1 | import http from './lib/http' |
修改前端路由
可以通过配置前端路由进行登录权限的约束:每次路由跳转前判断是否需要登录权限,如果需要登录权限,再判断浏览器是否存在 token,如果没有则跳转到登录页面,如client/src/router/index.ts
1 | import Vue from "vue"; |
注册
1 | async signUp(): Promise<any> { |
登录
1 | async signIn(): Promise<any> { |