前言

一般来说,一个管理后台的构建的基本流程是:(1)选择一个开发语言->(2)选择一种数据库->(3)选择一个开发轮子(framework)->(4)在轮子上搭建前端框架->(5)实现业务逻辑。 
一旦一个后台做出来以后,有了技术积累,以后其他的项目都是克隆版本,这样的流程的缺陷是:

  • 开发语言选型被固化 
    技术人员的招聘、团队协作开发都必须依赖开发语言统一。
  • 业务逻辑的实现无法统一标准 
    没有统一标准就很难书写规范的文档,技术人员离职很难做到顺利交接,同时系统里面的隐藏BUG很难通过标准测试发现。


时下Web前端技术的发展风生水起,我们可以尝试用WebAPP的思想去构架后台,将后台的前后端分离,前端交给AngularJS,后端交给任何一种语言框架,前后端通过标准协议接口通讯,这样后台构架的流程将是这样:(1)业务流程的数据库建模->(2)业务流程的协议文档制定->(3)前后端工程师协作开发完成后台


接下来我将阐述这套流程的实现原理和基本知识要点,后续文章将step-by-step去构建整套系统,需要注意的是,演示均只针对于开发环境,不会谈及生产环境部署,同时只关注于系统框架的标准化,对于使用到的各种语言技术结构可能会不太标准,请谅解。

基础知识

  • CRUD 
    后台的最终目的就是针对数据库的操作,而操作归纳下来无非就是 Create(新增),Read(读取),Update(更新),Delete(删除),这就是CRUD的意思,参见维基的解释
  • Restful 
    前后端分离,我们需要将CRUD的接口通过标准协议(WebAPI)来实现,Restful就是为这个协议而生的,参见老外的解释
HTTP请求 CRUD 返回状态位
POST Create 201
GET Read 200
PUT Update 200
DELETE Delete 200
  • Authentication 
    用户的验证服务是任何一个后台都必备的功能,现在WebAPI验证服务国际化的标准很多,我分析了一下各种开发语言轮子对于这些标准的支持力度,整理了用得比较多的3个标准:

    1. Session 
      这是常规后台使用的验证方式,后台提供登录/登出的接口,同时保持一个会话在服务端,后续的web请求都是基于该会话的存在,优点是对于后端来说实现比较简单,比较容易实现对于用户权限的控制,缺点是用到了Cookie,对于基于RestfulAPI实现的后台系统来说,原则上是不允许使用到session和cookie的,所以有些固执的轮子例如(php-yii)就明确表示不支持
    2. HTTP Basic Auth 
      参见维基的解释,每一个web请求头中,都将Username/Password通过base64加密,后端解密验证,优点是简单,基本每个轮子都支持,缺点是没有登录/登出,而且每次请求都会把密码传过去,总感觉安全性有问题(其实没什么问题),所以生产环境一般很少用,测试环境用用挺好。
    3. Oauth 2 
      这是一个完美的验证方案,参见官方介绍,大概的原理是客户端首先向验证服务器申请一个令牌(token),然后通过token登录到后台,后台与验证服务器通讯验证token合法性、时效性、权限。目前广泛被应用于开放平台的认证服务中,而阿里云后台是采用AngularJS书写的,他们的验证服务就是采用Oauth2。优点是验证和后台分离、各轮子都支持,缺点是实现复杂
  • AngularJS

    AngularJS(后文将简称ng)是目前比较流行的Web前端框架,它的最大特点就是数据绑定 
    由于这个特点,用它来做后台的前端框架是最合适的,model将数据从后端取下来,通过数据绑定渲染到view,再通过bootstrap装饰一下template,一个高大上的后台系统就能快速实现。 
    我们这里使用的是ng1.3,按照官方说明,1.3开始已经不再兼容IE8

Note: AngularJS 1.3 has dropped support for IE8. Read more about it on our blog. AngularJS 1.2 will continue to support IE8, but the core team does not plan to spend time addressing issues specific to IE8 or earlier.

  • CORS 
    Cross-Origin Resource Sharing(跨域资源共享),我们用Ajax发送WEB请求,只要是跨域访问就会遇到这个问题,解决方法是后端在HTTP响应头里面加入Access-Control-Allow-Origin等标签,一般轮子都会有开发者提供此功能插件。 
    顺带谈谈jsonp,在CORS没有诞生之前,发明这个技术来解决跨域问题的程序员真是个天才!客户端书写一个callback函数,ajax请求时将这个callback函数名带个服务器,服务器返回数据时,顺带去执行这个callback,由于是服务器主动去执行这个callback,就绕开了跨域问题。目前jsonp已经逐渐废弃了,一个是因为非官方出品,不是所有浏览器都支持,另一个原因jsonp只能解决GET请求的跨域。

  • Postman 
    访问官方网站,postman是一个chrome浏览器的插件,可以很方便的测试RestfulAPI 

