以前曾經(jīng)寫過(guò)一個(gè)后臺(tái)是用java寫的有前后臺(tái)頁(yè)面的網(wǎng)站。
被朋友吐槽說(shuō)我那個(gè)網(wǎng)站不是用的前后端分離,很low。說(shuō)沒有用請(qǐng)求api接口,而且用了jsp來(lái)改寫html,說(shuō)前后端分離不需要這樣套模版的。
問(wèn)題:
0.現(xiàn)在是不是差不多所有公司都用前后端分離了?沒試過(guò)這種開發(fā)模式咋辦…
1.是不是前后端分離與傳統(tǒng)的開發(fā)其實(shí)主要就是以上那些區(qū)別?
2.工作中如果后端同事寫的接口文檔比較難看懂不就坑了前端?
3.看到別人github有前后端分離項(xiàng)目,為啥運(yùn)行時(shí)前后臺(tái)頁(yè)面都是同一個(gè)端口號(hào)如9000,不是應(yīng)該前端首頁(yè)localhost:3000/index 后端首頁(yè)localhost:9000/index這樣分開才叫前后端分離嗎? 都用9000端口那和我之前寫網(wǎng)站訪問(wèn)前后臺(tái)的方式一樣阿…
概念其實(shí)在網(wǎng)上了解過(guò),但怕很多地方還是理解錯(cuò),所以上來(lái)求指正
0 NO 前后端分離是趨勢(shì),但是也還存在問(wèn)題(例如SEO,搜索引擎難以識(shí)別等),短時(shí)間內(nèi)不可能取代不分離的
1 主要區(qū)別是,數(shù)據(jù)和表現(xiàn)分離,只需要靜態(tài)的html和動(dòng)態(tài)的接口(例如jsp),數(shù)據(jù)在瀏覽器端實(shí)現(xiàn)動(dòng)態(tài)加載
2 理想情況是,先出文檔(前后端都認(rèn)可),然后后端、前端都按照文檔來(lái),一切以接口規(guī)定的為準(zhǔn)
3 跟端口沒一毛錢關(guān)系,重點(diǎn)在于接口!靠 API 來(lái)分離前后端,解決前后端大團(tuán)隊(duì)、多版本、復(fù)雜功能協(xié)作的問(wèn)題
補(bǔ)充:
可以參考淘寶前端的設(shè)計(jì),在 java 接口和 html 輸出之前用 NodeJS 代理一層,暫時(shí)能解決 SEO 的問(wèn)題
定義好了接口,前端就可以用不用等后端,直接用模擬的數(shù)據(jù)格式,方便地進(jìn)行前端測(cè)試了
說(shuō)重點(diǎn),API 相比前后端混寫、模板引擎之類的東西的好處:
方便設(shè)計(jì)、開發(fā)、測(cè)試(前端不再需要依賴后端,后端也不需要依賴前端,就可以各干各的,獨(dú)立測(cè)試代碼)
方便記錄和統(tǒng)計(jì)功能使用(后端相同功能的入口位置統(tǒng)一,不同功能的位置也可以合理有序地組織)
方便修改和版本控制等(后端可以提供多版本的 API,不需要修改已有代碼,不影響已有 API 的功能)
最重點(diǎn)的是:
你的Team要是分工不明確、人少、功能簡(jiǎn)單直接、代碼修改不多,就完全不需要分離,就醬。
最明顯的:
前端代碼不用被后端粘貼來(lái)粘貼去了,后端的相同代碼,也不需要各種位置粘貼來(lái)粘貼去了。
隱藏的好處:
到時(shí)候出了問(wèn)題,照著 API 設(shè)計(jì)文檔一對(duì)比,就知道是前端用的不對(duì),還是后端寫的不對(duì),分分鐘找到背鍋俠。
Update 2017/10/13:
其實(shí)很有一個(gè)很大的優(yōu)勢(shì)忘了說(shuō)……
以后網(wǎng)站的功能,要做Windows、Mac、Android、IOS、Linux的客戶端,或者需要做成批量處理的腳本,或者需要和別的什么系統(tǒng)對(duì)接,什么微信公眾號(hào)、小程序之類的,等等等等……
有API在就能瞬間解決問(wèn)題!就這個(gè)提供給前端的API!一樣的!調(diào)用這個(gè)接口就行了!
無(wú)論怎樣的開發(fā)模式都各有優(yōu)缺點(diǎn),前后端分離大部分都是開發(fā)功能性的應(yīng)用的,例如網(wǎng)站后臺(tái)系統(tǒng),公司內(nèi)部系統(tǒng),線上的交互系統(tǒng)等不需要seo的應(yīng)用,如果開發(fā)CMS類的,需要利于搜索引擎抓取的內(nèi)容管理應(yīng)用,前后端分離顯然是不合理的,js動(dòng)態(tài)加載數(shù)據(jù)對(duì)搜索引擎來(lái)說(shuō)就是個(gè)災(zāi)難,所以需要根據(jù)項(xiàng)目實(shí)際應(yīng)用場(chǎng)景決定是否前后端分離;
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(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庫(kù),具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。