成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

web前后端分離的必要性是什么

這篇文章主要介紹“web前后端分離的必要性是什么”,在日常操作中,相信很多人在web前后端分離的必要性是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”web前后端分離的必要性是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

成都創(chuàng)新互聯(lián):自2013年起為各行業(yè)開拓出企業(yè)自己的“網(wǎng)站建設”服務,為上千家公司企業(yè)提供了專業(yè)的成都做網(wǎng)站、網(wǎng)站制作、網(wǎng)頁設計和網(wǎng)站推廣服務, 按需設計由設計師親自精心設計,設計的效果完全按照客戶的要求,并適當?shù)奶岢龊侠淼慕ㄗh,擁有的視覺效果,策劃師分析客戶的同行競爭對手,根據(jù)客戶的實際情況給出合理的網(wǎng)站構(gòu)架,制作客戶同行業(yè)具有領(lǐng)先地位的。

未分離時期

MVC,博主就不多做解釋了,在早期JSP+SERVLET中的結(jié)構(gòu)圖如下

web前后端分離的必要性是什么

大致就是所有的請求都被發(fā)送給作為控制器的Servlet,它接受請求,并根據(jù)請求信息將它們分發(fā)給適當?shù)腏SP來響應。同時,Servlet還根據(jù)JSP的需求生成JavaBeans的實例并輸出給JSP環(huán)境。JSP可以通過直接調(diào)用方法或使用UseBean的自定義標簽得到JAVABeans中的數(shù)據(jù)。需要說明的是,這個View還可以采用 Velocity、Freemaker 等模板引擎。使用了這些模板引擎,可以使得開發(fā)過程中的人員分工更加明確,還能提高開發(fā)效率。那么,在這個時期,開發(fā)方式有如下兩種方式一:

web前后端分離的必要性是什么

方式二:

web前后端分離的必要性是什么

先說明一下,方式二已經(jīng)逐漸淘汰。主要原因有兩點:

(1)前端在開發(fā)過程中嚴重依賴后端,在后端沒有完成的情況下,前端根本無法干活。

(2)由于趨勢問題,會JSP,懂velocity,freemarker的前端越來越少。

因此,方式二逐漸不被采用。然而,不得不說一點,方式一,其實很多小型傳統(tǒng)軟件公司至今還在使用。那么,方式一和方式二具有哪些共同的缺點呢?

I、前端無法單獨調(diào)試

在項目上線后,遇到一些問題。比如樣式出問題了,由于前端不具備項目開發(fā)環(huán)境,那么就有可能出現(xiàn)如下對話

前端:"我這里沒問題啊。后端,你那里正常么?"后端:"我這里不正常啊。要不你過來看一下吧?"前端:"一時我也看不出問題,我也沒環(huán)境,怎么辦?"后端:"你沒環(huán)境,坐我這邊調(diào)吧。"然后,前端就滿臉不爽的在你那調(diào)代碼了。更有些情商低的后端就直接在旁邊開摁手機,實在是。。。。。

總結(jié),因為前端無法單獨調(diào)試。一方面開發(fā)效率降低。另一方面,還有可能引發(fā)公司內(nèi)部人員上的矛盾。

II、前端不可避免會遇到后臺代碼

比如前端可能碰到如下結(jié)構(gòu)的代碼

<body>

<%

request.setCharacterEncoding("utf-8")

String name=request.getParameter("username");out.print(name);

%>

</body>

身為前端,在頁面里看到了后臺代碼,必然內(nèi)心是十分不快的,這種方式耦合性太強。那么,就算你用了freemarker等模板引擎,不能寫JAVA代碼。那前端也不可避免的要去重新學習該模板引擎的模板語法,無謂增加了前端的學習成本。正如我們后端開發(fā)不想寫前端一樣,你想想如果你的后臺代碼里嵌入前端代碼,你是什么感受?因此,這種方式十分不妥。

III、JSP本身所導致的一些其他問題

比如,JSP第一次運行的時候比較緩慢,因為里頭包含一個翻譯為Servlet的步驟。再比如因為同步加載的原因,在jsp中有很多內(nèi)容的情況下,頁面響應會很慢。

半分離時期

前后端半分離,前端負責開發(fā)頁面,通過接口(Ajax)獲取數(shù)據(jù),采用dom操作對頁面進行數(shù)據(jù)綁定,最終是由前端把頁面渲染出來。這也就是其他博客里說的,Ajax與SPA應用(單頁應用)結(jié)合的方式。其結(jié)構(gòu)圖如下

web前后端分離的必要性是什么

步驟如下:

(1)瀏覽器請求,cdn返回html頁面

(2)html中的js代碼以ajax方式請求后臺的restful接口

(3)接口返回json數(shù)據(jù),頁面解析json數(shù)據(jù),通過dom操作渲染頁面

ps:博主早期就是用jquery的ajax請求,然后這么做的。

為什么說是半分離的?

因為不是所有頁面都是單頁面應用,在多頁面應用的情況下,前端因為沒有掌握controller層,前端需要跟后端討論,我們這個頁面是要同步輸出呢,還是異步json渲染呢?因此,在這一階段,只能算半分離。

這種方式的優(yōu)缺點有哪些呢?

首先,這種方式的優(yōu)點是很明顯的。前端不會嵌入任何后臺代碼,前端專注于html、css、js的開發(fā),不依賴于后端。自己還能夠模擬json數(shù)據(jù)來渲染頁面。發(fā)現(xiàn)bug,也能迅速定位出是誰的問題,不會出現(xiàn)互相推脫的現(xiàn)象。

然而,在這種架構(gòu)下,還是存在明顯的弊端的。最明顯的有如下幾點:

(1)js存在大量冗余,在業(yè)務復雜的情況下,頁面的渲染部分的代碼,非常復雜。

