web前后端分离开发部署模式

转自:http://www.qttc.net/201506464.html(点击阅读全文跳转自原页)


在开始讨论这个话题之前我们先来认识一下传统的开发模式。

一、传统开发模式


相信很多做过Web开发童鞋应该都会经历这样一种开发模式,利用后端语言提供的模版引擎编写HTML/XML页面,比如:


PHP 开发有 Smarty模板引擎;Java web工程有jsp页面;Python 各个Web框架都有各自的模板引擎;NodeJS 的express你懂得


都有一个共同的特点,服务器端后台语言生成解析后的HTML/XML格式返回给客户端,例如浏览器端访问直接返回解析好的HTML,浏览器直接就解释执行。


二、Ajax过渡


Ajax是把前后端分离部署的推进者,当时网页局部更新就是未来前后端分离的开端。那什么是前后端分离开发呢?


简单来说就是前端开发不需要部署后台语言那堆垃圾环境,后端开发也不需要前端写好的任何程序,后台只管暴露各种API接口提供前端进行数据的增删改查,不负责生成HTML页面


前端请求到数据后再动态声称dom节点。


三、前端构建


相对于后台来说,前端构建是重点,因为前后端分离开发后侧重点在于前端,后端就是一个数据提供,权限控制api。


后端项目通常都带自己的Server,除了PHP以外,所以后端做PHP开发的还需要一个WebServer,Apache就是经典配合,最近被抛弃换做Nginx了,所以后台环境本来就是伪生产环境。


前端项目还是要搭建一个Server,然后把项目丢里边才能跑起来调试开发,最笨的直接整一个Apache或者Nginx也可以,但这样开发还是很痛苦。可以利用Node工具集即可,Node工具集非常多,比如我非常喜欢用的BrowserSync。


四、解决请求问题


前后端分离后,我们只需要Server端告诉我们Api URL即可,那么这会产生一个问题:Ajax跨域。这里就不能使用一般的跨域解决方法去解决,比如jsonp,iframe信使等等,因为我们还有POST请求。


于是Http Proxy类工具就有用了,比如我就会在BrowserSync加入中间件判断每一个请求,如果是/api前缀就会代理到API Server端,API Server端收到数据后再返回给BrowserSync,BrowserSync再返回给浏览器端。这样就解决跨域请求的问题。


生产环境有两种部署,一种是放到后台项目里,这就没啥说的,另外一种就是前后端分开部署,那就在前端WebServer处理端写点转发规则就好,如Nginx,Apache都支持。


五、静态资源路径问题


如果你的项目有上传资源功能,那自然就会产生用户资源,那前后端分离后,如何来处理这个问题呢?得先看模式。


资源与后台项目放一起,后台处理完后需要返回前台一个相对路径,如果资源时一台单独的服务器,那就需要返回资源的绝对URL即可。


六、会话


Web项目最头疼的就是无状态导致会话问题,传统的Web项目都使用Session/Cookie,但在前后端分离,集群部署模式下这Session明显缺陷太多。token方式已经是当前Web端解决会话的主流,并且有henduo开源好用的token生成管理程序,基本上拿来就能用。


最后


前后端分离的弱点,无非有两点:


1、前端负载增多,如请求到列表后,前端需要自己遍历数据集声称DOM节点 (目前绝大多数用户的电脑配置都不差,而且浏览器内核已经不在是满身缺陷的IE浏览器了)


2、不利于蜘蛛(其实现在的部分蜘蛛已经很厉害了,能够支持H5 C3效果)。


强点:


1、Web端就像手机端的App一样,不需要Cookie/Session,与Server完全分离,易于维护、扩展。一个Server API可以随意服务多个Web App


2、AngularJS用过了以后,你应该会感觉未来的Web开发模式,AngularJS在几乎是前后端分离的领航者


3、前端静态资源与后台API分流,互不影响,甚至不会存在IO问题


4、开发上与后台几乎同步,互相不影响,特别是基于RESTFul API风格,更是减少了沟通的成本


5、方便各自debug,JAVA开发人员不需要跑到前端开发人员机器上看tomcat控制台的报错,前端开发人员也不需要跑到后端开发人员的机器上看浏览器报错调试

