多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 前后端分离 ![](http://cdn.aipin100.cn/18-1-25/62326766.jpg) [Swagger - 前后端分离后的契约 - 破狼 - 博客园](http://www.cnblogs.com/whitewolf/p/4686154.html) > 比如很多团队采取了后端的模板技术(JSP, FreeMarker, ERB等等),**前端的开发和调试需要一个后台Web容器的支持**,从而无法将前后端开发和部署做到真正的分离。 * * * * * 前端开发就是写模板?为什么我一个做后端的也成天的在写模板?什么鬼? 在开发时就能前后端分离,互不影响开发进度,这才是真正意义上的前后端分离。前端开发时需要后端部署同样的环境,写好控制器功能,前端写模板,这样不算是分离,后端套模板,这不是真正意义上的前端开发,不叫前端工程师,而是模板工程师。 * * * * * ### 终极的分离实践 **如果要彻底的前后端分离,那就不要再把模版交给php处理了**,哪怕再简单的单页着落页也不要后端管,就在中间加一层node.js,可以做页面拼装和简单的逻辑处理和路由等等。后端完全专注于提供接口服务就行了(后端完全专注于接口,即API 和 RPC服务),这种方案应该是前后端分离的最佳实践了。 从此前后端的边界不再是浏览器到服务器的距离,再说node.js本来就是前端应该掌握的,所以服务器上的前端也是前端,这和以往相比,对前端要求更高了,大前端,哈哈。 如果使用node进行前后端分离了的话,那么用于防止 “跨站请求伪造攻击”的 `__token__` 就不能使用api接口获取了,只能使用RPC服务得到了。(传统API是客户端的API,RPC相当于是服务端的API,对外不可见。) >[danger] 前端(html/js/css) > 中前端(node/nginx/php) > 中后端(php) > 后端(php/swoole/c/go/java) [狼叔:Node全栈为前端带来更多可能](http://mp.weixin.qq.com/s/IOC7Vv9plh7171Bdz8Z1fQ) > 页面即服务,而不是后端api为服务,因为只有页面是直接面对用户的。并且一个功能往往是要多个API联合使用的,所以单个API不算是服务。只有页面才算是服务。至少对用户来说是这样的。 > 项目 前端和后端完全分离来做,两个git项目,分开管理。 [专访彭星老师:探究前后端分离存在的意义](https://mp.weixin.qq.com/s/SlwvqEFKrcSRr8FZgBImUQ) > 控制器要交给前端了,也就是以前由后端控制的url(面向用户,用户看到的,地址栏的url,而非后端api地址),现在由前端掌控。 > > 如果把它当应用来做,页面不是很多,使用场景网络环境好的情况下,倾向于使用单页前后端分离方式,如果还是比较传统的网站,页面多,使用场景多样,网络环境不稳定,那么还是传统的模式,直接用node多页模式前后端分离比较好(后端多页渲染现在直接交给了前端而已)。 [前端发展闲聊](https://mp.weixin.qq.com/s/PEIVQe0KEw1JY3IACQnl3Q) > 其他开发当然也可以来做前端,不过要想做的好,学习代价大到令人发指——而这往往是不能被接受的。 > > 我甚至认为,前端会成为终端开发的最终解决方案,包括但不限于手机,电视,车载中控等等。 [大家都在说的前后端分离到底是什么?](https://mp.weixin.qq.com/s/EcwargTYzeRcjAx9NEZPjQ) ~~~ 对node层不太了解 没太看懂。。。我们的结构是html js css 全部署在cdn上,js访问后端的api 这是最简单普通的一种方案,但是不够强大,还是用node + rpc的方式最好,是目前最好的方式。 ~~~ [那些前端MVVM框架是如何诞生的](https://mp.weixin.qq.com/s/UNud9JF23Ba5ncSGxz7fmg) [渐进式Web应用(PWA)入门教程(上)](https://mp.weixin.qq.com/s/LRxyuLe8cCE_S917yOkMbA) [前后端交互如何确保数据安全性?](https://mp.weixin.qq.com/s/3QiaO7-Z9q7lowanQsgbpg) [前端重构方案了解一下](https://mp.weixin.qq.com/s/H9Dvm_5F8hdBrZynlNdlfw) [【原创】分布式之闲侃前后端分离的必要性 - 孤独烟 - 博客园](https://www.cnblogs.com/rjzheng/p/9185502.html) > 然后,前端就满脸不爽的在你那调代码了。更有些情商低的后端就直接在旁边开摁手机,实在是。。。。。 > > 需要数据填充输出基本骨架的部分,用rpc内网调用(同步输出);其它的数据,首屏后再发起请求调用(异步输出)。 > > 同步输出的可以做SEO,异步输出的无法SEO。 >[danger] ### 其实我们就是想结束套模板的日子!不想变成所谓的「前端phper」 给页标绑定事件,阻止默认跳转,而是用ajax请求分页链接,后台检测到ajax请求就渲染html片段,检测到是蜘蛛请求就渲染整个页面。可以提高用户体验,但要注意用h5方式无刷新更新url,这样就能提供友好的无刷新翻页体验了。实际使用中就看有没有这么必要这样来优化用户体验了。 [为什么前后端分离了,你比从前更痛苦?](https://mp.weixin.qq.com/s/3fFJth2FYjJYYF1u8r7aTw) [微前端 - 将微服务理念延伸到前端开发中](https://mp.weixin.qq.com/s/VgcIy3wCLE8J9h_ODWx1Ew) [前端如何高效的与后端协作开发](https://mp.weixin.qq.com/s/fGQj8eDn7UPURbV4RPKtLA) [mpvue 在前端项目的应用设计](https://mp.weixin.qq.com/s/0vnEnMwkxv1zcLv_EM6biQ) [细说后端模板渲染、客户端渲染、node 中间层、服务器端渲染(ssr)](https://mp.weixin.qq.com/s/bQh-PssTgtnK4aPbTxB4xQ) [苏宁的Node.js实践:不低于Java的渲染性能、安全稳定迭代快](https://mp.weixin.qq.com/s/kX23axjtgPRb64jb1HQLOQ) > 使用 Node 模板,去替换 Java 模板,去除了模板文件谁写这样的模糊地带,让后端的 Java 工程师,只写 JSON 服务,实现前后端分离。 * * * * * ### 扩展 [你真的懂前后端分离吗? - Phodal | 豆瓣阅读](https://read.douban.com/reader/column/5 [哔哩哔哩(B站)的前端之路 - 掘金](https://juejin.im/post/5a473a2df265da431441098c) [前后端分离的思考与实践(一) - 文章 - 伯乐在线](http://blog.jobbole.com/65513/#tt_daymode=1) [前后端分离的思考与实践(二) - 文章 - 伯乐在线](http://blog.jobbole.com/65534/#tt_daymode=1) [如何做好前后端分离?](https://www.toutiao.com/a6312072190104715521/?tt_from=weixin&utm_campaign=client_share&timestamp=1515260495&app=news_article&utm_source=weixin&iid=22069500288&utm_medium=toutiao_android&wxshare_count=1) [web实战开发--前后端分离之js模板渲染](https://www.toutiao.com/a6307131893104738562/?tt_from=weixin&utm_campaign=client_share&timestamp=1515261075&app=news_article&utm_source=weixin&iid=22069500288&utm_medium=toutiao_android&wxshare_count=1) [Mock.js](http://mockjs.com/) > 让前端攻城师独立于后端进行开发。 [JavaScript 全栈工程师培训教程 - 阮一峰的网络日志](http://www.ruanyifeng.com/blog/2016/11/javascript.html) [前端开发的历史和趋势](https://github.com/ruanyf/jstraining/blob/master/docs/history.md) > 互联网发展的早期,前后端开发是一体的,前端代码是后端代码的一部分。 > 那时的前端工程师,实际上是模板工程师,负责编写页面模板。 [ruanyf/jstraining: 全栈工程师培训材料](https://github.com/ruanyf/jstraining) [React 技术栈](https://github.com/ruanyf/jstraining/blob/master/docs/react.md) [分层架构,前后端分离有啥坏处?](http://mp.weixin.qq.com/s/ZKjKUkWkNqxiwNEjBDXtiQ) [互联网分层架构,为啥要前后端分离?](http://mp.weixin.qq.com/s/Nhyo969WnEwyCWpr34ECcA) [一分钟了解互联网动静分离架构](https://mp.weixin.qq.com/s/Kpsq8MH2TvXQEECyGrmj9A) > 总数据量不大,生成静态页面数量不多的业务,非常适合于“页面静态化”优化。 [必备,前台与后台分离的架构实践](https://mp.weixin.qq.com/s/d65cXGXp_jcEeELyDZxGVA) [网站PC版和移动版的模板方案 · 前端笔记 · 看云](https://www.kancloud.cn/xiak/quanduan/411654) [token是什么东西,登录提交以后后台一定会返回一个token吗? - justjavac的回答 - SegmentFault](https://segmentfault.com/q/1010000010834287/a-1020000010834335) > 用在不支持 cookie 的终端。 > > 原生app。除了浏览器,基本都不支持cookie。 [移动端开发者眼中的前端开发流程变迁与前后端分离 - 掘金](https://juejin.im/post/57b7a88679bc44005b95ebd4) [优化技巧 :如何设计一个高质量的URL及页面标题 - Phodal | 豆瓣阅读](https://read.douban.com/reader/column/5945187/chapter/31584440/#) [专辑:淘宝前后端分离 - FED社区](http://frontenddev.org/column/taobao-full-stack-development/) [趣店前端团队基于koajs的前后端分离实践 - CNode技术社区](https://cnodejs.org/topic/57b062ed144011da12ff4183) [参考淘宝团队实践:一个简单粗暴的前后端分离方案 - 51CTO.COM](http://developer.51cto.com/art/201501/463338.htm) [也谈基于NodeJS的全栈式开发(基于NodeJS的前后端分离) - 51CTO.COM](http://developer.51cto.com/art/201404/435984.htm) [前后端分离实践](http://mp.weixin.qq.com/s/nKvjsU2frT5NDU4DLWqvYg) > AJAX 异步请求过多等问题。毕竟后端思维和前端思维还是有所不同——前端思维倾向于用户体验,而后端思维则更倾向于业务的技术实现。 [Web 研发模式演变 · Issue #184 · lifesinger/blog](https://github.com/lifesinger/blog/issues/184) > 1、**前端开发重度依赖开发环境。** 这种架构下,前后端协作有两种模式:一种是前端写 demo,写好后,让后端去套模板。淘宝早期包括现在依旧有大量业务线是这种模式。好处很明显,demo 可以本地开发,很高效。不足是还需要后端套模板,有可能套错,套完后还需要前端确定,来回沟通调整的成本比较大。另一种协作模式是前端负责浏览器端的所有开发和服务器端的 View 层模板开发,支付宝是这种模式。好处是 UI 相关的代码都是前端去写就好,后端不用太关注,不足就是前端开发重度绑定后端环境,环境成为影响前端开发效率的重要因素。 > > 2、**前后端职责依旧纠缠不清。** Velocity 模板还是蛮强大的,变量、逻辑、宏等特性,依旧可以通过拿到的上下文变量来实现各种业务逻辑。这样,只要前端弱势一点,往往就会被后端要求在模板层写出不少业务代码。还有一个很大的灰色地带是 Controller,页面路由等功能本应该是前端最关注的,但却是由后端来实现。Controller 本身与 Model 往往也会纠缠不清,看了让人咬牙的代码经常会出现在 Controller 层。这些问题不能全归结于程序员的素养,否则 JSP 就够了。 [Web应用的组件化(一)——基本思路 · Issue #6 · xufei/blog](https://github.com/xufei/blog/issues/6) [如何通过nodejs来实现php的前后端分离? - 知乎](https://www.zhihu.com/question/26598306) [基于node的前后端分离初识 - 简书](https://www.jianshu.com/p/61ec19f33018) [Nodeway--基于node.js的轻量级前后端分离框架 - CSDN博客](http://blog.csdn.net/xingkong0128/article/details/53690400) [实现前后端分离的心得 - 陈陈jg - 博客园](https://www.cnblogs.com/chenjg/archive/2017/06/12/6992062.html) [也谈基于NodeJS的全栈式开发(基于NodeJS的前后端分离) - 51CTO.COM](http://developer.51cto.com/art/201404/435984.htm) [图解基于 Node.js 实现前后端分离 - CSDN博客](http://blog.csdn.net/goodmentc/article/details/53576680) [基于NODEJS的前后端项目分离实践 - - ITeye博客](http://jiangxiao-2000.iteye.com/blog/2219921) [javascript - 怎样用node和php实现前后端分离,有具体的例子吗 - SegmentFault](https://segmentfault.com/q/1010000009301531) [node PHP 前后端分离_百度搜索](https://www.baidu.com/s?wd=node+PHP+%E5%89%8D%E5%90%8E%E7%AB%AF%E5%88%86%E7%A6%BB&rsv_spt=1&rsv_iqid=0xcd62721f0005f537&issp=1&f=3&rsv_bp=0&rsv_idx=2&ie=utf-8&rqlang=&tn=baiduhome_pg&ch=&rsv_enter=1&inputT=5281) [互联网风雨十年,我所经历的技术变迁](https://mp.weixin.qq.com/s?__biz=MzA4NTg1MjM0Mg==&mid=2657261437&idx=1&sn=c21c3a6f821ecdb17627d9431b9116ad&chksm=84479ea4b33017b286f4b7f43c3d511511de3bc8d7ece978bf9bf18e3c6babde7c829533c587&scene=21#wechat_redirect) [讨论:开发大型后台管理系统,应该采用前后端分离吗?](https://mp.weixin.qq.com/s/WFWz02sVU1W-477t7BQAUw) * * * * * last update:2018-1-25 14:51:12