Ⅰ 怎麼理解前後端分離
對於前後端分離,認識上有個誤區,那就是很多人自稱:我們老早就分離了,全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類項目的組件化,我之前那個沒寫完的系列是關於它的,但經過最近一年多的思考,我又覺得需要再重新寫一篇東西了。感謝你的問題提醒了我,這就寫。
Ⅱ 什麼是前後端分離為什麼分離
在不使用vue ,react ,anglar這類的框架的情況下,前後端分離應該如何做?
需求是這樣:
前端寫html頁面(非單頁面應用),
index 首頁
about 關於我們
newslist 新聞列表
newsdetail 新聞詳情
proctlist 產品列表
proctdetail 產品詳情
後台只提供json數據
那麼
1、前端數據如何渲染?
2、頁面跳轉是否必須使用路由?(不想使用路由)
3、頁面間的數據傳遞如何做,比如:列表頁到詳情頁的參數傳遞如何做?
Ⅲ 對於前後端分離項目,還適合使用springmvc嗎
不知道你說的前後端分離
是指前後端有關系分開來開發
還是指前後端沒有關系
如果是前後端有關系分開開發
Spring MVC適合使用
如果前後端沒有關系
可以考慮使用其它技術或方式實現
Ⅳ web開發中,怎樣做到前後端分離
一般情況下
前端的工作:實現整一個前端頁面以及交互邏輯,以及利用ajax與伺服器(中間層)交互,使用javascript的模板技術
後端的工作:提供API介面,與資料庫交互
Ⅳ 前後端分離,怎麼做SEO優化
可以利用現在的前端框架做同構支持(目前熱門的前端框架都支持同構)。在初次網址訪問時由伺服器渲染頁面內容,Client端資源做CDN,這樣就可以支持SEO優化了。
如果使用的是angularjs的話,可以看看Prerender - AngularJS SEO, BackboneJS SEO, or EmberJS SEO
Ⅵ 前後端分離必須用到 nodejs嗎
AngularJS是前段的基於JS的MVC框架,NodeJS是服務端的JS框架,並不存在前後端分離的問題。 簡明的解釋是使用NodeJS作為服務端的時候前端不是必須用angularJS的,同樣angularJS也可以搭配PHP,Java等服務端語言使用。
node.js是用於伺服器端,做後台程序的。AngularJS是前端框架,主要用於數據綁定,不需要安裝,只要在標簽導入就能用了。
Ⅶ web為什麼要前後端分離優點是什麼
解耦,降低耦合度,而且前後端分離可以提升一些後端的開發效率。
Ⅷ 前後端分離後,html放哪裡
用框架的話每一種框架放的位置都不一樣,Thinkphp裡面是MVC,HTML放在V(View)裡面
Ⅸ 什麼是前後端,有沒有前後端分離,還有如何區分mvc與前後端分離
1>>前後端分離的意思是,前後端只通過 JSON 來交流...
同意其他幾位,JSON 只是一種可選的協議,而不是唯一,也未必是前後端通信的最佳方案。
2>>組件化、工程化不需要依賴後端去實現...有哪些好處或弊端?
前端的組件化、工程化,js 等代碼越來越胖,有點類似於過去 C/S 時代的 fat client。所以這個問題相當於,計算是主要放在 client 好,還是 server 好?
Fat client 好,還是 thin client 好,取決於所開發應用、產品、系統的類型、規模和特點,其中一些權衡因素主要包括軟體復雜度、人機交互模型、網路帶寬、server 與 client 的處理能力等等。無所謂好壞,適合就好。
Client-side MVC 確實是一個趨勢,Web 架構設計上的一個創新。
Ⅹ web開發中,什麼是前後端分離
優秀的WEB架構,必定會應用一些分層設計的思想,這樣可以讓系統開發起來更靈活,同時後期維護也比較方便。
前端的頁面基本都是使用 JavaScript 的富戶端頁面,主要應用的框架用,jquery、jquery ui、knockout js、Durandal。
自己封裝的 UI 組件,後端的主要採用到的技術有 OData、MVC、Linq to SQL 以及自己寫的一個許可權管理組件,資料庫採用的是 SQL Server 2005。