前后端分离、
- 本文来源我在慕课网学习时候看到笔记整理 https://www.imooc.com
什么叫前后端分离?
- 前后端分离就是后端不再直接返回html, 直接返回数据,当然数据格式可以自己指定比如xml, json、yml都是可以的, html页面由前端去填充这些数据到dom中。
随着前后端技术的更新,越来越多的前端框架进入开发者们的视野,网站的前后分离架构越来越得到开发者们的喜爱与认可。
后端只提供数据接口、业务逻辑与持久化服务,而视图、控制与渲染则交给前端。 因此,越来越多的网站从后端渲染变成了前端渲染,前后端分离意味着后端可以不用去了解前端的代码, 前端不用学习后端的模板语法, 前后端不需要等到对方做好了才能调试了, 尽量在保证自己端的代码写好以及少bug, 这样在后期真正联调的时候就可以尽量避免bug了,而且前后端分离还意味着pc端、app、后台管理系统等各种系统可以尽量多的共用接口了。
什么时候选择前后端分离的开发模式?
在开发过程中相信大家经常会遇到一个问题, android端、ios端、pc端、 后台管理系统如果使用传统的mvc开发模式, 只要页面不一样 我们都得给对应的系统写一套后台, 而且很多页面还需要后端去填充数据到html中、 但是前后端分离的开发模式我们只需要把接口写好, 其余都不用管让前端去协调各个接口之间如何配合。
这种模式最大的好处就是适应性很强。 当然还有个很大的好处就是前端不用再等待将页面写好了然后交给后端, 然后后端再将代码改成模板语言了, 当然如果前端熟悉后端模板语法, 后端当然就很喜欢了, 但是前端往往不愿意去学习后端的模板语法,更喜欢用前端自己的模板语法。 前后端分离解决了这个问题
但是Restful api还是有缺点, 最大的问题就是seo, 爬虫爬不到, 百度就会给你降权, 对于那种需要流量的网站来说,这个是不太接受的, 所以后面就有了ssr技术, 在服务器端渲染好静态页面直接给前端, 这篇爬虫就能爬取到了, 而且有些系统比如内部系统或者后台管理系统这种根本就不在乎seo的直接就用restful api开发就行了。除了上面的问题以外还有就是数据格式依赖严重, 如果后端改了某个字段的名称, 前端也得跟着改, 在以前这种改动后端自己就可以一个人完成,但是分离之后得前端去改了, 如果返回格式变了,前端变动更大。
还有就是文档变得很重要了我们得去维护文档了,因为前后端分离脱离了文档,后期想维护能麻烦死。
前后端分离开发 跨域问题
我们现在有个二次开发的项目,要求前后端分离开发,前端我用webpack-dev-server本地服务,要请求java后台tomact下数据,我要处理跨域请求的问题,jsonp肯定是不行了,后台代码基本已经确认了,我想问如何让后台做的少更改的情况下,前端这边需要做什么配置来解决跨域问题。
想问一些关于前后端分离开发的问题。因为第一次开发有很多地方不清楚,上网查了很多资料现在似懂非懂,基本上就开发环境下的跨域问题是前端后后台一起解决,还是只用前端解决。(网上说是一起解决,但我后台的同事也没有接触过,他们以前都是javaweb项目,也不太懂),第二就是后期部署时前端和后台是不是分开部署服务器,可以部署在同一个服务器上吗。
要么单独写jsonp的接口,要么后台设置cors。开发环境下,你可以使用webpack的代理,用你启动的node服务代理请求访问java的接口然后把结果返回给你,但是生产环境下必须要后端的配合,要么jsonp, 要么设置cors,前端是无法解决的!设置cors是改动成本最低的方式
Node.js覆盖哪些领域?有没有值得玩的?
理论上 Node 运行在服务器,后端能做的 Node 都能做,但是有几个擅长的领域
前端本地代码构建、打包:webpack、gulp、babel 等
前端单元测试 & UI 测试:mocha、kama、jest、puppeteer 等
视觉渲染为核心的 web 站点:koa、express
企业级 web 框架 egg
爬虫 puppeteer
桌面程序开发 node-webkit、electron
比较好玩的应该是爬虫和啄米昂程序开发,但工作最常用的是本地代码构建、打包 & web
请问一下,在公司里从事前端和后端的人是如何配合的?
在前后端分离的情况下,后端同学的任务是把数据和文件做持久化存储,并提供操作数据数据的接口。前端同学负责请求数据,然后对数据做处理和适配,最后再把数据呈现出来。其实就是以接口为界限,后端负责接口的制作,前端负责接口的调用。在实际开发中,一般是前后端同学拿到需求后,一起来确定各个功能点需要的接口,然后再逐个细化出各个接口的输入输出字段,最后由后端同学生成一个接口文档。
- 模块化为什么可以提高开发效率?
1.对代码进行封装隔离,提高代码的复用性,就能减少代码量
2.通过逐级对业务的拆解,达到简化业务的作用,降低系统复杂度
3.更好的代码组织方式,能支持团队并行开发,提高团队的效率
4.封闭作用域,减少变量冲突带来的不太容易发现的问题
5.耦合小,利于后期扩展和修改,降低系统的后期维护成本 开发环境:开发环境是程序猿们专门用于开发的服务器,配置可以比较随意,为了开发调试方便,一般打开全部错误报告。
测试环境:一般是克隆一份生产环境的配置,一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。
生产环境:是值正式提供对外服务的,一般会关掉错误报告,打开错误日志。
三个环境也可以说是系统开发的三个阶段:开发->测试->上线,其中生产环境也就是通常说的真实环境。
最后更新: 2018年03月21日 10:51
