在网站开发过程中,对于前后端的分界线似乎一直是众说纷纭。从一开始完全没有前后端的概念,到后来的纠缠不清。

传统的分离方法

在我的脑海中一提到前端和后端,基本上第一个出现的区别点就是:后端是跟数据库跟服务器打交道的,前端是跟浏览器打交道的。似乎没有什么问题,大家都这么认为的。当然这没有什么错,我们一直以来都认为仅仅是以浏览器作分界,把这两部分的代码分离出来。但是前后端分离的初衷是为了分离前后端开发人员的职责,同时解决开发模式的问题。但似乎他们的职责在以前甚至于现在都并不明确,虽然前端是跟浏览器打交道,但是最终浏览器拿到的页面是服务器通过模板生成的一个临时静态页面而已。所以,实际上后端也掺和进来了,因为他要处理模板。当然,一般传统上的开发协作模式有两种:

  • 一种是前端先写一个静态页面,写好后,让后端去套模板。静态页面可以本地开发,也无需考虑业务逻辑只需要实现View即可。不足是还需要后端套模板,这些前端代码后端需要浏览一遍,以免出错。

  • 另一种协作模式是,前端直接去写模板,这样做的问题在于,前端编写过程中很依赖与后端环境,如果当后端没写完的情况下,前端几乎没法干活。

显然这两种方式似乎都有很多问题,但至少这还是目前为止大部分公司所采用的模式。他们从物理层来区分前后端的开发,同时淡化了前端在逻辑上的色彩。由于前端所做的事情就是来实现一个页面的静态版本,所以,大多数公司又给前端工程师们找了点活干。你去看现在公司在招聘的时候前端工程师的要求,除了对页面的基本制作技能外还有额外的设计职责。

到这里原本我们以为已经将前后端分离开来了,但是在模版这个尴尬的问题上,前后端的工程师们绝对吃过不少苦头,因为在整体网站架构上,这并不是前后端的分离。

中途岛(Midway Framework)

淘宝的前端团队真的很厉害,中途岛(Midway Framework)的架构在14年4月份就已经提出来了。

简单的说,中途岛架构是基于NodeJs的,因为Js是一门前后端通吃的语言,它可以作为一个桥梁搭建在原始的前后端模式中。具体的中途岛思想可以参考淘宝前端团队博客里发的博文:前后端分离的思考与实践想象一下这个场景多么美好:前端来决定某个模板是服务端渲染还是客户端渲染,当首屏的时候,就在nodejs里面生成HTML,不是首屏的时候,就AJAX过来在浏览器端渲染展示。

加入NodeJs还有很多好处,比如NodeJs的高并发特性,请求合并等。同时使用nodeJs做桥梁,前端可以自己决定获取什么格式的数据。

SPA

现在有一个在前端领域很火的名词SPA(Single Page Application)也就是所谓的单页应用,在和用户交互的时候当用户点击某个物件或者按键的时候不会跳转到其他的页面,会像app一样在当前页面进行跳转,最典型的框架是:Angular、Backbone等。

现阶段我在公司开发的移动商城就是采用Angular架构的一个SPA,切换页面或者场景的时候并不会跳转页面,只是去改变链接上的锚点,这个锚点由ui-route监听到,从而就由前端实现了对URL的掌控。SPA无需任何模板来控制输出,它的展现完全靠JavaScript控制,数据是SpringMVC通过restful的api接口提供的,所以SPA所采用的前后端的分离,已经基本分的很清楚了,后台只管数据输出和业务逻辑处理,前端负责交互逻辑和界面展示。

这样就需要前后端在接口的方面约定好,以避免不必要的麻烦。Blueprint是一个用来编写Api文档的工具包,对restful API几乎是完美兼容。

