一、前后端分離的基本概念
前端后端交互,基本上是基于http+json的形式。后端專注于提供數(shù)據(jù),更重要職責(zé)是維護(hù)系統(tǒng)架構(gòu)的穩(wěn)定,保證數(shù)據(jù)的安全。前端人員專注于交互,快速響應(yīng)UI的變化。
雙方交互基于http+json接口,后端人員基本只對(duì)接口負(fù)責(zé),無(wú)需負(fù)責(zé)js和html的代碼。前端人員只對(duì)界面展示交互負(fù)責(zé),對(duì)于后端http接口如何提供正確的數(shù)據(jù)無(wú)需負(fù)責(zé)。
前后端分離的主要概念就是:后臺(tái)只需提供API接口,前端調(diào)用AJAX實(shí)現(xiàn)數(shù)據(jù)呈現(xiàn)。
二:前后端分離的意義
1:徹底解放前端,前端不再需要向后臺(tái)提供模板或是后臺(tái)在前端html中嵌入后臺(tái)代碼
2:提高工作效率,分工更加明確,前后端分離的工作流程可以使前端只關(guān)注前端的事,后臺(tái)只關(guān)心后臺(tái)的活,兩者開(kāi)發(fā)可以同時(shí)進(jìn)行,在后臺(tái)還沒(méi)有時(shí)間提供接口的時(shí)候,前端可以先將數(shù)據(jù)寫(xiě)死或者調(diào)用本地的json文件即可,頁(yè)面的增加和路由的修改也不必再去麻煩后臺(tái),開(kāi)發(fā)更加靈活。
3:局部性能提升,通過(guò)前端路由的配置,我們可以實(shí)現(xiàn)頁(yè)面的按需加載,無(wú)需一開(kāi)始加載首頁(yè)便加載網(wǎng)站的所有的資源,服務(wù)器也不再需要解析前端頁(yè)面,在頁(yè)面交互及用戶體驗(yàn)上有所提升。
4:降低維護(hù)成本,通過(guò)目前主流的前端MVC框架,我們可以非常快速的定位及發(fā)現(xiàn)問(wèn)題的所在,客戶端的問(wèn)題不再需要后臺(tái)人員參與及調(diào)試,代碼重構(gòu)及可維護(hù)性增強(qiáng)。
5、有利于產(chǎn)品的組件化,由于前后端分離,有利于迅速二次開(kāi)發(fā)推出新產(chǎn)品。
6、減少后端新人上手項(xiàng)目的難度,提高產(chǎn)品的可維護(hù)性和可拓展性。
7、基于原有后端接口,有利于后期在安卓,ios,微信等其他不同平臺(tái)進(jìn)行產(chǎn)品二次開(kāi)發(fā)。
三:實(shí)現(xiàn)分離的基本合作思路
1、評(píng)審階段:產(chǎn)品經(jīng)理與前后端進(jìn)行需求評(píng)審,各自理解清楚自己的業(yè)務(wù)量以及聯(lián)調(diào)的工作量,評(píng)估開(kāi)發(fā)時(shí)間。
2、開(kāi)發(fā)準(zhǔn)備階段:前后端一起商量需求中需要聯(lián)調(diào)的部分,進(jìn)行接口的口頭協(xié)議交流。
3、接口定義階段:前后端一方中,前后端中的一方根據(jù)之前的口頭協(xié)議擬定出一份詳細(xì)的接口,并編寫(xiě)服務(wù)接口定義,完成后由另一方確認(rèn)。有疑問(wèn)的地方重新商量直至雙方都沒(méi)有問(wèn)題。
4、開(kāi)發(fā)階段:雙方根據(jù)協(xié)商出來(lái)的接口為基礎(chǔ)進(jìn)行開(kāi)發(fā),如在開(kāi)發(fā)過(guò)程中發(fā)現(xiàn)需要新增或刪除一些字段,重復(fù)步驟3。
(注意:前端在開(kāi)發(fā)過(guò)程中記得跟進(jìn)接口,mock數(shù)據(jù)進(jìn)行本地測(cè)試,后端修改接口需要跟前端協(xié)商清楚再改。 )
5、聯(lián)調(diào)階段:雙方獨(dú)自的工作完成,開(kāi)始前后端聯(lián)調(diào),如在聯(lián)調(diào)過(guò)程發(fā)現(xiàn)有疑問(wèn),重復(fù)步驟3,直至聯(lián)調(diào)完成。
6、提測(cè)階段:將完成的需求提給測(cè)試人員,讓其對(duì)該需求進(jìn)行測(cè)試,如發(fā)現(xiàn)問(wèn)題,及時(shí)通知開(kāi)發(fā)并讓其修改,直至需求沒(méi)有bug。
7、發(fā)布階段:前后端雙方在保證步驟1-5都沒(méi)有問(wèn)題了,進(jìn)行各自的代碼發(fā)布,完成后由測(cè)試人員在線上進(jìn)行相應(yīng)的測(cè)試,如果有bug,重復(fù)步驟6和7,直至成功上線。
四:相關(guān)問(wèn)題及解決建議
1、前后端分離會(huì)帶來(lái)前后端溝通成本的問(wèn)題,相比不分離,能減少開(kāi)發(fā)的總時(shí)間嗎?
能減少開(kāi)發(fā)的總時(shí)間,理由如下:
(1)、基于對(duì)接口負(fù)責(zé)的原則,前后端分離后,只需做好各種熟悉領(lǐng)域的事情。
后端專注于提供數(shù)據(jù),更重要職責(zé)是維護(hù)系統(tǒng)架構(gòu)的穩(wěn)定,保證數(shù)據(jù)的安全。
前端人員專注于交互,快速響應(yīng)UI的變化。
(2)、前后端分離確實(shí)會(huì)帶來(lái)溝通成本的問(wèn)題,這方面需要前后端遵守合作流程,適應(yīng)新的合作模式,可以提高溝通效率??傮w而言,利大于弊。
2、接口定義階段,接口誰(shuí)定?
回答:建議后端開(kāi)發(fā)人員定,需要前端人員評(píng)審。
3、聯(lián)調(diào)階段,前端是基于后端的開(kāi)發(fā)人員的機(jī)器聯(lián)調(diào),還是基于后端一個(gè)開(kāi)發(fā)公共環(huán)境聯(lián)調(diào)?
回答:前端應(yīng)該基于后端的一個(gè)公共開(kāi)發(fā)環(huán)境聯(lián)調(diào),理由如下:
(1)、開(kāi)發(fā)過(guò)程中,后端開(kāi)發(fā)人員機(jī)器環(huán)境不穩(wěn)定,后端人員在調(diào)速中會(huì)時(shí)不時(shí)進(jìn)行斷點(diǎn)調(diào)試,重啟機(jī)器的服務(wù)器。
(2)、公共開(kāi)發(fā)環(huán)境由開(kāi)發(fā)人員負(fù)責(zé)更新程序,并需要在更新程序前把代碼提交代碼倉(cāng)庫(kù),這樣有利于前端有一個(gè)實(shí)時(shí)更新,穩(wěn)定的調(diào)試環(huán)境。