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