關於構建大型SPA的疑問

來源:互聯網
上載者:User
有沒有全站都使用Angular.js或者Vue.js或者是React.js的?想利用SPA和後端PHP來完成項目,不知道可行性如何?如果採用SPA,怎樣處理一些資料互動的,是用ajax還是通過調用無狀態的api來互動資料,怎樣處理cookies和session的問題。

回複內容:

有沒有全站都使用Angular.js或者Vue.js或者是React.js的?想利用SPA和後端PHP來完成項目,不知道可行性如何?如果採用SPA,怎樣處理一些資料互動的,是用ajax還是通過調用無狀態的api來互動資料,怎樣處理cookies和session的問題。

試著說說我的想法:

  • 無狀態的 API 是指不驗證使用者身份嗎?如果是這樣理解的話,不敏感的資訊(比如相對固定的大型關聯下拉式清單)可以用無狀態的 API。

  • SPA 前端應該是不需要直接使用 cookie 的(參考下一條),session 讓後端的 PHP 去處理,包含必要資訊的 cookie 在每個 xhr 請求都會提交給後端。

  • PHP 端和傳統開發沒太大區別,應該說更簡單了,不再需要考慮渲染的問題,基本上每個請求都是以輸出一個 JSON 來結束的。

  • 前端如果需要儲存一些資訊供下次開啟頁面使用,可以使用 localStorage。

  • 對於大型 SPA 前端的 router 應該算是挺重要,需要認真謹慎對待的一個環節吧。因為使用者可能收藏一個不是初始的 URL 下次直接進入。

  • 如果需要兼顧低配的裝置(如小記憶體的安卓手機或 10 年前的仍在且僅能勉強運行 XP 的 PC),可能不是太合適。但是 SPA 應用常常面向的使用者整體較為前衛一些,或許不會面臨這種問題。

angularjs做開發單頁面應用完全沒問題,我們公司使用的是angularjs+java。java只提供資料(json)介面(restful)。angular.js的$resource服務等裝了ajax,利用延遲物件解決回調等問題。angula.js應用要注意分層,就是類似於背景mvc,各個層功能明確,這樣才不會使整個項目混亂。可以去找一個模板程式看看,根據模板改成自己項目,在npm裡搜generator-開頭的項目。

如果全都使用angular,全程ajax,那seo的問題就無法避免。如果是cookie你可以在官網api上面看到如何儲存ngCookie

如果網站在移動站,完全可以考慮SPA

稀土掘金好像就是全站都是Vue開發的 你可以看看看

worktile就是SPA,可以看看團隊協作工具Worktile技術架構揭秘

另外補充一下,越是大一點的SPA項目,前期一定要有良好的檔案組織圖,以及自動化配置。這裡不得不提一下F.I.S的angular項目種子,很不錯 ,值得去看看一下

登入返回一個token
然後需要使用者身份的操作,傳token
這樣就不需要cookie和session了

全站SPA自己寫小項目的時候做過, 使用的是reactjs, 和後台互動採用superagent, 其實也就是ajax, 身分識別驗證當時查了很多資料, 最後是在登陸後在後台儲存一個身份, 返回token, 並本地儲存, 以後每次請求帶上token並驗證, 然後返回新的token, 這樣做其實是有很大的問題, 但是其他的方式多多少少也有問題, 不過既然打算上restful的話, 個人認為直接上HTTPS是最方便的。
關於前後端分離可以看看我這個(不過後台是java..):http://git.oschina.net/oneayst/springmvc-shiro-react-redux-restful-example/tree/master

順便貼一個關於restful下身分識別驗證的討論, 可以參考一下
http://stackoverflow.com/questions/319530/restful-authentication

話說個人覺得SPA並不意味著要完完全全的實現無狀態..(我好像跑題了)

認證?和平常一樣用 session 就好了。ajax 也是帶著 cookies 的

移動端有很多的spa了,另外seo的問題 可以靠架構結合服務端渲染解決,

我最近使用riotjs做了一個spa的電商項目,PHP寫rest服務,rest服務提供給前端頁面和Android用戶端調用。
使用riotjs構建整個項目,包括首頁,列表,詳情,購物車,訂單,以及登入等頁面。

Angular.js是為spa而生的架構,就是seo有些小問題,不過可以通過其他手段解決。
Vue.js還是不錯額,做spa還可以額,我看uc很多應用都用這個做底層架構,移動端還是不錯的

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.