如何處理好前後端分離的api問題

2021-03-03 21:11:08 字數 3880 閱讀 7572

1樓:匿名使用者

對於前後端分離,認識上有個誤區,那就是很多人自稱:老早就分離了,全ajax,使用angular或者什麼什麼就可以了。

這個說法是不合適的,打個比方,別人問的是「如何解決家禽把蛋生在水草邊的問題?」,但實際上人家養的是鴨子,答題的卻是養雞的,所以回答「不讓去水邊就行了」,這顯然不在點子上。

如何處理好前後端分離的 api 問題

2樓:笑喘是病得抽

意義很大,但是你的問題本身認識有偏差。

對於前後端分離,認識上有個誤區,那就是很多人自稱:老早就分離了,全ajax,使用angular或者什麼什麼就可以了。

這個說法是不合適的,打個比方,別人問的是「如何解決家禽把蛋生在水草邊的問題?」,但實際上人家養的是鴨子,答題的卻是養雞的,所以回答「不讓去水邊就行了」,這顯然不在點子上。

這兩年業界說的前後端分離,是限於偏展示類的系統(用a代替),而不是應用、管控類web專案(用b代替),在b類專案裡,前後端是天然分離的,對此,除了少部分後端開發人員,基本所有人的認識都是一致的。上一段中這樣回答的人一般都是隻做b類專案,在b類專案裡,前後端分離是共識,不需要討論。

那麼,剩下的問題就是討論a類專案的前後端分離了。這個問題的核心在什麼地方呢,在於模板的與資料結合的位置,以及,模板的控制權在誰手裡。經過這兩年的討論,基本上我們可以達成的共識就是:

模板應當由前端人員去控制,主要原因有兩方面:

- 效能優化(尤其是外部資源的管理與釋出,請求合併等等)

- 協作的順暢性(已形成模板的介面片段的返工等問題)

那麼,模板到底應該在什麼地方跟資料結合?

這個問題就比較折騰了,有部分人嘗試像b類專案那樣,使用js模板,然後在瀏覽器端執行,這是存在一些問題的,比如說seo不友好,首屏效能不夠,尤其對於首頁dom量很大的電商類**,差距很明顯。

所以還是得把主要的模板放在服務端來執行。在這個過程中,阿里作了一些嘗試,那就是引入node層,在這一層把模板與資料進行合成,然後瀏覽器拿到的就是生成好的html了,但也不是所有html都是這麼生成好的,還是會有一些內容等到了瀏覽器之後,再用js去載入和生成。

關於api的前後端分離的糾結?

3樓:風花樹

意義很大,但是你的問題本身認識有偏差。

對於前後端分離,認識上有個誤區,那就是很多人自稱:老早就分離了,全ajax,使用angular或者什麼什麼就可以了。

這個說法是不合適的,打個比方,別人問的是「如何解決家禽把蛋生在水草邊的問題?」,但實際上人家養的是鴨子,答題的卻是養雞的,所以回答「不讓去水邊就行了」,這顯然不在點子上。

這兩年業界說的前後端分離,是限於偏展示類的系統(用a代替),而不是應用、管控類web專案(用b代替),在b類專案裡,前後端是天然分離的,對此,除了少部分後端開發人員,基本所有人的認識都是一致的。上一段中這樣回答的人一般都是隻做b類專案,在b類專案裡,前後端分離是共識,不需要討論。

那麼,剩下的問題就是討論a類專案的前後端分離了。這個問題的核心在什麼地方呢,在於模板的與資料結合的位置,以及,模板的控制權在誰手裡。經過這兩年的討論,基本上我們可以達成的共識就是:

模板應當由前端人員去控制,主要原因有兩方面:

- 效能優化(尤其是外部資源的管理與釋出,請求合併等等)

- 協作的順暢性(已形成模板的介面片段的返工等問題)

那麼,模板到底應該在什麼地方跟資料結合?

這個問題就比較折騰了,有部分人嘗試像b類專案那樣,使用js模板,然後在瀏覽器端執行,這是存在一些問題的,比如說seo不友好,首屏效能不夠,尤其對於首頁dom量很大的電商類**,差距很明顯。

所以還是得把主要的模板放在服務端來執行。在這個過程中,阿里作了一些嘗試,那就是引入node層,在這一層把模板與資料進行合成,然後瀏覽器拿到的就是生成好的html了,但也不是所有html都是這麼生成好的,還是會有一些內容等到了瀏覽器之後,再用js去載入和生成。

所以這一定會是一個混合方案,同一個系統中存在兩種模板,一種在服務端執行,一種在瀏覽器中執行,互為補充。

至於說這個方案中,是否中間層一定要是node,無所謂,只要是能正常做web專案的東西都可以,這個還是要看所在企業的技術積累方向,當然node做這塊是有一些優勢的,比如對前端人員的語言友好性,前後端模板的通用性等等,但這些都是細節,重點還是整體方案和流程。

這時候回頭看問題中的這句:

> 前後端分離的意思是,前後端只通過 json 來交流,元件化、工程化不需要依賴後端去實現。

相信這裡對前後端的限定是以瀏覽器為準的,但事實上,a類專案中,前後端的分界一定要延伸到伺服器端的模板層,也就是在這一層裡,把各種**的資料整合到模板中,這個資料未必是json格式的,會存在有json,xml,特定的二進位制等等。

