溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

基于web前后端分離的模版探索有什么優(yōu)點(diǎn)

發(fā)布時(shí)間:2021-11-17 16:00:20 來源:億速云 閱讀:155 作者:iii 欄目:web開發(fā)

本篇內(nèi)容主要講解“基于web前后端分離的模版探索有什么優(yōu)點(diǎn)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“基于web前后端分離的模版探索有什么優(yōu)點(diǎn)”吧!

瀏覽器端渲染的好處

瀏覽器端渲染的好處,我們都很清楚,像是

  1. 擺脫業(yè)務(wù)邏輯與呈現(xiàn)邏輯在Java模版引擎中的耦合與混亂。

  2. 針對多終端應(yīng)用,更容易以接口化的形式。在瀏覽器端搭配不同的模版,呈現(xiàn)不同的應(yīng)用。

  3. 頁面呈現(xiàn)本來就不僅是html,在前端的渲染可以更輕易的以組件化形式 (html + js + css)提供功能,使得前端組件不需依賴于服務(wù)端產(chǎn)生的html結(jié)構(gòu)。

  4. 脫離對于后端開發(fā)、發(fā)佈流程的依賴。

  5. 方便聯(lián)調(diào)。

瀏覽器端渲染造成的壞處

但是在享受好處的同時(shí),我們同樣的也面臨了 瀏覽器端渲染 所帶來的壞處,像是:

  1. 模版分離在不同的庫。有的模版放在服務(wù)端 (JAVA),而有的放在瀏覽器端 (JS)。前后端模版語言不相通。

  2. 需要等待所有模版與組件在瀏覽器端載入完成后才能開始渲染,無法即開即看。

  3. ***進(jìn)入會有白屏等待渲染的時(shí)間,不利于用戶體驗(yàn)

  4. 開發(fā)單頁面應(yīng)用時(shí),前端Route與服務(wù)器端Route不匹配,處理起來很麻煩。

  5. 重要內(nèi)容都在前端組裝,不利于SEO

反思前后端的定義

其實(shí)回頭想想,在我們把渲染的工作從 服務(wù)端(Java) 抽出來到 瀏覽器端(JS) 的時(shí)候,我們的目的只是 明確的前后端職責(zé)劃分,并不是非瀏覽器渲染不可 。

只是因?yàn)樵趥鹘y(tǒng)的開發(fā)模式中,出了服務(wù)器就到了瀏覽器,所以前端的工作內(nèi)容只能被限制在瀏覽器端。

也因此很多人認(rèn)定了 后端 = 服務(wù)端 前端 = 瀏覽器端 ,就像下面這張圖。

基于web前后端分離的模版探索有什么優(yōu)點(diǎn)

而在淘寶UED目前進(jìn)行的 中途島Midway 項(xiàng)目中,藉由在 JAVA – Browser中間搭建一個(gè)NodeJS中間層,試圖把這個(gè)前后端的分割線,重新針對 工作職責(zé) 去區(qū)分,而分針對硬體環(huán)境去區(qū)分(服務(wù)器 & 瀏覽器)。

因此我們有機(jī)會做到模版與路由的共享,也是一個(gè)前后端分工中最理想的狀態(tài)。


淘寶中途島 Midway

在中途島項(xiàng)目中,我們把前后端分界的那條線,從瀏覽器端移回到了服務(wù)器端。

基于web前后端分離的模版探索有什么優(yōu)點(diǎn)

藉由一個(gè)由前端 輕松掌控與瀏覽器共通 的Nodejs層,可以更清晰的完成了前后端分離。

也可以讓前端開發(fā)針對不同的情況,自行決定 最適當(dāng)?shù)慕鉀Q方案 。而不是所有事情 都在瀏覽器端來處理 。

職責(zé)劃分

中途島并不是前端試圖搶后端飯碗的項(xiàng)目,目的只是把 模版 這個(gè)模糊地帶切割清楚,取得更明確的職責(zé)劃分。

  • 后端 (JAVA),專注于

    1. 服務(wù)層

    2. 數(shù)據(jù)格式、數(shù)據(jù)穩(wěn)定

    3. 業(yè)務(wù)邏輯

  • 前端,專注于

    1. UI層

    2. 控只邏輯、渲染邏輯

    3. 交互、用戶體驗(yàn)

而不再拘泥于服務(wù)端或?yàn)g覽器端的差異。

模版共享

在傳統(tǒng)的開發(fā)模式中,瀏覽器端與服務(wù)器端是由不同的前后端兩個(gè)團(tuán)隊(duì)開發(fā),但是模版卻又在這兩者中間的模糊地帶。因此模版上面總不可避免的越來越多復(fù)雜邏輯,最終難以維護(hù)。

