目录
一、注册
面试题:
你的xx项目中的注册的流程讲一讲:
注册的前端
1.前端表单验证-减轻服务器的负载-DOM操作写特效
1.1 邮箱验证:绑定change事件 判断value是否符合邮箱正则
1.2 密码验证:密码要符合格式(自己定制的比如大小写特殊符号),两次密码要一致
1.3 昵称验证:昵称要符合格式(自己定制的比如大小写特殊符号)
1.4 身份证的验证:(分前端和后端的验证)图片的格式和大小清晰度-预览
2.点击提交按钮时 获取用户交互的信息
3.把数据POST发送给后端
4.等后端返回数据
如果返回的数据包的业务码是xxx 就操作页面xxx
如果返回的数据包的业务码是正确 就跳转到登录页面或者直接帮用户登录
二、登录
面试题:
你的xx项目中的登录的流程讲一讲:
登录的前端
1.前端表单验证-减轻服务器的负载-DOM操作写特效
1.1 邮箱验证:绑定change事件 判断value是否符合邮箱正则
1.2 密码验证:密码要符合格式(自己定制的比如大小写特殊符号),两次密码要一致
2.POST暗文把密码发送给后端--还有一种技术:JWT
3.等后端返回数据
如果返回的数据包的业务码是xxx 就操作页面xxx
如果返回的数据包的业务码是正确 就跳转到首页页面或者其他页面
4.验证码:
前端页面渲染就请求验证码==>后端生成验证码然后设置到缓存 在把验证码发送前端
前端获取用户输入的验证码发送给后端==>取出缓存和接受到的 对比
三、数据库egg-mysql
可以在官网搜:egg - 为企业级框架和应用而生 - Egg
搜egg-mysql
框架提供了 egg-mysql 插件来访问 MySQL 数据库。 安装与配置
1.下载==>小黑窗输入指令
npm i --save egg-mysql 或者 npm i egg-mysql
2.开启插件
// config/plugin.jsmodule.exports = { mysql: { enable: true, package: "egg-mysql" } };
3.配置数据库
config/config.default.jsconfig.mysql={ client:{ host:"localhost", //host 这里填‘localhost’ 或者“192.0.0.1” port:"3306", //端口 user:"root", //用户名 password:"root", //密码 database:"h2112" //数据库名 } }
4.使用方式:
async getuserinfo(){ var data1 = await this.app.mysql.query("select *from studentinfo") this.ctx.body=data1 }
四、svg验证码
也可以在官网看手册如何使用:
实现验证码使用svg-captcha第三方模块
1.下载 cnpm i --save svg-captcha 也可以写: npm i svg-captcha
2.导入生成验证码
//Service文件:或者 controller下的user.js中 'use strict'; const Service = require('egg').Service; const svgCaptcha = require('svg-captcha'); //核心==>引入 class ToolsService extends Service { // 产生验证码 async captcha() { const captcha = svgCaptcha.create({ //核心==>设置验证码的样式 size: 4, //随机字符串的个数 fontSize: 50, width: 100, height: 40, background: '#cc9966' }); this.ctx.session.code = captcha.text;//缓存验证码中的文字 return captcha;//返回验证码 } } module.exports = ToolsService; //控制器文件: async coder() { const {ctx} = this; let captcha = await this.service.tools.captcha(); // Service里面的方法 ctx.body = captcha.data; // 返回一张svg图片 }
五、服务层Service
在 Controller 中可以调用任何一个 Service 上的任何方法,同时 Service 是懒加载的,只有当访问到它的时候框架才会去实例化它。
调用 service 进行业务处理
const res = await this.ctx.service.user.setinfo(req); //setinfo是一个工具函数
六、注意点:
1、
let email="123@qq.com"
let sql=`insert****,"${email}"` //这一行的email不包括双引号,仅仅取到了123@qq.com,所以这里要加引号
2、
let re=await this.app.mysql.query(sql) //把我自己写的sql语句插入到数据库,re是一个对象