一、需求分析(需求分析很重要)
需求:描述项目最终效果的文字和图;
产品经理写需求,然后要经过各个项目角色的评审通过;
需求一般包括:原型图,功能描述
原型图:
功能描述:
功能描述——注册和登录:
用户名唯一,不能重复注册;
用户名和密码匹配,即可登录;
登录成功后,跳转到首页
功能描述——首页:
非登录用户不能进入首页,登录用户可发布留言;
可查看全部留言,或可查看自己的留言;
只能编辑和删除自己的留言,无权操作他人留言
二、数据库设计
mongodb创建数据库和集合(分析需要创建的数据库和集合):
创建数据库comment;
创建集合comments,存储留言数据;
创建集合users,存储用户
回顾mongoose:
mongoose定义Schema和Model:
三、接口(路由)设计
分析需要哪些接口:
注册、登录、获取留言列表、创建留言、更新留言、删除留言
哪些接口需要登录校验:
登录和注册不需要登校验,其他接口都需要登录校验
登录如何实现(跨域传递cookie):
使用cookie和session实现登录,但cookie跨域不共享;
前后端分离的开发方式,需要设置跨域传cookie
四、初始化环境开发
初始化koa2环境:
1)开发环境——初始koa2项目环境
安装 koa generator 脚手架:
使用脚手架创建koa 2项目,项目名为 test6:
打开该项目文件的控制台,运行npm install安装:
在根目录下创建src目录,将routes、views、app.js移到src文件下;
2)开发环境——规范目录和层级:
为何要分层:拆分模块,职责明确清晰;易于扩展
3)开发环境——连接数据库:
使用npm安装mongoose:
连接数据库的代码:
// 使用mongoose——连接数据库
// 在src的db目录下创建db.js文件
// 引用mongoose
const mongoose = require('mongoose')
// 定义数据库的地址
const url = 'mongodb://localhost:27017'
// 定义数据库的名字
const dbName = 'comment3'
// mongoose的配置
// 如果版本比较高,如6.x版本,则可以省略这些配置
// mongoose.set('useCreateIndex', true)
// mongoose.set('useFindAndModify', true)
// 开始连接
mongoose.connect(`${url}/${dbName}`,{
useNewUrlParser:true,
useUnifiedTopology: true,
})
// 获取连接对象
const conn = mongoose.connection
// 监听错误
conn.on('error', err => {
console.error('mongodb 连接出错', err)
})
// 导出mongoose
module.exports = mongoose
定义User Model
// User Model
const mongoose = require('../db/db')
// 定义User Schema(规则)
const UserSchema = mongoose.Schema({
username: {
type: String,
required: true,//必须填写
unique: true //不能重复
},
password: String,
age: Number,
city: String,
gender: {
type: Number,
default: 0 //0是保密,1是男, 2是女
}
},{
timestamps: true //时间戳
})
// 定义User Model
const User = mongoose.model('user', UserSchema)
// 导出User Model
module.exports = user
定义Comment Model
// Comment Model
const { model } = require('mongoose')
const mongoose = require('../db/db')
// 定义Comment Schema
const CommentSchema = mongoose.Schema({
content:{
type: String,
required: true, //必需
},
username: String
})
// 定义Comment Model
const Comment = mongoose.model('comment',CommentSchema)
// 导出
module.exports = Comment
五、项目开发
前端代码介绍:(由于本次项目主要练习后端,前端代码将带过)
comment-fe是项目的前端代码,打开项目后要先使用npm i 去安装相应的依赖:
跨域和跨域传递cookie:
前端允许跨域带 cookie需在ajax.js中设置:
服务端支持跨域在app.js中:
在onerror后面写如需跨域中间件:
接口开发和前后端联调:略