javascript - 請問前后端分離的spa應用是怎么一回事兒?
問題描述
作為一個自學后端的前端不是很懂,spa是訪問網址時一次性返回去,之后靠前端路由切換顯示么?然后服務器只負責對ajax返回數據?
問題解答
回答1:你只需要提供一個url鏈接到前端的index.html頁面,然后寫好接口API就行了,其他的都交給前端處理。
回答2:是的,你理解的沒錯只有一個入口文件,靠路由切換組件,后臺提供api
回答3:1.是不是一次性返回取決于你有沒有做了代碼異步加載,提取公共部分的處理2.spa頁面的切換是通過前端路由導航的3.前后端完全分離,代碼沒有耦合,服務器只提供數據服務,前端通過ajax調用服務端接口,獲得數據之后再更新頁面。
希望能幫到你。
回答4:傳統:前端由多個頁面組成,后端負責組織數據、實現路由、甚至生成頁面內容;前端后端其實是混雜一起的;當前:前端由單個頁面或者少量頁面構成(Single Page Application),前端框架負責組織路由,切換頁面內容(一般將頁面拆分成組件/Componet),后端只負責提供 API 服務并收發數據;這樣前后端就基本分離解耦了。
回答5:后端只負責提供前端所需要的數據,其他頁面間的切換跳轉與用戶的交互等邏輯的實現都由前端來完成。spa單頁面只需要一個index.html頁面,作為整個項目的入口,然后引入必需的js文件,其他js文件可以按需加載,具體的頁面內容可以由js動態生成渲染。有時頁面的變化不是重新請求,也不是刷新,而是通過事件驅動,執行對應的方法來重新渲染當前頁面。
回答6:一切都要從ajax的局部刷新說起.
傳統的web, 瀏覽器輸入一個url然后返回一個頁面.
后來, 人們發現這樣太浪費資源啦, 比如, 我點了個贊, 那么數據庫和頁面上的贊數都要+1, 這個刷新頁面肯定是不行的啊, 那就’局部刷新’吧.
再后來, 機智的開發者又想到, hash路徑段(形如#header)是不會像服務器發請求的, 那么我們可以在點擊一個錨點的時候加載一個小頁面, 局部刷新, 再加上可以操作瀏覽器的歷史記錄來實現回退等功能. 那干脆就搞個前端路由吧. 于是前端路由就出現啦.
其實前端路由本質上也是一種局部刷新, 但是更規范. 這次刷新, 拉回來的是一個完整的組件, 這個組件包含了視圖和數據. 這里的數據又分為兩種, 一種是后端傳過來的, 暫且成為數據庫數據, 另一種是為了更好地管理視圖而在前端生成的數據, 暫且成為視圖數據.
一通亂說過后, 我們就可以好好分析一下SPA到底是個什么東西啦.
SPA是single page application的簡稱, 中文叫單頁應用. 何為單頁? 就是只有一個頁面, 這個頁面一般是index.html, 這是項目的入口文件. 自項目啟動到結束, 瀏覽器中始終都是這個頁面, 你看到的變化只是組件之間的創建和刪除. 比如你在這個頁面里引入bootstrap(不是個好主意), 那你所有的組件都會受到bootstrap的影響.
... 實在寫不下去了, 剩下的太長啦. 等我哪天寫個文章好好說一下. 作為的答案的話, 篇幅實在太大.
簡單的來說, 就是前端提供視圖, 后端提供json數據. 用后端的數據來渲染前端的頁面.
相關文章:
1. mysql - ubuntu開啟3306端口失敗,有什么辦法可以解決?2. php傳對應的id值為什么傳不了啊有木有大神會的看我下方截圖3. extra沒有加載出來4. javascript - 微信網頁開發從菜單進入頁面后,按返回鍵沒有關閉瀏覽器而是刷新當前頁面,求解決?5. mysql - C#連接數據庫時一直這一句出問題int i = cmd.ExecuteNonQuery();6. mysql日期類型默認值’0000-00-00’ 報錯7. 求救一下,用新版的phpstudy,數據庫過段時間會消失是什么情況?8. mysql replace 死鎖9. windows - asp.net連接上mysql之后如何調用?比如下面的登錄驗證功能怎么實現10. android - 安卓做前端,PHP做后臺服務器 有什么需要注意的?
