后端源码:https://github.com/dumplingbao/dissplat
前端源码:https://github.com/dumplingbao/dissplat_web
概述
iview:一套基于 Vue.js 的高质量UI 组件库,主流vue前端框架,比较适合前后端分离框架的搭建,当然你也可以选择其他的
koa2:基于nodejs平台的下一代web开发框架,这里我们不选早期的目前用的最多的Express,也不选阿里开源的框架egg,我们选择则目前比较新的koa2,写起来简单,也易于学习
sequelize:这个是个nodejs的ORM框架,用的比较多,关于这个框架的介绍,可以看一下我的另一篇博客,node之ORM框架。
搭建这个前后端分离的框架纯属娱乐加学习,写此博客就是把搭建过程介绍一下,也作为自己的一点心得吧。
后端-koa
先找个轮子,这里用狼叔的koa-generator来生成项目架构
1 | npm install koa-generator -g |
生成文档结构
1 | . |
既然是轮子,直接就可以运行了
1 | npm install |
系统自动创建users表
1 | (node:15140) [SEQUELIZE0002] DeprecationWarning: The logging-option should be either a function or false. Default: console.log |
sequelize持久化ORM框架
我们先按这个结构走,因为我们搭建前后端分离的框架,所以,public下面的图片、样式文件夹用不到,我们就把sequelize的model、dao、service、配置文件等放到public下面,删除public下面之前已有的文件
config
public下面新建一个config文件夹,里面创建config.js,放数据库的配置信息
1 | module.exports = { |
db.js
新建一个utils文件夹,创建一个db.js,我们简单封装,创建一个连接数据库的工具类
1 | const Sequelize = require('sequelize') |
model
接下来新建一个model文件夹,创建一个user.js,创建一个user的model
1 | const moment = require('moment'); |
dao
接下来新建一个dao文件夹,创建一个user.js,创建一个user的dao,负责CRUD
1 | const {User} = require('../model/user') |
前端iview
直接下载iview-admin项目DEMO
1 | # clone the project |
1 | . |
效果图
菜单修改
默认菜单读取routers.js,可以根据权限组控制,也可以根据权限读取菜单进行加载,菜单里面meta的配置说明如下,因为有些是路由,不显示在菜单里面,比如表单的CRUD操作。
1 | /** |
简单构建
登录
将main.js里面的mock注释掉,mock拦截并模拟后台数据
1 | // 实际打包时应该不引入mock |
config.js配置baseUrl
1 | /** |
jwt获取token
后端创建util.js 创建token
1 | const jwt = require('jsonwebtoken') |
前端请求过滤,请求加token验证,axios.js修改
1 | if (!config.url.includes('/login')) { |
后端采用basic-auth登录认证,见auth.js
跨域问题
iview前端axios配置,找到axios.js配置文件
1 | getInsideConfig () { |
后端设置CORS来解决跨域问题,配置app.js,需要安装npm对应的包
1 | const cors = require('@koa/cors'); |
简单封装
后端-util文件下
auth.js:访问认证
error.js:异常错误封装
help.js:请求封装
util.js:jwt获取token