前後端分離?

我們知道,傳統的mvc,PHP的最後一步都是include一個html進來,而前後端分離是不是意味著後端只負責輸出Json,那請問這看似無法避免的最後一步include要如何解決?


瀉藥,你是說頁面上一塊公共的東西嗎?

1 用nodejs的模板,比如 ejs、jade(改名為pug),這和你說的「 傳統的mvc,PHP的最後一步都是include一個html進來」是一致的。

2 主流框架都有這種功能,比如angularjs有 ng-include;

react 的頁面是一個個不同的 component組合而成。

3 前端工程化,比如用webpack,寫html的時候是一個個的html,最後打包組合在一起


前後分離的最大意義在於動態內容與靜態內容分離。

按照你的說法,php里include一個html進來,其實是為了頁面模板合成。前後分離的意義,正是為了避免頁面在後端合成,畢竟流量貴,伺服器貴,能把資源拆散到瀏覽器端去消耗往往更划算,此外也有了動態填充內容等優勢,體驗更好,工程上也耦合更弱一些,方便開發。

但終究是要提供頁面、js、css等資源的。但這些東西大部分可以直接通過http server(比如apache、nginx、tornado)甚至CDN投放,因為基本上是靜態的內容,不但能節省成本,也方便用戶304,變相增強體驗,縮短訪問的等待時間。


你要輸出總歸是要調用的…

以前的mvc框架,是把這個邏輯封裝起來

現在的前後端分離,

是把這個邏輯包含在前端邏輯里

前後端分離也好,MVC也好

總歸就是給代碼分層,分區域

讓每個部分只關注自己的部分


用JS來生成html啊


首先要明白什麼是前後端分離?

前後端分離,是將數據處理邏輯和頁面展示邏輯分開。好處是後台人員再也不用寫傳統的前端邏輯,而前端人員也不用受制於後端渲染的頁面。分工明確,大家各司其職。

1 後端負責輸出json或者xml(現在很少用了)

2 前台通過介面跟後台交互數據

3 對於現在多前端的互聯網情況,後台邏輯只需要一套即可滿足不同前端的需求。

4 前端所做的僅僅是展示數據和輸入數據,所有的數據處理邏輯在後端完成。

前後端邏輯完全分離了。前端和後台都獲取了前所未有的靈活度。


我明白題主的困惑。其實前後端分離,後端與前端是分開布署的。可能你後端是在http://api.xxx.com,前段在http://www.xxx.com,所以根本不存在include html的問題。

(我這裡所講分開布署不一定是物理上的分開)


nginx和apache直接輸出html和js和image就好了,用戶先訪問到html和js,然後再通過介面調用數據,介面根據需要返回json或者jsonp就行了。


網站資料庫唄json介面全部給曝光了怎麼辦


既然後端不幹就給前端唄。只要拿到json還怕頁面出不來,用 js 直接寫頁面也出來了


前端同學通過AJAX請求你的介面,所以你完全不用include html文件了。那是前端同學的事。


前後端分離後,就不需要在php裡面include了啊,你的前端文件直接就是html,你放的也是index.html了,數據交互在html裡面用js去完成。

php只需要在最後輸出一個json,然後exit()


推薦閱讀:

開發完項目都需要進行內存泄露的檢測嗎?
如何評價基於Volta架構的NVIDIA TITAN V?
ARM架構和MIPS架構以及X86架構的區別是什麼?
如何構建千萬級用戶的後台資料庫?
哪些在操作系統架構設計上的良好方法可以應用在「企業的OS」的設計上?多謝!

TAG:PHP | 架構 | REST | MVC | 前後端分離 |