我的第一个全栈项目

最近一直没有更新,是因为干了件大事。奋战2个星期,实现了一个看上去还算不错的Node.js的WEB管理系统,和之前的练习项目比起来,功能更加强大,虽然界面看上去差不多。。。

之后的几天,我会陆续的剖析这个项目,就当是自己复盘一次,做个总结。

先上链接 https://github.com/liuyueyi1995/Koa2-management-system

management_system

简介

这是一个基于koa2的后台管理系统

使用 jQuery 作为前端JS框架
使用 bootstrap 作为CSS框架
使用 pug/jadehandlebars 作为HTML页面模板
使用 PostgreSql 存储业务数据
使用 mongodb 存储 session
使用 Bookshelf + Knex 作为 ORMQuery Builder
使用 Sentry 作为错误信息的收集反馈平台
采用 AJAX 处理前端请求

目录结构和babel的配置参考了 https://github.com/17koa/koa-demo
原链接似乎已经被删掉了,这个是我fork过来的版本 https://github.com/liuyueyi1995/koa2-demo
网站的前端代码来源于我之前的一个项目 https://github.com/liuyueyi1995/oa


基本任务

  • A 后台管理员的登录注册
  • B 用户信息管理
  • C 用户角色管理
  • D 机构管理
  • E 项目管理
  • F 通过后端分页+AJAX显示查询和搜索得到的内容
  • G 临时用户的创建和临时角色的分配与回收

完成度

  • 基本的MVC结构已经完成;
  • 任务A已全部完成,包括注册、登录、session读写;
  • 任务B已全部完成,包括用户信息查询、模糊搜索、添加、删除、修改基本信息、修改密码;
  • 任务C已全部完成,包括多表查询、模糊搜索、级联下拉菜单的处理、信息添加和删除;
  • 任务D已全部完成,包括机构信息查询、模糊搜索、添加、删除、修改;
  • 任务E已全部完成,包括项目信息查询、模糊搜索、添加、删除、修改;
  • 任务F已全部完成;
  • 表单的呈现形式做了改良,下拉菜单已经修改完成、加入了日期控件、对于布尔值输入采用radio的形式;
  • 已经关联了用户登录及数据管理两部分功能;
  • 已经完成外部角色与内部角色的区分,已经完成角色的截止日期设定;

TODOs

  • 对于日期、数字、布尔值的查询还有待完善(例如:timestamp、boolean);
  • 对于用户输入的校验还有待完善(例如:email、phone);
  • 对于数据的添加和修改还没有做判重(例如:当要添加的数据与已有数据发生冲突时,后台会报错,但还没有把相关信息告知前端);
  • 将信息提示改成更友善的方式,替换原来的alert
  • 提高代码复用的程度;

ISSUEs

  • 级联菜单,有bug,初始时,在没有改变type的情况下,site的列表出不来。
    • 已解决。
    • 应该是onchange的问题,
    • 通过给type下拉菜单增加一个默认的空值,强制用户去改变它。
  • 修改数据库之后,updated_at值没有变化。
    • 已解决。
    • model定义的时候加上hasTimestamps:true即可。
  • 修改数据库之后,列表的顺序会被打乱。
    • 已解决。
    • 在数据库返回搜索结果前使用orderBy进行排序。
  • 角色管理页,site值为空时,偶尔会出现添加失败的状况。
    • 已解决。
    • 前端null传回后端时变成了空字符串,与外键的integer类型冲突。
  • 分页之后,如果修改了后面的内容,修改成功之后会跳转回第一页。
    • 未解决
    • 应该是reload的问题。
  • 分页之后,搜索结果如果有多页内容,点击第二页,会返回原始结果的第二页。
    • 已解决。
    • 因为现在只有一个分页的AJAX处理,如果要让搜索后的结果可以分页展示,就需要再加一个状态,
    • 在原有分页基础上增加判断,
    • 如果此时搜索框内有内容,则会带着这个内容去查询数据库,并返回对应页的内容;
    • 如果此时搜索框为空,则返回原始数据对应页的内容。
  • 搜索之后,分页组件的页面数量不正确,例如原始结果有5页,但是搜索结果只有2页,但仍然会显示5个页码按钮。
    • 已解决。
    • 搜索之后获取到结果的条目数,重绘分页按钮。
  • 多次搜索时,分页组件的页面数量不正确,例如第一次搜索结果有2页,第二次搜索结果有3页,但仍然只显示2个页码按钮。
    • 已解决。
    • 实时获取搜索框的内容,当其内容变为空时,刷新页面。
  • 使用handlebars模板的时候,时间戳解析不正确。
    • 已解决。
    • 使用自定义helper解析时间戳。
  • 未登录的情况下,通过修改URL会跳过登录,直接操作数据库。
    • 已解决。
    • 在每个get请求返回之前,加入session的判断,session为空则跳转到login页。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值