元件化這個話題就更復雜了,在剛才組織形式中,很難說出究竟什麼才是元件。是某個商品的模板嗎?是資料嗎?

是資料和模板的結合體嗎?沒法回答。在此,說一句自己的看法:

像電商這種專案的前端部分,基本不存在元件的概念,甚至不存在元件化的價值,因為這裡面可複用的東西太少了,也不易提取,大多數東西都是不帶邏輯的介面模板。

最近因為reactjs的流行,帶來了一個isomorphic的概念,這是一種很有意義的探索,但是否能解決這類問題,尚不得而知,根據我的理解,它對b類專案是較好的補充方案,但對a類專案暫時還缺乏可用性,因為a類專案中,執行期的dom變更並不多,多是整片的改變,用這個方案去解決的話,有些牛刀殺雞的感覺。

4樓:百度使用者

這是初做前後端分離的團隊都有的疑問。

其實常用的方法是「基於文件程式設計」或者叫「基於約定程式設計」,這裡的「文件」或者「約定」就好像支付寶一樣,是買賣雙方都認可的平臺。

「文件」/「約定」也得是前後端都認可的內容,所以需要解決的問題是相互信任,大家先坐下來,共同商議下這個問題需要哪些api,這些api走什麼規範,欄位都是什麼。定下了如上問題後,就得把文件落地,之後就大家分開各自按照文件開工了。

因為文件已經固定,大家各自按照文件進行開發,聯調時,哪個部分出了錯,一目瞭然。無需扯皮。

當然,根據專案的進展,api可能隨時根據新需求變化,那定期的小會議用來sync各種資訊也是必要的。

如何處理好前後端分離的 api 問題

5樓:笑喘是病得抽

意義很大,但是你的問題本身認識有偏差。

對於前後端分離,認識上有個誤區,那就是很多人自稱:老早就分離了,全ajax,使用angular或者什麼什麼就可以了。

這個說法是不合適的,打個比方,別人問的是「如何解決家禽把蛋生在水草邊的問題?」,但實際上人家養的是鴨子,答題的卻是養雞的,所以回答「不讓去水邊就行了」,這顯然不在點子上。

這兩年業界說的前後端分離,是限於偏展示類的系統(用a代替),而不是應用、管控類web專案(用b代替),在b類專案裡,前後端是天然分離的,對此,除了少部分後端開發人員,基本所有人的認識都是一致的。上一段中這樣回答的人一般都是隻做b類專案,在b類專案裡,前後端分離是共識,不需要討論。

那麼,剩下的問題就是討論a類專案的前後端分離了。這個問題的核心在什麼地方呢,在於模板的與資料結合的位置,以及,模板的控制權在誰手裡。經過這兩年的討論,基本上我們可以達成的共識就是:

模板應當由前端人員去控制,主要原因有兩方面:

- 效能優化(尤其是外部資源的管理與釋出,請求合併等等)

- 協作的順暢性(已形成模板的介面片段的返工等問題)

那麼,模板到底應該在什麼地方跟資料結合?

這個問題就比較折騰了,有部分人嘗試像b類專案那樣,使用js模板,然後在瀏覽器端執行,這是存在一些問題的,比如說seo不友好,首屏效能不夠,尤其對於首頁dom量很大的電商類**,差距很明顯。

所以還是得把主要的模板放在服務端來執行。在這個過程中,阿里作了一些嘗試,那就是引入node層,在這一層把模板與資料進行合成,然後瀏覽器拿到的就是生成好的html了,但也不是所有html都是這麼生成好的,還是會有一些內容等到了瀏覽器之後,再用js去載入和生成。

如何處理前後桌之間的關係,怎樣處理好前後桌和同桌之間的關係

前桌是你的一層護甲,當然不一定生效,但是他常常在輪流回答問題時提供一定緩衝時間所以一定不要讓他太好學,還有要有大體型。同桌那是各種關鍵時刻支援好手,關係一定要鐵,不然就是補刀黑刀,最是夠思維敏捷動作迅速才能給予最有效的幫助。後排看不見但是也很重要,他總在後面默默的注視你,你的舉動都會落在他眼裡,你不...

如何處理好舍友的關係,如何處理好室友關係?

1.與舍友統一作息,在日常起居生活給予包容和理解 一個宿舍有三四個或五六個甚至更多的人在一起生活,宜用統一的作息時間加以調整。只有大家協調一致 共同遵守,才能減少爭執,消除摩擦,維持正常的生活秩序。如果你是 夜貓子 晚上睡得很遲,待宿舍成員都睡了,才洗漱睡覺,這樣就容易驚醒其他人,影響別人休息。久而...

如何處理好老婆和老媽之間的關係,如何處理好老婆和老媽之間的關係

額。這需要媳婦尊重老的,而老的又會疼媳婦。如果誰見了誰都覺得討厭的話,那沒辦法了 寵愛老婆,尊重老媽。最好的辦法,分開住,距離產生美。聰明男人如何處理老婆和老媽之間的關係?其實老婆和老媽吵架很多時候都是為了男人,本來這兩個女人沒有任何關係。為了一個共同的目標,為了一個共同的男人,這兩個毫無血緣關係和...