2013-02-22 76 views
2

我剛剛閱讀了單頁面Web應用程序,該應用程序公開了一個用於檢索數據的RESTful接口 - 例如以JSON格式,並且只提供一個引用負責調用JavaScript文件的HTML頁面RESTful界面以及在客戶端的Web瀏覽器中動態構建Web用戶界面。單頁面播放應用程序

要在Play中實現此功能,應該實現控制器,以便它們返回JSON而不是HTLM,並實現一些CoffeScript以在客戶端呈現用戶界面。

到目前爲止這麼好...但我想知道這種設計是否適用於大型Web應用程序,因爲在客戶端運行的JavaScript代碼的數量會越來越多。

我最初的想法是使用Play的模板引擎實現Web應用程序,然後爲移動應用程序提供RESTful接口。

任何建議,想法,或鏈接到文件覆蓋這個話題將非常感激;-)

回答

0

提供一個通用的REST API應該可以正常工作。目前,我正在爲瀏覽器(Backbone等)和iOS客戶端使用Play 2.0服務器應用程序。瀏覽器客戶端與Play應用程序完全分開並獨立部署。

我認爲與Play模板方法相比,有一些初始開銷,但只有一組控制器來測試等,使生活更輕鬆。

需要考慮以下幾點:

  • 客戶端身份驗證。最好你對所有的客戶使用相同的方式。
  • 在某些時候,您可能想要爲其中一個客戶端引入一些專用的REST API,以節省帶寬和請求數量。例如,移動登陸屏幕是一個典型的候選人。
  • 由於Web客戶端開發人員不共享代碼庫,因此您需要更詳細地記錄您的REST API。
1

Play for Scala book有關於這一主題的一章。他們使用單一視圖作爲切入點,就是這樣。

至於大型應用程序,這是一個值得關注的問題。爲此,您可能需要使用諸如RequireJS(Play 2.1內置支持)等庫。您也可能希望將您的應用分成多個子模塊來管理複雜性。在客戶端,您可能也應該使用框架,例如AngularJS

關於Play沒什麼值得說的,它是公開RESTful JSON服務的非常好的平臺。我建議你看看JSON documentation,也可以看看ReactiveMongo