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

2021-05-16 11:41:52 字數 6218 閱讀 1722

1樓:風花樹

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

對於前後端分離,認識上有個誤區,那就是很多人自稱:老早就分離了,全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變更並不多,多是整片的改變,用這個方案去解決的話,有些牛刀殺雞的感覺。

2樓:百度使用者

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

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

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

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

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

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

3樓:笑喘是病得抽

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

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

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

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

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

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

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

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

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

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

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

前後端分離,關於介面文件,後端是要先寫好介面文件,再進行寫**開發,還是寫完**後再編寫介面文件? 50

4樓:為人愛兮

1、先理清業務流程

2、定義前後端開發的介面規範。比如json的格式,url的格式3、定義介面文件,這裡的介面文件一般就是對應後臺的實體reqvo(呼叫後臺介面《控制器》訪問的實體)和返回給前臺的respvo(前臺呼叫介面的返回的實體)。注意一般respvo都會有在後臺做一個統一的處理為resultvo(這個規範在2中要定義好,比如:

錯誤碼,錯誤描述,請求的url,請求時間,以及實體t《這個實體才是真正的respvo和業務相關,這個一般都是實體》)

4、定義介面文件是在瞭解業務流、資料流基礎之上完成的。有了這個介面文件(其實就是定義實體的過程和對應的json)前後端的開發基本按照這個文件去開發。介面文件會有版本迭代,一般放到svn上,供所有開發人員閱覽

5、現在一般系統用到的資料庫都不會是單純mysql了。還有redis,mongo、es等。這些個人感覺都是在十分了解業務的情況和系統架構下去設計的。

後臺運用這些工具去完成介面功能的實現已經系統功能和效能的實現。這個和介面文件先後順序還真不好說,個人覺得都可以。

6、業務流-資料流-資金流。去了解和設計系統。

5樓:匿名使用者

兩種方式都是可以的,針對不同的團隊有不同的選擇

一般對於需求分析,設計能力比較強,的團隊,推薦使用契約優先的設計模式,也就是先編寫介面文件,規定好介面的 請求型別/引數數量/引數型別/返回結果的格式然後搭建模擬服務,然後前後端分別開發,但是這種方式需要比較高的設計能力,以應對需求的變更,設計時需要考慮的方面很多,適合於成熟的團隊.

如果需求不確定性較高,甚至頻繁變動,上面這種方式,就會有侷限性,頻繁的需求變更帶來的就是頻繁的介面契約變更.會拖慢前後端的開發進度,這種時候可以採用,先開發後編寫文件的流程,由於頻繁的發生變更,這時候團隊的溝通顯得很重要,專案管理人員一定要十分注意前後端開發的溝通效率,不然專案進度會變得不可控

6樓:真的老了玩不動

先設計資料庫,你寫介面就是訪問資料庫,返回 資料庫的資料和自己處理的拼接而成的資料。

再根據返回的資料寫介面文件。例如你少了條件就返回 0 ,成功訪問資料庫並處理 返回1, 其他的什麼情況返回什麼數字。 這些返回的數字,就寫在文件裡,返回什麼,代表什麼意思。

大概這樣子 。

前後端分離開發是個什麼概念,跟我們用的框架有什麼不同啊

7樓:安徽新華電腦專修學院

就是後端給 api ,客戶端渲染。完全的前後端分離也是一步一步發展過來的。

如何進行前後端分離

8樓:匿名使用者

在不使用vue ,react ,anglar這類的框架的情況下,前後端分離應該如何做?

需求是這樣:

web 前後端分離的意義大嗎

9樓:黑馬程式設計師

什麼是前後端分離?前後端分離說白了就是把前端和後端分成兩個工程,由不同的團隊負責開發,這樣從工程和職責的角度上都有分開,這樣,後端偏向於提供單純的api介面,前端就是呼叫api介面進行展示和業務呼叫。

這樣不僅將頁面渲染和業務邏輯從server剝離開來,將頁面渲染放給前端,甚至放給瀏覽器;將業務邏輯放給後臺專心搞業務,降低了他們之間的耦合性,而且從職責上進行了分明,更適合大專案和大團隊管理和開發。

**開發中的前後端分離的問題

10樓:醫政司

對於前後端分離,認識上有個誤區,那就是很多人自稱:我們老早就分離了,全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變更並不多,多是整片的改

變,用這個方案去解決的話,有些牛刀殺雞的感覺。

關於b類專案的元件化,我之前那個沒寫完的系列是關於它的,但經過最近一年多的思考,我又覺得需要再重新寫一篇東西了。感謝你的問題提醒了我,這就寫。

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

你好,懷孕28周後胎兒的腎盂分離不超過10mm就算正常,羊水最大深度正常在40 80mm之間,羊水指數就是子宮內四個角的羊水深度相加,正常在8.0 18cm之間。如何處理好前後端分離的 api 問題 意義很大,但是你的問題本身認識有偏差。對於前後端分離,認識上有個誤區,那就是很多人自稱 老早就分離了...

如何通過nodejs來實現php的前後端分離

原本返回html的php,現只返回資料,資料交由node拼接html,node和php必然要http,因為php web上有很多解決方案可以套用,比如負載均衡。概括起來兩個方法吧。方法一 string fdjborsnabcdtghrjosthabcrgrjtabc string preg repl...

關於api的問題

hdbc是用sqlallochandle函式得到的連結控制代碼第二個引數是指定連結屬性的輸入字串 第三個引數是輸入字串的長度 第四個引數是輸出字串的指標 第五個引數指定輸出字串的長度 第六個引數是實際返回字串的長度 browseresult所指向的函式返回的字串中含有形如 server server...