前言
大數(shù)據(jù)部發(fā)展到一定的階段,無論是內(nèi)部體系的完善,還是服務(wù)能力對外的暴露,對web端交互能力都有極大的需求,所以對web研發(fā)的訴求其實也是非常大的。
現(xiàn)在不少web后端工程師還是基于傳統(tǒng)的開發(fā)模式,通過服務(wù)端渲染,把服務(wù)端的代碼散布在每個div塊里,但最終又不可避免的還是需要引入js進(jìn)行交互,但采用的卻是最傳統(tǒng)的刀耕火種方式通過<javascript> 引入js,導(dǎo)致js的開發(fā)難度也非常大,沒有包管理,沒有版本管理,組件化,還處于十年前前端階段,更別說給js做單元測試,end2end測試了。所以其實效率是極低的。
前后端分離方式
我們在追求前后端分離的時候,一般而言有三種模式:
- 前端需要用一些前端框架如vue,react以及服務(wù)框架(nodejs),然后后端提供一個或者多個API服務(wù)。
- 把前端框架直接發(fā)布到靜態(tài)服務(wù)器上,然后前端直接和一個或者多個后端API服務(wù)交互。
- 把前端框架直接發(fā)布到對應(yīng)的服務(wù)上,成為對應(yīng)服務(wù)的一部分。
對于一個小而不精的團隊,第一種模式會極大的加大協(xié)作成本,以及重復(fù)開發(fā)成本。有的時候這就好比以前后端強硬分層,Service層和DAO層其實完全一樣的的代碼。第二種模式則需要涉及到跨域或者需要后端再提供一個Proxy服務(wù)(網(wǎng)關(guān))。第三種則完全通過一個web工程師就可以cover住,目前看來應(yīng)該是人效比比較高的一種模式。
為什么Web后端工程師要擁抱前端
為了更好的感受前端的技術(shù),我開發(fā)了一個示例項目,從而讓自己更真實的感受第三種模式的優(yōu)點和缺點。
前面我們提到,采用傳統(tǒng)web開發(fā)的模式,其實是一種刀耕火種方式,并且難以規(guī)避對js的使用,很多情況下js的使用會非常的重。RubyOnRails早年對此也做了很多工作,使得其成為一個很成功的純后端框架,但后端終究是難以取代前端的。
采用傳統(tǒng)web開發(fā)的模式最大的問題是:
- 沒有很好的依賴管理工具。JavaScript世界有海量的庫,沒有很好的引入和管理,這就導(dǎo)致很難從中收益。
- 代碼是不好管理的,和后端完全耦合在一起。
- 測試是困難的,因為div里內(nèi)嵌了大量服務(wù)端代碼,需要服務(wù)端支持。
- 后端是不清晰的,如果純粹API會更好的被組織和管理。
- 最最主要的是,前端框架使得我們只要專心操作數(shù)據(jù),而不是如何操作dom結(jié)構(gòu)。純前端的開發(fā)模式可以讓這個優(yōu)勢更加明顯。
事實上,經(jīng)過我實踐,把自己的一個web項目拆分成一個前端,一個后端API,然后單獨完成,既沒有協(xié)作成本,也能讓自己充分享受兩邊的技術(shù)紅利。當(dāng)然,唯一的缺點是,Web后端工程師又要多學(xué)點東西了。