架構(gòu)師:“前后端分離還不會用,那也太out了”
今天:公司的架構(gòu)師說:項目要采用前后端分離來說,vue+golang ,各位先了解一下技術(shù)棧!不要說不會用哦,目前非常流行!
確實,這幾年,angular、react、vue這些前端框架非常的火,用途之廣泛,有統(tǒng)一大前端之勢!
web、APP、小程序、公眾號,沒有不能做的,一次開發(fā),多端運行!
從事互聯(lián)網(wǎng)行業(yè)的不了解幾個前端框架,就有抬不起頭的感覺了,
作為一個從業(yè)多年的老程序員,其實開始我是排斥的,一個人可以 搞定的事情,為什么非要分開,浪費人力,還要對接調(diào)試,這不是沒事找事嗎!呵呵,請原諒我老人對新事物接受慢,需要時間,
當我仔細思考一下,其實事物總是向好的方向發(fā)展的。
今天就看看到底有哪些優(yōu)勢:
1. 前后端耦合更低
前端工程師負責頁面開發(fā),前端設(shè)備兼容性,用戶體驗等;
后端工程師負責系統(tǒng)性能、擴展性、負載能力、分布式集群部署等;
分工更明晰,專業(yè)性更高。
以前流行MVC架構(gòu),不論是什么語言,都有大把的mvc框架可以用,都是一個語言搞定前后端;
比較流行的有Java的spring ,Python的django,php的Laravel、thinkphp、ci等,
如圖:
mvc
而現(xiàn)在的前后端分離MVVM,顯得更加的徹底。一般通過網(wǎng)絡(luò)請求的接口,把返回的數(shù)據(jù)寫在ViewModel里面,ViewModel再通知Controller來取得相應(yīng)的數(shù)據(jù),并顯示在view上。像vue這些框架利用雙向綁定技術(shù),使得 Model 變化時,ViewModel 會自動更新,而 ViewModel 變化時,View 也會自動變化。
mvvm
2. 提高了開發(fā)效率
以前的開發(fā)流程:
a. 開會討論需求;
b. UI進行界面設(shè)計;
c. 將設(shè)計圖切圖做成html;
d. 后端工程師整合頁面;
e. 功能測試;
f. 部署上線;
一旦需求有改動,UI有改動,后面的所有流程都要重新走一遍,做過的都知道什么感覺!
而前后端分離后,開發(fā)模式是這樣的:
a. 開會討論需求;
b. UI進行界面設(shè)計;
c. 前后端工程師訂好接口,開始各自開發(fā)
d. 接口調(diào)試;
e. 功能測試;
f. 部署上線;
后面頁面的修改、優(yōu)化,后端可能不需要修改了。
3. 更容易開發(fā)部署升級
前端靜態(tài)頁面,nginx進行支持,并做cdn緩存,
后端服務(wù)化,各自用熟悉的語言開發(fā),升級對用戶影響越來越小。
4. 多端應(yīng)用,行業(yè)發(fā)展趨勢
以前的應(yīng)用以web為主,最多有個mobile端,而現(xiàn)在用戶設(shè)備多元化,同樣的數(shù)據(jù)需要在不同設(shè)備展現(xiàn),如果數(shù)據(jù)和頁面在一起,非常的不方便。
而分離后,后端api只需要提供json數(shù)據(jù),提高了代碼重用,不關(guān)心頁面,前端怎么展示和修改也不會影響到后端。
多端訪問
5. 提高后端擴展性
現(xiàn)在的應(yīng)用,不管用戶量多少,都考慮分布式集群部署,用戶身份驗證,數(shù)據(jù)緩存,圖片文件訪問等都沒有單體應(yīng)用那么好控制,每個功能都向服務(wù)化轉(zhuǎn)變,性能和擴展性是后端考慮的重點,而這些和前端關(guān)系不大,前后分離使前端免受后端變動的影響。
也說一下缺點:
(1)開發(fā)維護成本高
維護部署事情多,免不了增加人手,對于老板來說,怎么做不重要,他更關(guān)心成本,遇到小氣的老板,還是采用更簡單的方法為妥,否則就等著加班吧。其實對很多應(yīng)用,根本遇不到很大的用戶量,這時采用簡單架構(gòu)可能更好。
(2)前端難度加大:
框架的百花齊放,也讓前端都在學習框架,而對js原生的東西了解的越來越少了,之前面試的前端,只知道vue、react,對javascript的原型繼承、事件驅(qū)動、異步執(zhí)行隊列這些概念了解甚少,因為前端更新速度快,也導(dǎo)致前端開發(fā)者學習新框架疲于奔命,原理更加不了解。
好了,如果你是架構(gòu)師,你會選擇怎樣的架構(gòu)呢!