前后端分離的意義

嘗試與改變

如果你沒有嘗試過前后端分離的工作流程,那么可以先試想一下這樣的流程改變:
把流程從
PM:“我要這個功能”
后端:“這個先找前端做個模板”
前端:“模板做完了”
后端:“我來對接一下,這里樣式不對”
前端:“我改完了”
后端:“功能交付”
PM:“春節要加這個活動”
后端:“這個先找前端改個模板”
前端:“模板做完了”
后端:“我來對接一下,這里樣式不對”
前端:“我改完了”
后端:“功能交付”

變成

PM:“我要這個功能”
前端:“我要接口”
后端:“接口完成了”
前端:“我來對接一下,功能交付”
PM:“春節要加這個活動”
前端:“需要增加接口”
后端:“接口完成了”
前端:“我來對接一下,功能交付”

由此可見,前后端分離的主要概念就是:后臺只需提供API接口,前端調用AJAX實現數據呈現。

現狀與分歧

作為一名前端開發人員,我們應該嘗試一些新穎的技術,完善每一個細節性的問題,不斷突破自我。雖然前后端分離已經算不上什么新穎的技術或思路,但是目前很多后臺開發人員甚至前端開發人員都沒有接觸過。

據我個人的了解,如果在一個部門里,部門人員全是后臺開發人員,前端的一些頁面也是由后臺人員完成的,那么前后端分離對于他們而言可能是一片未知的領域,項目大多是前后端強耦合的,甚至不存在前端的概念。

在不重視前端的公司或部門,不了解前后端分離這也無可厚非。大多的創業型公司,一個部門就一兩個前端,而且一人負責幾個項目,很少有合作完成一個項目的時候。因為沒有什么標準可言(這里的標準指的是代碼組織結構),所以就是前端人員切好圖寫好頁面扔給后端,以后端代碼結構為標準。雖然一些公司有前后端分離的意識,但都不知該如何去實踐。在那時,部門的后臺人員認為前后端分離就是后臺不再需要寫HTML和JS了,可以交給前端來做了,然而這只能叫做前后端分工。

以上講述的是一種情況: 不了解前后端分離,也不知如何去實踐的。下面還有一種情況:了解前后端分離,但不想去嘗試的。

針對第二種情況,很多人也做過相應的解釋,其實這就涉及到“前后端分離的利弊”問題。很多后臺人員會認為自己所做的那一套沒有問題,即便后臺套用前端html也是司空見慣,一直是大勢所趨,后臺MVC框架也是這么推薦使用的,很合理。這時候前端開發人員在部門中的話語權往往是不夠的,或者認為后臺開發人員的意見永遠是對的,沒有主觀性。

相反,也有可能是后臺開發人員非常推薦前后端分離,而前端開發人員不想去實踐的。這時候前端會認為后臺開發人員在瞎折騰,之前前后端不分離項目做起來都很順利,分離了反而會給自己帶來額外的工作量和學習成本,而這就取決于前端的技術能力和見識了。

當然,這也是我個人認為的前后端分離所存在的一些現狀和分歧所在。

場景與要求

對于前后端分離的應用場景,不是所有的場景都適合,但是大多數項目都能夠通過前后端分離來實現。

由于我主要從事企業級后臺應用的前端開發工作,個人認為對于后臺應用的開發來說,前后端分離帶來的利是遠大于弊的。

大多數后臺應用我們都可以做成SPA應用(單頁應用),而單頁應用最主要的特點就是局部刷新,這通過前端控制路由調用AJAX,后臺提供接口便可以實現,而且這樣的方式用戶體驗更加友好,網頁加載更加快速,開發和維護成本也降低了不少,效率明顯提升。

同樣的,在展示類網站和移動APP頁面中前后端分離也同樣試用。前后端不分離的情況下,服務端要單獨針對Web端做處理,返回完整HTML,這樣勢必增加服務端的復雜度,可維護性差,而web端需要加載完整的HTML,一定程度上影響網頁性能,這對于移動端性能為王的地方非常的不友好。

隨著前端技術的發展和迭代,前端MVC框架應運而生,利用目前主流的前端框架,如React、Vue、Angular等我們可以輕松的構建起一個無需服務器端渲染就可以展示的網站,同時這類框架都提供了前端路由功能,后臺可以不再控制路由的跳轉,將原本屬于前端的業務邏輯全部丟給前端,這樣前后端分離可以說是最為徹底。下面是一段前端控制路由的代碼:

'use strict'

export default function (router) {
    router.map({
        '/': {
            component: function (resolve) {
                require(['./PC.vue'], resolve)
            }
        },
        '/m/:params': {
            component: function (resolve) {
                require(['./Mobile.vue'], resolve)
            }
        },
        '/p': {
            component: function (resolve) {
                require(['./PC.vue'], resolve)
            },
            subRoutes: {
                '/process/:username': {
                    component: function (resolve) {
                        require(['./components/Process.vue'], resolve)
                    }
                }
            }
        }
    })
}