实现原理

AngularJS+RestfulAPI+BasicAuth+Python/PHP/Node.js来实现一个最简单的新闻管理后台。 
业务要求:提供基本的后台登录/登出、实现新闻的CRUD、分页、搜索。

数据库建模

列名 字段 含义 说明
id int ID PK
title varchar(100) 标题 NN
content text 内容 N
create_time datetime 创建时间 NN

制定协议

URI 请求方式 返回 功能
/auth/info GET {userid:int,username:string} 用户验证
/news/ POST NULL 新闻-创建
/news/?page=int&search=str GET 见下文备注 新闻列表-读取
/news/:id/ GET {id:int,title:str,content:str,create_time:str} 新闻-读取
/news/:id/ PUT NULL 新闻-更新
/news/:id/ DELETE NULL 新闻-删除
/news/deletes/?ids=int,int DELETE NULL 多条新闻-删除

备注:新闻列表-读取 
请求参数:page显示第几页,search搜索关键字 
返回数据:

{total_count:int,  //总记录数page_count:int,   //总页数next:bool,        //是否有下页previous:bool,    //是否有上页results:[],       //结果集
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

后台实现 
效果图 


源码演示

源码下载地址:http://pan.baidu.com/s/1qXic6IC

前端模板下载地址: http://www.cssmoban.com/cssthemes/5604.shtml
源码是跨平台的,这里选用的演示环境是Win7

  • 前端 
    1) 安装IIS; 
    2) 指定虚拟目录admin到client/; 
    3) 访问http://127.0.0.1/admin/即可(注意,如果使用IE浏览器,要IE9以上内核)

  • 后端-Python 
    1) 安装soft/python-2.7.3.msi; 
    2) 安装soft/Django-1.9.1.tar.gz (解压以后命令行执行 setup.py install) 
    3) 安装soft/django-rest-framework-master.zip (解压以后命令行执行 setup.py install) 
    4) 安装soft/django-cors-headers-master.zip (解压以后命令行执行 setup.py install) 
    5) server-python目录下执行 manage.py runserver

  • 后端-PHP 
    1) 安装soft/vcredist_x64.exe (php要求的vc11运行环境) 
    2) 安装soft/php-5.6.16-Win32-VC11-x64.zip (解压即可) 
    3) 将php目录加入到系统环境变量Path中 
    4) server-php目录下执行 php -S 127.0.0.1:8000

    注意,该PHP压缩包中的php.ini我做过了一些修改: 
    extension=php_pdo_sqlite.dll #增加sqlite支持 
    always_populate_raw_post_data = -1 #新版PHP-win对于POST处理的旧函数有过期警告,会导致CORS中断,这里禁用该警告,Linux下PHP5.6无此问题 
    date.timezone = ‘Asia/Shanghai’ #纠正时区

  • 后端-Node.js 
    1) 安装soft/node-v5.0.0-x64.msi 
    2) server-nodejs目录下执行如下指令

    > set PORT=8000
    > npm start
    • 1
    • 2
    • 1
    • 2

前后端具体书写流程参见:

管理后台-后端-Python篇 
管理后台-后端-PHP篇 
管理后台-后端-Node.js篇 
管理后台-前端-AngularJS

