前後端分離與 SPA
神作,備存 https://blog.techbridge.cc/2017/09/16/frontend-backend-mvc/ 前言 這篇的原文( 你走你的陽關道,我走我的獨木橋:前後端分離 )是我之前在 iT 邦幫忙鐵人賽的其中一篇文章,寫完之後有陸陸續續收到一些回饋,就想說可以重新整理一下這篇文章,讓它變得再更清楚一點。 如果你有以下疑惑的話,這篇文章非常適合你: 為什麼前端會有 MVC? 前端 MVC 跟後端 MVC 有什麼不一樣? 為什麼要有 SPA(Single Page Application)? (其實關於 MVC 到底是什麼就有很多討論了,但因為這篇文章的重點不在於此,所以對這方面就不多加描述,有興趣的朋友們可參考: MVC是一個巨大誤會 ) 先從你熟悉的流程開始 如果你要寫一個簡易的部落格,你會怎麼做? 這答案很簡單嘛,可以先挑一個喜歡的框架,例如說 Rails、Laravel 等等,然後先定義好幾個 URL,再把 DB 的 Schema 想好,最後開始動手 coding。 例如說首頁的部分就是去 DB 把所有文章都撈回來,然後把資料丟到 view 裡面去 render,搞定! 總而言之,流程大概是這樣: 當你想要訪問文章列表這個頁面的時候,瀏覽器會送 request 到 server,然後經過 controller 與 model,最後把資料帶給 view。 view 再回傳一份完整的 HTML 檔案(這個動作就叫做 render),而瀏覽器拿到之後,只要顯示出來就好。因為 render 在 server side,所以這也叫做 server side render。 這個流程照理來說,應該會是你最熟悉的流程,因為一大堆網頁都是這個樣子做的。 在這個狀況底下,一個只負責前端的工程師,基本上就是負責 view 這個資料夾底下的所有東西,必須用框架提供的 template 把資料跟 HTML 整合在一起。而當他需要 debug 的時候,必須要把整個專案都跑起來,才能看到畫面輸出的結果。 這樣的工作流程讓前後端切得沒有那麼開,畢竟前端工程師還需要會跑 rails,需要設定 DB,搞不好還要會設定 nginx! 現在的方法雖然把資料(Model)跟顯示(View)切開了,但都還是在後端,有沒有更好的方法呢?有沒有辦法,讓後端專注在提供資料,前端專注在...