0. 系统设计
1. 数据管理
2. 身份认证
3. 权限管理
相对于网站前台,后台拥有更多的数据操作。切分为两部分的话一部分为展示,另一部分为维护。展示为数据库到用户浏览器的过程,维护为浏览器 form 到数据库的过程。
查询
数据展示的策略有很多种,如全量展示、按数据特征暂时用户能访问的那部分、给出精确特征才能访问。但这都是产品策略,对于开发者来讲则为'查询条件'+'用户身份'=>'数据库可见数据'
的一种映射
为了方便举例,现在虚拟一个多用户博客系统,功能有文章、评论、访客、栏目、标签等功能,以后为了方便也会以这个为模型进行举例。
筛选
假定需求:有角色管理员、作者、编辑三种身份,作者能写文章并投稿但不能查看别人写的文章,编辑能编辑文章并发布但不能删除文章,管理员拥有查看所有人的文章并且有审核修改和删除的权限。列表页有筛选项'关键字查询','按栏目筛选','按标签筛选[可多选]',‘按投稿人筛选’,‘按发布时间筛选’(MD,没图还真是不好说明)
做了一个简单的映射图
一般地,筛选表单中的筛选项都有 表单项=>QueryString 项=>SQL WHERE 条件项=>
,中间抽象出映射关系并通用化处理,可简化未来筛选项在需求变更时的代码修改
交互过程:
- FormData => QueryString
- QueryString =>
2.1 后端收集后重新渲染 Form 表单
2.2 后端收集后构建 SQL Where查询条件,获取数据结果渲染列表
分页
直接用别人造好的轮子吧。如果你做的项目是前后端分离那就更爽了,大把大把的组件分分钟搞定不是梦。
检索服务
对于少量数据 SQL 应付起来还是得心应手的,SQL 语句稍微一复杂性能和适用性就急剧下降,还有就是需要全文索引的情况。这个时候就得考虑其他方案了。
现成的索引方案有 ElasticSearch、Algolia 选一个用起来吧!
对于 laravel 用户来讲该框架的 5.3 版本自身有对索引方案的支持