有了NodeJS,后端同學(xué)可以在JAVA層專注于業(yè)務(wù)邏輯與數(shù)據(jù)的開發(fā)。而前端同學(xué)則專注于控制邏輯與渲染的開發(fā)。并且自行選擇這些模版是要在 服務(wù)端 (NodeJS) 或是 瀏覽器端 做渲染。

用著一樣的模版語言 XTemplate ,一樣的渲染引擎 JavaScript

不同的渲染環(huán)境?。⊿erver-side、PC Browser、Mobile Browser、Web View、etc.) 渲染出 一樣的結(jié)果 。

路由共享

也因?yàn)橛辛薔odeJS這一層,可以更細(xì)致的控制路由。

假如需要在前端做瀏覽器端路由時(shí),可以同時(shí)配置服務(wù)器端的路由,使其在 瀏覽器端換頁 或是 服務(wù)端換頁 ,都可以得到一致的渲染效果。

同時(shí)也處理了SEO的問題。


模版共享的實(shí)踐

通常我們在瀏覽器端渲染一份模版時(shí),流程不外乎是

  1. 在瀏覽器端載入模版引擎 (xtmpleate, juicer, handlerbar, etc.)

  2. 在瀏覽器端載入模版檔案,方法可能有

    • 使用 <script type="js/tpl"> ... </script> 印在頁面上

    • 使用模塊載入工具,載入模版檔案 (KISSY, requireJS, etc.)

    • 其他

  3. 取得數(shù)據(jù),使用模版引擎產(chǎn)生html

  4. 將html插入到指定位置。

從以上的流程可以觀察到,要想要做到模版的跨端共享,重點(diǎn)其實(shí)在 一致的模塊選型 這件事。

市面上流行很多種模塊標(biāo)準(zhǔn),例如 KMD、AMD、CommonJS,只要能將NodeJS的模版檔案透過一致模塊規(guī)范輸出到NodeJS端,就可以做基本的模版共享了。

而后續(xù)的系列文章會針對Model的proxy與共享,做進(jìn)一步的探討。


案例探討

因?yàn)橛辛酥型緧u這中間層,針對過往的一些問題都有了更好的解答,例如說

案例一 復(fù)雜交互應(yīng)用 (如購物車、下單頁面)

  • 狀況:全部的HTML都是在前端渲染完成,服務(wù)端僅提供接口。

  • 問題:進(jìn)入頁面時(shí),會有短暫白屏。

  • 解答:

    1. ***進(jìn)入頁面,在NodeJS端進(jìn)行 全頁渲染 ,并在背景下載相關(guān)的模版。

    2. 后續(xù)交互操作,在瀏覽器端完成 局部刷新

    3. 用的是 同一份模版 , 產(chǎn)生 一樣的結(jié)果

案例二 單頁面應(yīng)用

  • 狀況:使用Client Side MVC框架,在瀏覽器換頁。

  • 問題:渲染與換頁都在瀏覽器端完成,直接輸入網(wǎng)址進(jìn)入或f5刷新時(shí),無法直接呈現(xiàn)同樣的內(nèi)容。

  • 解答:

    1. 在瀏覽器端與NodeJS端共享 同樣的Route 設(shè)定

    2. 瀏覽器端換頁時(shí),在瀏覽器端進(jìn)行Route變更與 頁面內(nèi)容渲染

    3. 直接輸入同樣的網(wǎng)址時(shí),在NodeJS端進(jìn)行 頁面框架 + 頁面內(nèi)容渲染

    4. 不管是瀏覽器端換頁,或直接輸入同樣的網(wǎng)址,看到的內(nèi)容都是 一樣的

    5. 除了增加體驗(yàn)、減少邏輯複雜度外。更解決了 SEO 的問題

案例三 純?yōu)g覽型頁面

  • 狀況:頁面僅提供資訊,較少或沒有交互

  • 問題:html在服務(wù)端產(chǎn)生,css與js放在另外一個(gè)位置,彼此間有依賴。

  • 解答:

    1. 透過NodeJS,統(tǒng)一管理html + css + js

    2. 日后若需要擴(kuò)展成復(fù)雜應(yīng)用或是單頁面應(yīng)用,也可以輕易轉(zhuǎn)移。

案例四 跨終端頁面

  • 狀況:同樣的應(yīng)用要在不同端點(diǎn)呈現(xiàn)不同的介面與交互

  • 問題:html管理不易,常常會在服務(wù)端產(chǎn)生不一樣的html,瀏覽器端又要做不一樣的處理

  • 解答:

    1. 跨終端的頁面是渲染的問題,統(tǒng)一由前端來處理。

    2. 透過NodeJS層與后端服務(wù)化,可以針對這類型復(fù)雜應(yīng)用,設(shè)計(jì)***的解決方案。

到此,相信大家對“基于web前后端分離的模版探索有什么優(yōu)點(diǎn)”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

web
AI