关于Web前后端分离的体验

由于公司有一个特殊的项目,以前是完全用php(smarty)写的一个程序,现在要转向php+node。因此一不小心又给后端同学们灌输了下用node做前后端分离的思想。

以前在知乎上答过这样的问题。大概如下

http://www.zhihu.com/question/26835139

由于目前正在做angular的项目,因此体验更加深刻。

现在再来说一下前后端分离的想法吧,还是有点借鉴http://ued.taobao.org/blog/2014/04/full-stack-development-with-nodejs/

1、我所接触的第一代Web程序

为什么是我所接触的呢?用Java来说吧。以前可能有人用过EJB,我没用过,不过听说那个东西很庞大。

我接触的第一代应该是JSP+Servlet吧,当时基本上是的做法是把JSP解析成一个Servlet,然后tomcat再把servlet转换成对应的html,再发布出去。页面与页面之前完全通过servlet进行通信,接触的也不太多,不太深刻。

只是当时在JSP里写Java代码,甚至写数据操作的代码,完全没有分离的思想。整个代码看起来很臃肿。

2、Spring时代

分离的稍微明显的就是Spring的到来吧,当时有三层架构,先不提那些什么的缓存吧,Dao+Service+Web,Dao提供底层数据支持,Service写业务逻辑,Web提供页面。很经典的作法就是往request或者session里面塞一串数据,然后在JSP里写java代码或者写jstl等模板语言。这样往往后端同学也要写一份demo页面用来测试(那不会写demo真的不行吗?),而前端同学则可以悠哉悠哉的切一些页面—>刷一下知乎—>写一会css—>刷一会知乎。等后端同学把服务写好后,前端同学再把切好的页面给后端。后端同学再一一填坑。

这可能只是我们当时毕业设计式的作法,而且当时还可能还没有真正的前端工程师而言,只有php/java工程师+UI等。

3、Rest时代

就是后端提供WebService,前端负责数据表现。这当属第一代前后端分离了。这时候可能有真正意义上的前后端分离了。出现Rest的原因,我估计是因为一个Server要对多端(Android、Iphone、Web等)才这样做。

这时候Soap协议貌似没怎么看到了,至少我没怎么看到了。

这种方式还是挺管用的,前后端各司其职。这时候后端完全只用提供最纯粹的数据服务就ok了,一般用json进行数据交换。而且这时候前端一般会用node作为前端的服务器,当然,你也可以不用。那么问题自然就来了,前后端的数据交换成了尤为关键的一个环节,包括前后端同学要定好数据格式同步session错误监控等等。

其实这个时候依然是后端模板的方式。只是以前php的smarty模板,java的jstl表达式,现在成了node里的est等等。但是这种分离方式在细分工作提高开发效率等方面起到了很关键的作用。关于性能是否有所提升,有待考究。

通过监控接口的错,能很轻松发现后端服务不稳定。目前的api监控,很纯粹,虽然不太完善,但是还是发现了不少问题。

4、前端MVC时代

目前我们在用Angular。这样可以完全抛弃node层模板的做法,这应该是第二代分离了。Angular还在学习中,我真是看上了双向绑定这个神器,google又一伟大发明。

目前已存在的问题:

  • 权限的控制,以前只用通过url,后端就可以控制住;现在都是hash值,后端如何去控制?

http://hirra.cn

时间: 2024-11-03 20:49:59

关于Web前后端分离的体验的相关文章

基于 koajs 的前后端分离实践

一.什么是前后端分离? 前后端分离的概念和优势在这里不再赘述,有兴趣的同学可以看各个前辈们一系列总结和讨论: 系列文章:前后端分离的思考与实践(1-6) slider: 淘宝前后端分离实践 知乎提问: 如何评价淘宝 UED 的 Midway Framework 前后端分离? Web 前后端分离的意义大吗? 尤其是<前后端分离的思考与实践>系列文章非常全面的阐述了前后端分离的意义和技术实现.如果不想看上面的文章,可以在脑海里留下这样一个轮廓就好: 本文主要阐述趣店团队基于Koajs的前后端分离实

结对编程(前后端分离)