web前后端分离开发部署模式相关推荐

  1. 记一次前后端分离开发部署经历

    原材料 React前端 Node.js后端,使用express框架 pm2 nginx代理服务器 部署过程 1.在本地开发好之后,把react代码和express代码打包上传至git.在服务器上clo ...

  2. WEB前后端分离开发中的验证与安全问题

    登录验证以及安全问题:  1.请求接口全部用post方式,在后端判断请求方式是否为post 2.登录密码等敏感信息要加密后传输,如用RSA(支付宝里可下载公私钥生成工具),客户端公钥加密,传到服务器后 ...

  3. 笔记合并_.NET Core开发实战(第23课:静态文件中间件:前后端分离开发合并部署骚操作)学习笔记(上)...

    23 | 静态文件中间件:前后端分离开发合并部署骚操作 我们先来看一下静态文件中间件有哪些能力 1.支持指定相对路径 2.支持目录的浏览 3.支持设置默认文档 4.支持多目录映射 源码链接: http ...

  4. .NET Core开发实战(第23课:静态文件中间件:前后端分离开发合并部署骚操作)--学习笔记(下)...

    23 | 静态文件中间件:前后端分离开发合并部署骚操作 这里还有一个比较特殊的用法 一般情况下,我们前后端分离的架构,前端会编译成一个 index.html 文件和若干个 CSS 文件和 JavaSc ...

  5. .NET Core开发实战(第23课:静态文件中间件:前后端分离开发合并部署骚操作)--学习笔记(上)...

    23 | 静态文件中间件:前后端分离开发合并部署骚操作 我们先来看一下静态文件中间件有哪些能力 1.支持指定相对路径 2.支持目录的浏览 3.支持设置默认文档 4.支持多目录映射 源码链接: http ...

  6. 前后端分离开发模式下后端质量的保证 —— 单元测试

    概述 在今天, 前后端分离已经是首选的一个开发模式.这对于后端团队来说其实是一个好消息,减轻任务并且更专注.在测试方面,就更加依赖于单元测试对于API以及后端业务逻辑的较验.当然单元测试并非在前后端分 ...

  7. ultraedit 运行的是试用模式_单元测试 —— 前后端分离开发模式下后端质量的保证...

    概述 在今天, 前后端分离已经是首选的一个开发模式.这对于后端团队来说其实是一个好消息,减轻任务并且更专注.在测试方面,就更加依赖于单元测试对于API以及后端业务逻辑的较验.当然单元测试并非在前后端分 ...

  8. Nodejs搭建前后端分离开发模式下的微信网页项目

    原文链接:<Nodejs搭建前后端分离开发模式下的微信网页项目>- 陈帅华 本文涉及对前后端分离及微信网页项目中的前端如何在本地环境中开发与调试的思考. 主要问题 1.如何配置微信公众平台 ...

  9. 前后端混合开发模式和前后端分离开发模式

    前后端混合开发模式和前后端分离开发模式 一.前后端混合开发模式 二.前后端分离开发模式

最新文章

  1. 什么是SLA?SLA管理包括哪些内容?
  2. ug怎么画曲线_UG怎么画雨伞的曲面造型
  3. 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
  4. 作为面试官的一些经历,希望能给找工作的朋友一些参考
  5. pythonnumpy函数四舍五入_NumPy函数
  6. 职场七种最致命的想法
  7. mysql中12e10等于多少_一篇文章看懂mysql中varchar能存多少汉字、数字,以及varchar(100)和varchar(10)的区别...
  8. 设计模式---桥接模式(C++实现)
  9. 装系统比较好用的PE工具推荐
  10. FX5 C的编程语言,三菱 FX5UC系列PLC性能规格/参数说明
  11. jupyter notebook 恢复删除代码块
  12. 终极自由之路:第二章 问题以及解决之道
  13. 林轩田机器学习基石笔记(第23-24节)——上限函数Bounding Function
  14. dw自动滚动图片_DW图片无缝滚动代码
  15. 概率函数(密度函数)
  16. JAVA之输入行数打印等腰三角形
  17. 论文笔记_SIGGRAPH2019会前课程:An Introduction to Physics-Based Animation_1
  18. 惠普gk100好不好_机械键盘惠普GK100感受(小白)
  19. Python学习_006.Python简单错误如何处理-守破离学习法_程序员修炼手册
  20. “东数西算”超级工程上马,利好云计算但暗藏汹涌

热门文章

  1. MySQL安全性:防止攻击和保护数据
  2. mysql审计记录保护_MySQL安全审计-等保2.0
  3. EXCEL中设置固定行列
  4. 公告(通告),消息,提醒等基本功能数据库表设计
  5. 修改网游单机服务器端,[单机架设]老网游[神泪]单机版
  6. 微信小程序之支付流程
  7. 郑州轻工业大学ACM(zzuli OJ 54)
  8. C++——深度优先搜索
  9. PEI-BD 聚醚酰亚胺-双马来酰亚胺/mPEG-PCL-g-PEI 聚乙二醇-聚己内酯-聚乙烯亚胺
  10. ADC12DJ3200 FMC子卡原理图PCB代码 FMC采集卡 JESD204B源码