前后端分离开发技术的一些思考相关推荐

  1. 【转】Vue.js入门教程(一)从静态页面到前后端分离开发

    第一章:基础知识 我能看懂吗? 只要你现在能用html+css+js制作一个静态页面,相信我,你100%可以读懂这篇文章. 本文尤其适合那些想要了解前后端分离开发技术,或者刚刚脱离传统MVC开发模式的 ...

  2. 开发一个大型后台管理系统,应该用前后端分离的技术方案吗?

    话说这天,我们团队开会讨论了一个问题,不,与其说"讨论",不如说"争吵"更合适. 背景是这样的: 我们要开发一个 xxx 后台管理系统,这个系统业务复杂.功能又 ...

  3. 开发一个大型后台管理系统,真的需要用前后端分离的技术方案吗?

    话说这天,我们团队开会讨论了一个问题,不,与其说"讨论",不如说"争吵"更合适. 背景是这样的: 我们要开发一个 xxx 后台管理系统,这个系统业务复杂.功能又 ...

  4. python后端教程_Python学习教程(技术干货):关于前后端分离开发入门

    原标题:Python学习教程(技术干货):关于前后端分离开发入门 对于程序员来说,其实Tab和空格远远不只是"立场"问题那么简单. 在不同的编辑器里tab的长度可能不一致,所以在一 ...

  5. Python学习教程(技术干货):关于前后端分离开发入门

    前后端分离开发入门 在传统的Web应用开发中,大多数的程序员会将浏览器作为前后端的分界线.将浏览器中为用户进行页面展示的部分称之为前端,而将运行在服务器,为前端提供业务逻辑和数据准备的所有代码统称为后 ...

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

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

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

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

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

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

  9. 《Vue+Spring Boot前后端分离开发实战》专著累计发行上万册

                杰哥的学术专著<Vue+Spring Boot前后端分离开发实战>由清华大学出版社于2021年3月首次出版发行,虽受疫情影响但热度不减,受到业界读者的热捧,截至今日 ...

  10. 视频教程-SpringBoot2+Vue+AntV前后端分离开发项目实战-Java

    SpringBoot2+Vue+AntV前后端分离开发项目实战 10多年互联网一线实战经验,现就职于大型知名互联网企业,架构师, 有丰富实战经验和企业面试经验:曾就职于某上市培训机构数年,独特的培训思 ...

最新文章

  1. 多所双一流高校通知将恢复正常上班!还有的为在校生开放实验室
  2. oracle实例无法启动也无法关闭
  3. anaconda python_机器学习用Python—Python集成工具包Anaconda安装步骤
  4. python-if判断的本质
  5. 相机模型之世界坐标、相机坐标、归一化坐标、图像坐标、像素坐标、内参、外参、转换关系总结
  6. POJ 2752 Seek the Name, Seek the Fame
  7. java文件读取的几个操作-1
  8. Httpd总结 :HTTPD的基本概念
  9. 学生系统优化——字符限定
  10. 利用arcgis基本比例尺标准分幅编号流程
  11. 硬盘容量和计算机容量的换算,t和g的换算(硬盘容量G跟T的换算)
  12. python编程实现华氏温度和摄氏温度转换
  13. 谷歌关闭中国音乐搜索服务--有点可惜
  14. 2020/03/11美版iPhone卡贴ICCID完美激活!
  15. 共享充电宝之争:胜于专利,败于骂街 | 一点财经
  16. excel根据颜色赋值 Excel填充颜色单元格替换成数字 excel把所有红色变成1
  17. FineReport自动数据点提示轮播接口
  18. BigData之Hadoop:Hadoop框架(分布式系统基础架构)的简介(两大核心【HDFS存储和MapReduce计算】)、深入理解、下载、案例应用之详细攻略
  19. Java 正则表达式 手机号 身份证号脱敏
  20. deepin20安装calibre4.17.0(kindle最佳伴侣)

热门文章

  1. java JSONObject JSONArray对象使用小记
  2. c++ builder 存储过程 mysql mssql_C++ Builder实现Microsoft SQL Server 2000 的扩展存储过程...
  3. 雨棚板弹性法计算简图_旌阳移动推拉雨棚移动蓬定制
  4. xBIM 基础07 创建WebBIM文件
  5. ECharts图表tooltip显示时超出canvas图层解决方法
  6. JVM·垃圾收集器与内存分配策略之对象是否可被回收!
  7. [Python3] 010 字符串:给你们看看我的内置方法 第二弹
  8. WPF获取原始控件样式。
  9. Spring源码窥探之:@Value
  10. Java Web从前端到后台常用框架介绍