如何用AngularJS构建管理后台相关推荐

  1. Springboot+mybatis构建管理后台系统

    Springboot+mybatis构建管理后台系统 新建一个springboot工程 开发后台管理登陆功能 1.在springboot中集成mybatis 2.编写登陆接口 2.编写登陆页面 登陆功 ...

  2. go语言生成自定义uuid_竟然不用写代码!一款可视化 Web 管理后台生成工具

    大家好,我是欧盆索思(opensource),每天为你带来优秀的开源项目! 今天给大家推荐一款利刃:一款基于 Go 语言的可视化 Web 管理后台生成工具. 项目名称:go-sword,地址:http ...

  3. go web db每次关闭_竟然不用写代码!一款可视化 Web 管理后台生成工具

    大家好,我是欧盆索思(opensource),每天为你带来优秀的开源项目! 今天给大家推荐一款利刃:一款基于 Go 语言的可视化 Web 管理后台生成工具. 项目名称:go-sword,地址:http ...

  4. 弹弹堂服务器如何修改,弹弹堂端游服务端+手工弹弹堂游戏客户端+GM管理后台+附安裝构建实例教程...

    弹弹堂端游服务端+手工弹弹堂游戏客户端+GM管理后台+附安裝构建实例教程 系统centos 7.2 64位 安装宝塔 yum install -y wget && wget -O in ...

  5. Artiely Vue Admin - 基于蚂蚁金服Ant Design构建的高颜值开源管理后台UI框架

    继承 Ant Design 专业美观的优点,支持PC/手机/平板的响应式布局的优秀后台管理系统 UI 框架. 关于 Artiely Vue Admin Ant Design 是阿里巴巴蚂蚁金服团队出品 ...

  6. 10 个 GitHub 上超火和超好看的管理后台模版,后台管理项目有着落了

    大家好,我是你们的 超级猫,一个不喜欢吃鱼.又不喜欢喵 的超级猫 ~ 前言 一般人没事的时候刷刷朋友圈.微博.电视剧.知乎,而有些人是没事的时候刷刷 GitHub ,看看最近有哪些流行的项目. 久而久 ...

  7. 使用 WorkManager 管理后台和前台工作

    ​​ 随着设备性能提升和软件生态发展,越来越多的 Android 应用需要执行相对更复杂的网络.异步和离线等任务.例如用户想要离线观看某个视频,又不想一直停留在应用界面等待下载完成,那么就需要以一定的 ...

  8. springboot 权限管理 后台框架源码 java 项目 shiro FHAddmin

    1.代码生成器: [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本.处理类.servi ...

  9. 基于ZKWeb + Angular 4.0的开源管理后台Demo

    这是一套基于ZKWeb网页框架和Angular 4.0编写的开源管理后台Demo,实现了前后端分离和模块化开发, 地址是: https://github.com/zkweb-framework/ZKW ...

最新文章

  1. 干货丨机器学习和深度学习概念入门
  2. Redis学习笔记~实现消息队列比MSMQ更方便
  3. js通过月份判断前三个月_怀孕前三个月如何判断胎儿发育是否健康,看HCG翻倍情况,快收藏...
  4. @RenderBody、@RenderSection、@RenderPage、Html.RenderPartial、Html.RenderAction的作用和区别...
  5. 如何解决秒杀的性能问题和超卖的讨论 及防止按钮多次点击
  6. java 循环标记_深入浅析Java 循环中标签的作用
  7. 操作系统概念 ppt_智能家居操作系统三国拉锯,要出结果了吗?
  8. C---编写程序:求出1~1000之间能被7或12整除,但不能同时被二者整除的所有整数,将结果保存在数组中,要求程序数据的输入、计算和输出均使用函数实现。
  9. cf1108E2 线段树类似扫描线
  10. android textview 背景图片,Android—TextView 背景颜色与背景图片设置
  11. @vue/cli 3.0 eslint 转成tslint
  12. Qt之HTTP之模仿迅雷——根据URL获取文件信息(上)
  13. VUE Error:if there's nested data,rowKey is required错误
  14. 基于jsp+mysql+Spring+SpringMVC+mybatis的ssm学生网上请假系统
  15. 中柏平板u盘启动_中柏A13笔记本如何进bios设置u盘启动
  16. keytool 错误: java.io.IOException: Keystore was tampered with, or password was incorrect----gt;解决方法
  17. 手把手教你使用R语言做出SCI论文中的表二(单因素分析表)(2)
  18. 法语入门学习资料汇总
  19. 电子秤方案介绍——体脂测量功能
  20. Nginx用户访问及密码验证

热门文章

  1. H3C BGP基本配置实验
  2. 经典仿句100例_精美仿句100例
  3. [附源码]Python计算机毕业设计Django姜太公渔具销售系统
  4. 燕十八老师 JS高级学习笔记 之作用域链
  5. 水来我在水中等你,火来我在灰烬中等你
  6. python 二次平滑_Python 指数平滑
  7. python实现灰色关联法(GRA)
  8. 他俩都曾是技术大牛,创业这些年来有怎样的苦与乐?
  9. 数据分析---常用业务模型
  10. 6500 RPR VS SSO