前后端分離的實現對技術人員尤其是前端人員的要求會上升一個層次,前端的工作不只是切頁面寫模板或是處理一些簡單的js邏輯,前端需要處理服務器返回的各種數據格式,還需要掌握一系列的數據處理邏輯、MVC思想和各種主流框架。

優勢與意義

對于前后端分離的意義我們也可以看做是前端渲染的意義,我主要總結了下面四點:

  1. 徹底解放前端
    前端不再需要向后臺提供模板或是后臺在前端html中嵌入后臺代碼,如:
<!--服務器端渲染 -->
<select>
    <option value=''>--請選擇所屬業務--</option>
    {% for p in p_list %}
    <option value="{{ p }}">{{ p }}</option>
    {% endfor %}
</select>

這是前后端耦合的,可讀性差。

<!--前端渲染 -->
<template>
    <select id="rander">
        <option value=''>--請選擇所屬業務--</option>
        <option v-for="list in lists" :value="list" v-text="list"></option>
    </select>
</template>

<script>
export default {
    data: {
        return {
            lists: ['選項一', '選項二', '選項三', '選項四']
        }
    },
    ready: function () {
        this.$http({
            url: '/demo/',
            method: 'POST',
        })
        .then(function (response) {
            this.lists = response.data.lists // 獲取服務器端數據并渲染
        })
    }
}
</script>

上面是前端渲染的一段代碼,前端通過AJAX調用后臺接口,數據邏輯放在前端,由前端維護。

  1. 提高工作效率,分工更加明確
    前后端分離的工作流程可以使前端只關注前端的事,后臺只關心后臺的活,兩者開發可以同時進行,在后臺還沒有時間提供接口的時候,前端可以先將數據寫死或者調用本地的json文件即可,頁面的增加和路由的修改也不必再去麻煩后臺,開發更加靈活。
  2. 局部性能提升
    通過前端路由的配置,我們可以實現頁面的按需加載,無需一開始加載首頁便加載網站的所有的資源,服務器也不再需要解析前端頁面,在頁面交互及用戶體驗上有所提升。
  3. 降低維護成本
    通過目前主流的前端MVC框架,我們可以非常快速的定位及發現問題的所在,客戶端的問題不再需要后臺人員參與及調試,代碼重構及可維護性增強。

心得與體會:

一路走來,項目一個接著一個,從一開始的后臺控制路由、后臺渲染頁面到現在的前端控制路由、前端渲染數據,工作流程和方式都發生了很大的變化。每當遇到下面情形的時候,我都會為前后端分離帶來的優勢而感慨一番:

1、項目一開始制作前端頁面的時候,我不再需要后臺給我配置服務器環境了
2、項目的前端文件可以在需要調用后臺接口的時候丟進服務器就好了,完全不需要事先放進去
3、增加一個項目頁面需要配置路由的時候不再需要讓后臺同事給我加了,自己前端搞定
4、前端文件里不再摻雜后臺的代碼邏輯了,看起來舒服多了
5、頁面跳轉比之前更加流暢了,局部渲染局部加載非常快速
6、頁面模板可以重復使用了,前端組件化開發提高了開發效率

等等。面對快速發展的前端,我們應該去適應其帶來的工作方式和流程的改變,目前的前后端分離的工作方式必然是今后的趨勢所在,作為一個前端開發人員,我們應當承擔這個普及前端新知識和改變現狀的職責。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,431評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,637評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,555評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,900評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,629評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,976評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,976評論 3 448
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,139評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,686評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,411評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,641評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,129評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,820評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,233評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,567評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,362評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,604評論 2 380

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,755評論 25 708
  • 前端 前后端分離 這不是一篇純技術文章,而是一篇分享我個人在前后端分離路上收獲的點點滴滴的文章,以此來為準備嘗試前...
    寒劍飄零閱讀 1,896評論 0 22
  • 本文系轉載,原作者,普元,敖顯奇 轉載本文需保留此處版權聲明:本文版權屬于EAII企業架構創新研究院(微信號:ea...
    普元云計算閱讀 4,996評論 8 96
  • 世界變化快,我們的腳步有時候會有點身不由己,會更習慣于快速決策、快速反應和快速行動,其實也有一些時候,需要我們慢下...
    梅子的江湖閱讀 337評論 0 5
  • 神秘的事情總是讓人恐懼的,因為你無法預料到她向哪里發展,是好是壞,同樣的黑暗也讓人恐懼,因為黑暗往往就意味著危險,...
    天蛇星閱讀 205評論 0 0