以前曾经写过一个后台是用java写的有前后台页面的网站。
被朋友吐槽说我那个网站不是用的前后端分离,很low。说没有用请求api接口,而且用了jsp來改写html,说前后端分离不需要这样套模版的。
问题:
0.现在是不是差不多所有公司都用前后端分离了?没试过这种开发模式咋办…
1.是不是前后端分离与传统的开发其实主要就是以上那些区别?
2.工作中如果后端同事写的接口文档比较难看懂不就坑了前端?
3.看到别人github有前后端分离项目,为啥运行时前后台页面都是同一个端口号如9000,不是应该前端首页localhost:3000/index 后端首页localhost:9000/index这样分开才叫前后端分离吗? 都用9000端口那和我之前写网站访问前后台的方式一样阿…
概念其实在网上了解过,但怕很多地方还是理解错,所以上来求指正
0 NO 前后端分离是趋势,但是也还存在问题(例如SEO,搜索引擎难以识别等),短时间内不可能取代不分离的
1 主要区别是,数据和表现分离,只需要静态的html和动态的接口(例如jsp),数据在浏览器端实现动态加载
2 理想情况是,先出文档(前后端都认可),然后后端、前端都按照文档来,一切以接口规定的为准
3 跟端口没一毛钱关系,重点在于接口!靠 API 来分离前后端,解决前后端大团队、多版本、复杂功能协作的问题
补充:
可以参考淘宝前端的设计,在 java 接口和 html 输出之前用 NodeJS 代理一层,暂时能解决 SEO 的问题
定义好了接口,前端就可以用不用等后端,直接用模拟的数据格式,方便地进行前端测试了
说重点,API 相比前后端混写、模板引擎之类的东西的好处:
方便设计、开发、测试(前端不再需要依赖后端,后端也不需要依赖前端,就可以各干各的,独立测试代码)
方便记录和统计功能使用(后端相同功能的入口位置统一,不同功能的位置也可以合理有序地组织)
方便修改和版本控制等(后端可以提供多版本的 API,不需要修改已有代码,不影响已有 API 的功能)
最重点的是:
你的Team要是分工不明确、人少、功能简单直接、代码修改不多,就完全不需要分离,就酱。
最明显的:
前端代码不用被后端粘贴来粘贴去了,后端的相同代码,也不需要各种位置粘贴来粘贴去了。
隐藏的好处:
到时候出了问题,照着 API 设计文档一对比,就知道是前端用的不对,还是后端写的不对,分分钟找到背锅侠。
Update 2017/10/13:
其实很有一个很大的优势忘了说……
以后网站的功能,要做Windows、Mac、Android、IOS、Linux的客户端,或者需要做成批量处理的脚本,或者需要和别的什么系统对接,什么微信公众号、小程序之类的,等等等等……
有API在就能瞬间解决问题!就这个提供给前端的API!一样的!调用这个接口就行了!