成员: 巫培杰:3117004669 易俊楷:3117004677  一.Github项目地址 前端代码:https://github.com/JakeYi/Paring-project 后端代码:https://github.com/blanche789/softpairing 二.PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 20 20 · Estimate · 估计这个任务需要多少时间

架构设计:前后端分离之Web前端架构设计

在前面的文章里我谈到了前后端分离的一些看法,这个看法是从宏观的角度来思考的,没有具体的落地实现,今天我将延续上篇文章的主题,从纯前端的架构设计角度谈谈前后端分离的一种具体实现方案,该方案和我原来设想有了很大的变化,但是核心思想没变,就是控制层是属于Web前端的. 在以前文章里我说道前后端分离的核心在于把mvc的控制层归为前端的一部分,原方案的构想在实际的生产开发里很难做到,我觉得核心还是控制层和视图层的技术异构性,这样后果使得系统改造牵涉面太大,导致在项目团队里,沟通.协调以及管理成本相对较高,

关于Web实现前后端分离,前后端解耦

一.前言 ”前后端分离“已经成为互联网项目开发的业界标杆,通过Tomcat+Ngnix(也可以中间有个Node.js),有效地进行解耦.并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构.多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础. 前后端分离(解耦)的核心思想是:前端Html页面通过Ajax调用后端的RestFul API并使用Json数据进行交互. 注:[在互联网架构中,web服务器:一般指像nginx,apache这类的服务器,他们一般只

【转】Web实现前后端分离,前后端解耦

一.前言 ”前后端分离“已经成为互联网项目开发的业界标杆,通过Tomcat+Ngnix(也可以中间有个Node.js),有效地进行解耦.并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构.多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础. 前后端分离(解耦)的核心思想是:前端Html页面通过Ajax调用后端的RestFul API并使用Json数据进行交互. 注:[在互联网架构中,web服务器:一般指像nginx,apache这类的服务器,他们一般只

从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十六 ║ Vue前篇:ES6初体验 &amp; 模块化

缘起 昨天说到了<从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十五 ║ Vue前篇:JS对象&字面量&this>,通过总体来看,好像大家对这一块不是很感兴趣,嗯~~这一块确实挺枯燥的,不能直接拿来代码跑一下那种,不过还是得说下去,继续加油吧!如果大家对昨天的小demo练习的话,相信现在已经对JS的面向对象写法很熟悉了,如果嵌套字面量定义函数,如何使用this关键字指向.今天呢,主要说一下ES6中的一些特性技巧,然后简单说一下模块化的问题,好啦,开始今天的讲

ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目

 一.前言 这几年前端的发展速度就像坐上了火箭,各种的框架一个接一个的出现,需要学习的东西越来越多,分工也越来越细,作为一个 .NET Web 程序猿,多了解了解行业的发展,让自己扩展出新的技能树,对自己的职业发展还是很有帮助的.毕竟,现在都快到9102年了,如果你还是只会 Web Form,或许还是能找到很多的工作机会,可是,这真的不再适应未来的发展了.如果你准备继续在 .NET 平台下进行开发,适时开始拥抱开源,拥抱 ASP.NET Core,即使,现在工作中可能用不到. 雪崩发生时,没有一

springBoot 搭建web项目(前后端分离,附项目源代码地址)

springBoot 搭建web项目(前后端分离,附项目源代码地址) 概述 该项目包含springBoot-example-ui 和 springBoot-example,分别为前端与后端,前后端分离,利用ajax交互. springBoot-example-ui 前端html 技术:BootStrap + layer + jquery + css + html 该项目git地址:https://github.com/jiangcaijun/springBoot-example-ui sprin

web系统是否要前后端分离?

开发一个web管理系统,是否要采用如今流行的前后端分离模式? 首先要从为什么会出现前后端分离说起,前后端分离的目的. 1.让前端工程师(前端)和后端工程师(后端)们能够更加专注于自己的领域 传统的开发模式是由前端负责将UI设计好的页面切成对应的静态网页,然后交由后端整合数据,实现网页的数据动态化. 这种开发模式下,前端不会去关注整个系统的业务流程是怎样的,所以导致后端在将拿到的静态页面整合成动态页面时常会出现页面展示与预期的效果不一样,需要前端不断的去调整.而后端则要痛苦的去面对一堆自己并不完全