這里希望做到的分離是:
想知道有沒有好的方案,或者是否有必要這樣做
個(gè)人覺得前后端分離是一個(gè)未來趨勢。ajax和誕生使前端工作從原始社會(huì)的時(shí)期進(jìn)入了農(nóng)業(yè)社會(huì),而node的誕生使前端進(jìn)入了工業(yè)化時(shí)期,前端不用再依靠后端才能實(shí)現(xiàn)一個(gè)頁面的渲染,前端承接了后端人員的頁面渲染邏輯任務(wù),自成一個(gè)項(xiàng)目,能更大的實(shí)現(xiàn)一個(gè)前端項(xiàng)目的復(fù)用,以及更快速的把一個(gè)網(wǎng)站新型UI的更替,雙方工作人員能更加明確雙方的工作任務(wù),雙方的工作可以同時(shí)進(jìn)行不必相互牽制與扯皮。
不過我同事說了一個(gè)有趣的真理::
前后端分離只是為了更好的壓榨程序員的勞動(dòng)力。本來前后端一起開發(fā)就很影響開發(fā)效率,分離開就各干各的,項(xiàng)目就可以并行開發(fā),爭取早上線,早掙錢!
最后附上作者張亞濤的文章:https://segmentfault.com/a/11...
前后端分離、服務(wù)端渲染,都有它的好處和必要性,當(dāng)然也有適用場景,之前回答過類似的問題,原問題傳送門《討論一下前端開發(fā)模式》
原問題如下:
目前有兩種方案:
請(qǐng)大家各抒己見,來探討一下這兩種開發(fā)模式哪種比較好,請(qǐng)說出原因。
回答如下:
兩種方式各有適應(yīng)場景,下面就簡單說下各自的優(yōu)缺點(diǎn)、適用場景。
node作為前端服務(wù)渲染頁面,頁面寫的是后端模板。用node跟服務(wù)器php進(jìn)行交互。
優(yōu)點(diǎn):
獲取數(shù)據(jù)-> 渲染頁面 -> 返回頁面的時(shí)間相對(duì)方案二要快。缺點(diǎn):
適用場景:比如新聞門戶、博客等。
node+react,node作為服務(wù)端只提供服務(wù),頁面由客戶端渲染,交互邏輯也是寫在react組件中,根據(jù)react的0DOM操作會(huì)提高頁面的渲染速度。
優(yōu)點(diǎn):
缺點(diǎn):
加載js(包括react)-> 拉取數(shù)據(jù) -> 渲染組件 相比方案一,速度一般會(huì)較慢,因?yàn)榫W(wǎng)絡(luò)來回比較多。適用場景:重業(yè)務(wù)操作、交互較多的站點(diǎn)。比如管理后臺(tái)、富客戶端應(yīng)用。
前后端分離確實(shí)是一個(gè)比較不太好處理的問題,關(guān)于這點(diǎn),阿里的同學(xué)有在研究,附上鏈接http://blog.jobbole.com/65513/
我說下我們公司的前后端分離方案吧
要做到前后端分離的話,那么必須要求前端開發(fā)人員將數(shù)據(jù)加載的工作承接過來,后端的同學(xué)只負(fù)責(zé)提供接口以及后端業(yè)務(wù)實(shí)現(xiàn),可以客戶端以及前端共用一套接口
我們的前端頁面是純靜態(tài)的html文件,通過ajax調(diào)用接口獲取數(shù)據(jù)后,使用vue框架進(jìn)行渲染
vue提供了一套模板渲染的方式,使用方法類似jsp,php這樣的模板引擎,速度還算理想,可以嘗試一下看看。
另外,前端人員盡量功能做到前端工程化,如果純html進(jìn)行編寫的話,很多后端類似jsp的特性會(huì)滿足不了,比如include頁面,但是前端可以使用gulp進(jìn)行前端的工程化處理,能夠解決一些px轉(zhuǎn)rem,圖片壓縮,文件include等一些提升效率的方案。
這樣一來前端的部署就簡單多了,而且本地不需要啟動(dòng)服務(wù)器,打開頁面就可開發(fā)調(diào)試
至于線上部署,完全可以部署到nginx下面。
我覺得還是有必要分,業(yè)務(wù)簡單還好說,業(yè)務(wù)復(fù)雜起來,一個(gè)是可能會(huì)相互依賴或者相互扯皮,另一個(gè)是并發(fā)之類的??梢钥紤]用中臺(tái)(阿里的叫法?),就是用node或者php這樣的輕后臺(tái)處理調(diào)用后臺(tái)接口或者是拉頁面數(shù)據(jù)這樣的活,進(jìn)一步的話可以嘗試php掛模板或者直接搞vue、react這類MVVM配合node搞同構(gòu),這樣把渲染放到后端,就沒必要等頁面框架出來后再拉數(shù)據(jù)渲染一遍,提高了效率降低了用戶等待(純用戶信息頁連ajax庫都可以省了),也直接避開了跨域的坑,另外后臺(tái)細(xì)節(jié)也一并藏起來了(比如都用阿里云的話,直接內(nèi)網(wǎng)通信就得),數(shù)據(jù)處理放在中臺(tái),前臺(tái)可以直接調(diào)整想要的東西,跟后臺(tái)也少了對(duì)接復(fù)雜度,比純粹用HTML+CSS+JS要?jiǎng)澦愫芏唷?/p>
簡單回答一下吧,我贊成 @ypinchina 的回答,前后端分離并不是什么高大上的事情。
其實(shí)前后端分離的本質(zhì)就是誰去渲染頁面,傳統(tǒng)的方式是后臺(tái)渲染數(shù)據(jù),甚至后臺(tái)也會(huì)用 ajax 調(diào)接口處理數(shù)據(jù)。
分離的話就是前端渲染數(shù)據(jù),所以只要用一個(gè)模板引擎就可以了,比如 Handlebars、ArtTemplate 等,這和 jsp、php 寫頁面的方式非常類似,不過這里有一個(gè)頁面緩存的問題。
很多人有一個(gè)誤區(qū),認(rèn)為前后端分離必須使用框架,其實(shí)兩者并沒有什么必然的關(guān)系,前后端分離并不一定需要使用框架,而使用框架也不等于前后端分離。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。