项目介绍:Koa2+Nodejs+MongoDb实现CMS前后端全栈项目
涉及: Koa封装DB库、 用户权限判断 、验证码 、分页、多级分类、ueditor可视化富文本编辑器、图片上传、底层DB库封装、扩展art-template的核心方法、ajax改变状态、ajax排序、、前后端分离 RESTful API Api接口、JWT接口权限验证
项目源码:https://gitee.com/lwtupup/CMS (持续更新中。。。)
程海灿烂,愿你归来仍是是少年
学习无它法,唯有持之以恒
前端技术学习交流群:686160287
设计数据库ER图:
首先保证页面的走通
-
搭建koa服务器
-
配置路由和子路由实现对应页面的展示
-
art-template模板引擎进行后台渲染页面
-
利用 koa-router 包进行配置 router.use()
-
一层套一层设计子路由的路由文件
-
-
css js image 等静态资源的搭建
-
利用 koa-static 包进行管理,配置存放静态资源文件。
-
在admin.js文件中的路由中间件中设置一个模板引擎host全局的变量,方便访问这个根地址下的所有资源。
-
ctx.state.__HOST__ = "http://" + ctx.request.header.host;
http://localhost:3000
- 把 .html 文件的公共部分都抽取出来单独设置成html文件,便于维护和修改。
- 通过art-template的子模版语法 { { inlcude ’ 路径 ’ }}
登陆页面功能实现
- 权限验证
- 没有登陆成功不能够访问相关的后台管理页面,登陆成功后在同一个浏览器中打开下次就不需要登陆了
- 在登陆的时候如果登陆成功则将改用户设置成 session 值。
- 在 admin.js 路由文件下设置一个路由中间件,所有的 admin 相关的路由都要经过这里,判断是否携带 session 值,没有 session 值则重定向回登陆页面,有 session 值则进行后面的路由匹配。逻辑代码如下:
/* 配置路由中间件--获取url地址--配合静态资源的访问 */
router.use(async (ctx, next) => {
//模板引擎配置全局的变量
ctx.state.__HOST__ = "http://" + ctx.request.header.host;
let pathname = url.parse(ctx.request.url).pathname;
//权限设置
if(ctx.session.userInfo){
await next();
}else{
//没有登陆跳转到登陆
if(pathname == '/admin/login' || pathname == '/admin/login/doLogin' || pathname == '/admin/login/code'){
await next();
}else{
ctx.redirect('/admin/login');
}
}
});
- 验证码的验证
- 生成验证码用到的模块:https://www.npmjs.com/package/svg-captcha
- 模块基本用法:
/* 验证码请求 */
router.get('/code', async (ctx) => {
const captcha = svgCaptcha.create({
size: 4,
fontSize: 50,
width: 100,
height: 40,
background: "#cc9966"
})
//校验验证码时先把验证码的数字存储到session中
ctx.session.