[TOC] ## 前后端分离的相关问题 三个前后端分离带来的麻烦: 1. 权责往往不清晰,有很多临界的位置,谁管都可以,容易引发扯皮。 2. 沟通时间增多,因为毕竟是两个人工作嘛,需要不少的沟通 3. 除了沟通,还需要两边的代码调试,看看数据、展示通不通,这个时间也很不可控,尤其是如果环境特别复杂,调起来不仅麻烦重重,还很有挫败感。 ## 传统多页应用与单页应用的区别 多页应用特征: 1. 页面内容由服务端模版生成; 2. 每次页面跳转都要经过服务端; 3. js 更多做的是动态效果; > 代表类库:jquery mootools yui 单页面应用的特征: 1. 所有内容在前端生成,js承担更多的业务逻辑 2. 减轻服务器压力。页面路由不经过后端,后端只负责api 3. 可以完全还原用户测操作路径,是一种可回溯的用户交互路径(逻辑写的差的除外); 4. SEO难度较高。所有的内容都在一个页面中动态替换显示,所以在SEO上其有着天然的弱势(SSR解决,或页面静态化) 5. 初次加载耗时多。单页Web应用功能及显示效果,需要在加载页面的时候将JavaScript、CSS统一加载,部分页面可以在需要的时候加载。所以必须对JavaScript及CSS代码进行合并压缩处理,如果使用第三方库,建议使用一些大公司的CDN,因此带宽的消耗是必然的。 > 代表类库:angular vue react backbone ## 如何不通过前端自动设置Cookie? 有两个Http头部和Cookie有关:`Set-Cookie`和`Cookie`。 * `Set-Cookie`由服务器发送,它包含在响应请求的头部中。它用于在客户端创建一个`Cookie` * `Cookie`头由客户端发送,包含在HTTP请求的头部中。注意,只有cookie的`domain`和`path`与请求的`URL`匹配才会发送这个cookie。 Set-Cookie响应头的格式如下所示: ``` Set-Cookie: <name>=<value>[; <name>=<value>]...                   [; expires=<date>][; domain=<domain_name>]                   [; path=<some_path>][; secure][; httponly] ``` `expires=<date>`: 设置cookie的有效期,如果cookie超过date所表示的日期时,cookie将失效。如果没有设置这个选项,那么cookie将在浏览器关闭时失效。 `secure` : 表示cookie只能被发送到http服务器。 `httponly` : 表示cookie不能被客户端脚本获取到。 > 参考:[http://www.cnblogs.com/lxwphp/p/9498157.html](http://www.cnblogs.com/lxwphp/p/9498157.html)