为什么要WEB前后端分离
- 后端只提供API接口(尽量做restful服务化),后端保证API和服务稳定。前端调用AJAX实现数据的呈现。
前端职责:页面UI,页面展示、交互、渲染,用户体验等。
后端职责:数据存储,业务逻辑,RESTful 接口,性能、可用性、伸缩性、扩展性、安全性等。 - 像React、Vue、Angular我们可以轻松的构建一个无需服务器渲染就可以展示的网站,这类框架也提供了前端路由功能,后台可以不在控制路由的跳转,将原本属于前端的业务逻辑全部丢给前端,这样前后端分离可以说是最彻底的。
- 降低前端对后端的依赖,提高可维护性,让前后端的职责更清晰,分工更合理。
- 服务端负责业务/数据接口,前端负责展现/交互逻辑。
前后端分离的优势
彻底解放前端
前端不再需要向端台提供模板或是后台在前端html中嵌入后端代码,前端通过AJAX调研后端接口,数据逻辑放在前端,由前端维护。提高工作效率,分工更加明确
前后端分离的工作流程可以使前端只关注前端的事,后台只关心后台的活,两者开发可以同时进行,在后台还没有时间提供接口的时候,前端可以先将数据写死或者调用本地的json文件即可,页面的增加和路由的修改也不必再去麻烦后台,开发更加灵活。局部性能提升
通过前端路由的配置,我们可以实现页面的按需加载,无需一开始加载首页便加载网站的所有的资源,服务器也不再需要解析前端页面,在页面交互及用户体验上有所提升。降低维护成本
通过目前主流的前端MVC框架,我们可以非常快速的定位及发现问题的所在,客户端的问题不再需要后台人员参与及调试,代码重构及可维护性增强。
考虑到seo的问题
- 对于需要做SEO的产品,这种方式就有点力不从心了。因为,重要内容都在前端进行异步组装,这样是无法被搜索引擎收录的,所以必须要考虑服务端渲染才可以被SEO。
- 分离为什么不全部走ajax,页面就不需要任何服务端语言了。但实际场景并非如此,首先有些数据总是要生成页面时就已经同步获取的,且全异步对SEO不利、纯html页面没有include功能等。
随着Node.js技术的普及,我们把渲染的工作从服务端抽出来到前端,明确的前后端职责划分。
解决跨域问题
- 代码里面可以通过header函数在后端框架的入口做限制
- 也可以在nginx中配置代理
- jsop的方式
前端控制跳转,怎么保持会话(登录状态)
- 存一个全局变量可不可以,用localStorage可不可以,用cookie可不可以。
- 微信api的实现,是url中必须带上?access_token=[xxx]来判断状态的, 这样你就需要每个api提交都带上access_token参数