摘要:什么是前后分離前后端分離并不是什么新鮮事,到處都是前后端分離的實(shí)踐。然而一些歷史項(xiàng)目在從一體化設(shè)計(jì)轉(zhuǎn)向前后端分離的架構(gòu)時(shí),不可避免的會(huì)遇到各種各樣的問(wèn)題。搞了一個(gè)前后分離,需要分離部署。
探究 :深入聊聊前后分離架構(gòu)
前后分離,一直是一個(gè)相當(dāng)泛泛的問(wèn)題,前后分離到底好不好?沒(méi)有絕對(duì)的對(duì),沒(méi)有絕對(duì)的錯(cuò),業(yè)界就這個(gè)問(wèn)題已經(jīng)激烈的探討幾年了.出現(xiàn)討論的點(diǎn)在于:分離當(dāng)然是好的,但是以什么樣的服務(wù)需要進(jìn)行前后拆分?拆分到什么粒度?前后端如何配合?
截圖時(shí)間: 2018-08-30 - Github
我們隨意在 Github 輸入前后分離關(guān)鍵字,看下搜索的結(jié)果: 1K 的庫(kù) 11k 的 Issues 足以說(shuō)明前后分離的趨勢(shì),可以想象激烈程度,業(yè)界比較有名的討論:Web 前后端分離的意義大嗎?,值得一提的是:前排對(duì)于這個(gè)問(wèn)題討論比較深刻的大部分都是全棧工程師。因?yàn)槿珬?duì)全局的了解相對(duì)比單純做前端、后端全局觀(guān)念更強(qiáng)一些,考慮的問(wèn)題更多一些。
篩簡(jiǎn)歷引發(fā)的思考和分析 后端職位的怪圈在公司的簡(jiǎn)歷庫(kù)隨手截幾個(gè)局部的圖,近兩年面試過(guò)很多的 1-3 年 java 開(kāi)發(fā)者,在篩選簡(jiǎn)歷和面試過(guò)程中,也發(fā)現(xiàn)了幾個(gè)問(wèn)題:相當(dāng)多一部分 javaer 技術(shù)棧上總是多了那么個(gè) HTML ajax jquery bootstrap easyUi ,看起來(lái)很唐突,如果面試提到了前端技術(shù)棧,基本沒(méi)有能答的很好的,甚至有的人連 原型鏈 都不知道。這也是大部分人對(duì)全棧的誤解,其實(shí)我是不太感冒這樣的簡(jiǎn)歷的,因?yàn)闆](méi)有什么亮點(diǎn),技術(shù)棧不是寫(xiě)的越多越好,總結(jié)起來(lái):他們對(duì)前端的掌握很基礎(chǔ),勉強(qiáng)能勝任一些業(yè)務(wù)上的工作。那為什么這么多人都掌握一些前端技術(shù)呢?我分析可能有三點(diǎn):
思考原因:培訓(xùn)機(jī)構(gòu)的興起,機(jī)械化的教學(xué)
求職者自身的興趣
一些公司的技術(shù)棧不全,對(duì)技術(shù)沒(méi)有追求,大部分用的幾年前的架構(gòu),前后業(yè)務(wù)耦合很大,市場(chǎng)缺口大
分析因?yàn)槲乙簿S護(hù)過(guò)幾個(gè)月的敏感項(xiàng)目,深有體會(huì),只寫(xiě)服務(wù)端的人是無(wú)法勝任這項(xiàng)工作的,
如果多數(shù)的 開(kāi)發(fā)者 這樣的簡(jiǎn)歷,可以推測(cè):現(xiàn)在的 IT 行業(yè)中前后端糅雜一起的架構(gòu)還是存在、并且有一個(gè)量級(jí),這導(dǎo)致他們不得不尋找一些懂得一點(diǎn)前端技術(shù)的人來(lái)開(kāi)發(fā)項(xiàng)目,減少溝通的成本,加快項(xiàng)目的進(jìn)度,這也就催生了很多所謂的 web 開(kāi)發(fā)培訓(xùn)機(jī)構(gòu)。
你問(wèn)我當(dāng)年維護(hù)的開(kāi)心嗎?一會(huì)告訴你。什么是前后分離
前后端分離并不是什么新鮮事,到處都是前后端分離的實(shí)踐。然而一些歷史項(xiàng)目在從一體化 Web 設(shè)計(jì)轉(zhuǎn)向前后端分離的架構(gòu)時(shí),不可避免的會(huì)遇到各種各樣的問(wèn)題。由于層出不窮的問(wèn)題,甚至?xí)袌F(tuán)隊(duì)質(zhì)疑,一體化好好的,為什么要搞前后端分離?說(shuō)到底,還是技術(shù)和思維方式?jīng)]轉(zhuǎn)變過(guò)來(lái)。
一體化模式其實(shí)在上一開(kāi)篇:縱觀(guān)歷史演變 中已經(jīng)提到過(guò)了,不在贅述。
前后分離看起來(lái)應(yīng)該是這樣的:
前后分離就是在架構(gòu)層次上 構(gòu)建項(xiàng)目或?qū)ΜF(xiàn)有的項(xiàng)目 客戶(hù)端 服務(wù)端 分離開(kāi),減少前后端代碼的耦合度,大家一致認(rèn)同的前后端分離的例子就是SPA(Single-page application) ,所有用到的展現(xiàn)數(shù)據(jù)都是后端通過(guò) JSON 但不僅限于 JSON 的方式提供的,前端只管展現(xiàn),提供更好更絢的交互,后端只管提供更健壯的高可用服務(wù)。
千萬(wàn)不要有先寫(xiě)項(xiàng)目,寫(xiě)完再重構(gòu)的想法,項(xiàng)目初期能一步到位最好,何必再去重構(gòu),然后不得已拋棄一些已經(jīng)寫(xiě)完的組件、庫(kù)浪費(fèi)人力呢?
前后分離解決了什么問(wèn)題 每個(gè)人各盡其職好的開(kāi)發(fā)者是可與不可求的,若尋找一個(gè) 優(yōu)秀的 full_stack 更是難,從校招進(jìn)行培養(yǎng)也不太實(shí)際,招一個(gè)能力一般的程序員,技術(shù)驅(qū)動(dòng)性比較差,甚至拖慢產(chǎn)品迭代。分離開(kāi)來(lái)我們就可以專(zhuān)注于 前端、 服務(wù)端 領(lǐng)域去尋找專(zhuān)業(yè)的人才。
解耦前端后端代碼大量耦合代碼看起來(lái)是這樣的:
看看簡(jiǎn)單例子吧:
//(node端處理) if (is_weixin()) { init([ "api", "image", "xxx", "...", ], function () { <%- doSomeGloble %> }); } else { } //接收node端一些數(shù)據(jù) let blogs = <%- blogs %>; let users = <%- users %>;
這還不是 JAVA 模板 而是相對(duì)輕量、優(yōu)雅的 NODE 的 EJS 渲染的,這還好,我見(jiàn)過(guò)更令人難受的代碼,經(jīng)常為了一個(gè)問(wèn)題要回頭看 N 多代碼,這里就不寫(xiě)了。
那么前后分離如何讓它們解耦變得更清晰?后面會(huì)結(jié)合服務(wù)端統(tǒng)一補(bǔ)充。
什么項(xiàng)目不適合前后分離 blog、文檔你說(shuō)你搭建一個(gè)博客、 API 文檔系統(tǒng) 這種小項(xiàng)目,一個(gè)人就可以開(kāi)發(fā)。搞了一個(gè)前后分離,需要分離部署。又增加了 SEO 的復(fù)雜度,增加了開(kāi)發(fā)的周期、增加了用戶(hù)部署的難度,何必呢?當(dāng)然,如果只是技術(shù)實(shí)踐的一種學(xué)習(xí)方式,還是歡迎的。
前后分離帶來(lái)的問(wèn)題,如何解決? 溝通成本問(wèn)題前端妹子:哥,獲取全部博客調(diào)哪個(gè)接口?哦,昨天不是發(fā)你文件了嗎
前端妹子:我找不到了
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76997.html
摘要:什么是前后分離前后端分離并不是什么新鮮事,到處都是前后端分離的實(shí)踐。然而一些歷史項(xiàng)目在從一體化設(shè)計(jì)轉(zhuǎn)向前后端分離的架構(gòu)時(shí),不可避免的會(huì)遇到各種各樣的問(wèn)題。搞了一個(gè)前后分離,需要分離部署。 探究 :深入聊聊前后分離架構(gòu) 前后分離,一直是一個(gè)相當(dāng)泛泛的問(wèn)題,前后分離到底好不好?沒(méi)有絕對(duì)的對(duì),沒(méi)有絕對(duì)的錯(cuò),業(yè)界就這個(gè)問(wèn)題已經(jīng)激烈的探討幾年了.出現(xiàn)討論的點(diǎn)在于:分離當(dāng)然是好的,但是以什么樣的服...
摘要:什么是前后分離前后端分離并不是什么新鮮事,到處都是前后端分離的實(shí)踐。然而一些歷史項(xiàng)目在從一體化設(shè)計(jì)轉(zhuǎn)向前后端分離的架構(gòu)時(shí),不可避免的會(huì)遇到各種各樣的問(wèn)題。搞了一個(gè)前后分離,需要分離部署。 探究 :深入聊聊前后分離架構(gòu) 前后分離,一直是一個(gè)相當(dāng)泛泛的問(wèn)題,前后分離到底好不好?沒(méi)有絕對(duì)的對(duì),沒(méi)有絕對(duì)的錯(cuò),業(yè)界就這個(gè)問(wèn)題已經(jīng)激烈的探討幾年了.出現(xiàn)討論的點(diǎn)在于:分離當(dāng)然是好的,但是以什么樣的服...
摘要:前端基礎(chǔ)架構(gòu)和硬核介紹技術(shù)棧的選擇首先我們構(gòu)建前端架構(gòu)需要對(duì)前端生態(tài)圈有一切了解,并且最好帶有一定的技術(shù)前瞻性,好的技術(shù)架構(gòu)可能日后會(huì)方便的擴(kuò)展,減少重構(gòu)的次數(shù),即使重構(gòu)也不需要大動(dòng)干戈,我通常選型技術(shù)棧會(huì)參考以下三點(diǎn)一提出自身業(yè)務(wù)的需求是 # 前端基礎(chǔ)架構(gòu)和硬核介紹 showImg(https://segmentfault.com/img/remote/146000001626972...
摘要:前端基礎(chǔ)架構(gòu)和硬核介紹技術(shù)棧的選擇首先我們構(gòu)建前端架構(gòu)需要對(duì)前端生態(tài)圈有一切了解,并且最好帶有一定的技術(shù)前瞻性,好的技術(shù)架構(gòu)可能日后會(huì)方便的擴(kuò)展,減少重構(gòu)的次數(shù),即使重構(gòu)也不需要大動(dòng)干戈,我通常選型技術(shù)棧會(huì)參考以下三點(diǎn)一提出自身業(yè)務(wù)的需求是 # 前端基礎(chǔ)架構(gòu)和硬核介紹 showImg(https://segmentfault.com/img/remote/146000001626972...
摘要:前端準(zhǔn)備前端了解過(guò)關(guān)了嗎前端基礎(chǔ)架構(gòu)和硬核介紹技術(shù)棧的選擇首先我們構(gòu)建前端架構(gòu)需要對(duì)前端生態(tài)圈有一切了解,并且最好帶有一定的技術(shù)前瞻性,好的技術(shù)架構(gòu)可能日后會(huì)方便的擴(kuò)展,減少重構(gòu)的次數(shù),即使重構(gòu)也不需要大動(dòng)干戈,我通常選型技術(shù)棧會(huì)參考以下三 # 前端準(zhǔn)備 :前端了解過(guò)關(guān)了嗎?前端基礎(chǔ)架構(gòu)和硬核介紹 showImg(https://segmentfault.com/img/remote/...
閱讀 3739·2021-11-24 09:39
閱讀 2624·2019-08-30 15:54
閱讀 1167·2019-08-30 13:01
閱讀 3445·2019-08-28 18:30
閱讀 1637·2019-08-26 17:44
閱讀 3607·2019-08-26 11:31
閱讀 2431·2019-08-26 10:40
閱讀 1262·2019-08-26 10:27