(2)在json返回的數(shù)據(jù)比較大的情況下,渲染的十分緩慢,會出現(xiàn)頁面卡頓的情況

(3)seo非常不方便,由于搜索引擎的爬蟲無法爬下js異步渲染的數(shù)據(jù),導致這樣的頁面,SEO會存在一定的問題。

(4)資源消耗嚴重,在業(yè)務復雜的情況下,一個頁面可能要發(fā)起多次http請求才能將頁面渲染完畢。可能有人不服,覺得pc端建立多次http請求也沒啥。那你考慮過移動端么,知道移動端建立一次http請求需要消耗多少資源么?

正是因為如上缺點,真正的前后端分離架構(gòu)誕生了

分離時期

在這一時期,擴展了前端的范圍。認為controller層也屬于前端的一部分。在這一時期

前端:負責View和Controller層。

后端:只負責Model層,業(yè)務處理/數(shù)據(jù)等。

可是前端不懂后臺代碼呀?controller層如何實現(xiàn)呢?

這就是node.js的妙用了,node.js適合運用在高并發(fā)、I/O密集、少量業(yè)務邏輯的場景。最重要的一點是,前端不用再學一門其他的語言了,對前端來說,上手度大大提高。

于是,這一時期架構(gòu)圖如下

web前后端分離的必要性是什么

增加node.js作為中間層,具體有哪些好處呢?

(1)適配性提升

我們其實在開發(fā)過程中,經(jīng)常會給pc端、mobile、app端各自研發(fā)一套前端。其實對于這三端來說,大部分端業(yè)務邏輯是一樣的。唯一區(qū)別就是交互展現(xiàn)邏輯不同。如果controller層在后端手里,后端為了這些不同端頁面展示邏輯,自己維護這些controller,徒增和前端溝通端成本。

如果增加了node.js層,此時架構(gòu)圖如下

web前后端分離的必要性是什么

在該結(jié)構(gòu)下,每種前端的界面展示邏輯由node層自己維護。如果產(chǎn)品經(jīng)理中途想要改動界面什么的,可以由前端自己專職維護,后端無需操心。前后端各司其職,后端專注自己的業(yè)務邏輯開發(fā),前端專注產(chǎn)品效果開發(fā)。

(2)響應速度提升

我們有時候,會遇到后端返回給前端的數(shù)據(jù)太簡單了,前端需要對這些數(shù)據(jù)進行邏輯運算。那么在數(shù)據(jù)量比較小的時候,對其做運算分組等操作,并無影響。但是當數(shù)據(jù)量大的時候,會有明顯的卡頓效果。這時候,node中間層其實可以將很多這樣的代碼放入node層處理、也可以替后端分擔一些簡單的邏輯、又可以用模板引擎自己掌握前臺的輸出。這樣做靈活度、響應度都大大提升。

(3)性能得到提升

大家應該都知道單一職責原則。從該角度來看,我們請求一個頁面,可能要響應很多看后端接口,請求變多了,自然速度就變慢了,這種現(xiàn)象在mobile端更加嚴重。采用node作為中間層,將頁面所需要的多個后端數(shù)據(jù),直接在內(nèi)網(wǎng)階段就拼裝好,再統(tǒng)一返回給前端,會得到更好的性能。

分離所帶來的缺點

在分析缺點之前,容博主先自責一下。博主拿著底層程序員的工資,想著架構(gòu)師,甚至是部門leader該考慮的問題了。博主有罪!ok,說重點。

先上結(jié)論,中小型軟件公司,慎用前后端分離架構(gòu)!慎用!

(1)人員問題

大家自己留意一下宣傳這種架構(gòu)的是什么級別的公司,中小型公司一般沒有這樣的前端資源來支撐這樣的架構(gòu)。如果強推這樣的分離架構(gòu)會導致一個后果,后端被硬逼著去學vue.js,node.js這些,白白增加后端的負擔。最后處理不好,會出現(xiàn)一個后端紛紛離職的場面,

(2) 產(chǎn)品迭代周期問題

中小型軟件公司,一般需要一個比較快的軟件迭代周期。采用分離架構(gòu),增加了一個接口制定流程和前后端聯(lián)調(diào)流程。從本質(zhì)上來說,放慢了迭代周期。

(3) 前端需要學習業(yè)務

本來前端只需要掌管視覺交互的部分。現(xiàn)在因為controller層也歸前端管了,前端必須對公司的業(yè)務流程有深入的了解,才能準確的寫出顯示邏輯。不過這樣會讓后端覺得,前端奪權(quán),前端在混KPI。前端也必須要去學無聊的業(yè)務,不過正所謂有得必有失,前端因此也能夠站穩(wěn)腳跟。或許正是因為前后端分離架構(gòu)的出現(xiàn),前端可以朝著架構(gòu)師進軍吧。

到此,關(guān)于“web前后端分離的必要性是什么”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

本文名稱:web前后端分離的必要性是什么
文章源于:http://jinyejixie.com/article36/gdghpg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設、定制網(wǎng)站、標簽優(yōu)化、云服務器靜態(tài)網(wǎng)站、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設計
郁南县| 旌德县| 肃宁县| 定襄县| 永仁县| 孝感市| 岫岩| 三门县| 临清市| 章丘市| 崇礼县| 高陵县| 田东县| 北票市| 改则县| 荥经县| 钦州市| 辽阳县| 赫章县| 华安县| 临潭县| 洮南市| 株洲县| 鸡泽县| 嘉兴市| 普格县| 加查县| 苏尼特左旗| 崇礼县| SHOW| 垫江县| 甘泉县| 南郑县| 福泉市| 南充市| 丹江口市| 临泽县| 白河县| 潍坊市| 赤城县| 鄢陵县|