想用CI架構做個網站,有以下幾個需求:
1.前後端完全分離,前台和後台都使用JSON格式介面進行資料交換;
2.不管是前台還是後台,其前端和後端都是獨立的一個項目。
不知道這個怎麼實現,希望各位大牛指點以下
回複內容:
想用CI架構做個網站,有以下幾個需求:
1.前後端完全分離,前台和後台都使用JSON格式介面進行資料交換;
2.不管是前台還是後台,其前端和後端都是獨立的一個項目。
不知道這個怎麼實現,希望各位大牛指點以下
第一點,一般情況下,Controller經過一系列資料庫CRUD得到需要顯示的資料,載入前端模板檔案,再由模板檔案渲染資料最終顯示出來完整的HTML頁面。要實現你說的方式,需要改變Controller的行為:把CRUD得到的資料轉化為json格式,直接print出來。同時前端每個靜態頁面通過ajax請求不同的Controller得到需要的json資料,用javascript把資料放置到html頁面中的各個位置,最終顯示完整HTML頁面。
第二點,前後端都是獨立的一個項目,可以簡單理解為模組化,前端,後端,甚至是Blog部分,留言部分,新聞部分,分類部分,都是一個獨立的模組。CI本身不經過重載核心檔案實現這個功能比較麻煩,最簡單的方法是使用CI的HMVC外掛程式,把每一個功能做成獨立的模組,每個模組中都含有獨立的MVC部分。這樣在檔案組織圖方面,每個模組的代碼可以放在各自獨立的檔案夾中。另外在資料庫設計方面,每個模組盡量使用各自獨立的資料表。各模組間的設計也盡量採用鬆散耦合模式。
提供一個方案:分成四個application
後端api
提供商務邏輯封裝資料處理
後台ui
渲染視圖,提供操作介面與後端api互動
前台ui
渲染視圖,提供操作介面與後端api互動
前端
在前台和後端api之間做橋樑
我們現在的方案是h5+Java springmvc。使用swagger oai統一介面規範,前後分離開發,前端未使用webpack等編譯型js,後端未使用試圖模板。後端未有專業測試,swagger ui代勞。前端用了一個mock server。
如果你使用oai定義restful api,swagger可以直接產生後端前端的介面代碼,也有0code 的swagger-server當前端mock server。後端springmvc也有全自動的restful測試載入器。
當然你需要先寫oai,同類的文檔還有api blueprint
看你的項目是否需要SEO,需要SEO的話最好還是別分離。
分離的話也就是後台實現RESTful API,前台ajax載入就行了。
CI架構可以不用寫View部分,Controller的每一個public函數就可以看做API的調用介面。
前台可以選擇一個UI架構+ajax來擷取資料。
當然ajax擷取的資料是沒有辦法被搜尋引擎發現的(其實通過某些辦法也是可以的),同時用ajax擷取資料做展示的時候需要考慮瀏覽器的前進後退邏輯。