一个简单粗暴的前后台分离方案
项目背景
刚刚参与完一个项目,背景:后台是用java,后台服务已经开发的差不多了,现在要通过web的方式对外提供服务,也就是B/S架构。后台专注做业务逻辑,不想在后台做页面渲染的事情,只向前台提供数据接口。于是协商后打算将前后台完全分离,页面上的所有数据都通过ajax向后台取,页面渲染的事情完全由前台来做。另外还有一个紧急的情况,项目要紧急上线,整个web站点的开发时间只有两周,两周啊!于是在这样的背景下,决定开始一次前后台完全分离的尝试。
之前开发都是同步渲染和异步渲染混搭的,有些东西可以有后台PHP帮你编译好,如通用的页面模板,后台传回的页面参数等。提前预感到这次完全分离可能会遇到少量困难,但是项目上线要紧,也不能深入搞架构,于是打算就用jQuery+handlebars,jQuery来完成页面逻辑和DOM操作,用handlebars来完成页面渲染,这个方案是如此的简单粗暴,但好处能最稳妥的保证项目按期完成。其实前后台分离并不是一件容易的工作,这么做会有诸多不完善之处,后面再谈。
浅谈前后台分离
所谓的前后台分离,究竟是分离什么呢?其实就是页面的渲染工作,之前是后台渲染好页面,交给前台来显示,分离后前台需要自己拼装html代码,而后再显示。前台来管理页面的渲染有很多好处,比方减少网络请求量,制作单页面应用等。事情听起来简单,但这么一分离又会牵扯到很多问题,比方:
- 资源的按需加载。尤其是在单页应用中。
- 页面展示逻辑。分离让前台的逻辑陡增,需要有一个良好的前台架构,如mvc模式。
- 数据校验。由于页面数据都是从后台请求来的,必需校验要展现的数据能否合法,避免xss或者其余安全问题。
- 短暂白屏。由于页面不是同步渲染的,在请求数据完毕之前,页面是白屏的,体验很不好。
- 代码的复用。众多的模板、逻辑板块需要良好组织实现可复用。
- 路由控制。无刷新的前台体验同时毁掉了浏览器的后退按钮,前台视图需要有一套路由机制。
- SEO。服务端不再返回页面,前台根据不同的逻辑呈现不同的视图(并非页面),要对搜索引擎友好需要做很多额外的工作。
以上每一个问题都够辣手,要解决好需要有设计精良又符合实际项目的方案。现在已经有很多框架可以帮我们做这些事情,Backbone, EmberJS, KnockoutJS, AngularJS, React, avalon等等,利用它们可以架构起一个富前台。但框架毕竟是框架,要利用到实际项目中,还是需要有自己的设计,框架并不能处理所有的问题。
之前也有看过淘宝团队的实践,利用nodejs做一个中间层,解决页面渲染、路由控制、SEO等事情,将前后台的分界线进行了重新定义。个人感觉这应该是一个正确的方向,有点颠覆的感觉,前台走向工程化,将变成真正的全栈式大前台。不知现在这种架构能否在淘宝全面铺开,真有点期待看看效果。
以上的框架,还有淘宝的实践,毕竟都是大牛之作,我这个小辈也只是参考学习过,未能在实际项目中使用。低头看看自己现在手头的项目,1个前台,2周时间,要完成一个完整的web项目,还是用最稳妥最低级的方式来搞吧~
基本结构
项目整体并不是一个单页应用,但有些板块需要做成局部的单页操作,像这种需要分步完成的操作,只要局部加载子页面就可。

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 一个简单粗暴的前后台分离方案