2014-10-04 94 views
13

我已經做了一些研究,並且我注意到在很多示例Symfony2/AngularJS應用程序中,前端和後端都結合在一起;例如,視圖使用Twig。單頁應用程序 - 獨立於後端的前端?

我一直認爲有可能(和通常的做法)分別創建前端和後端,並通過API加入它們。在這種情況下,如果我想更改一個PHP框架,我可以做到這一點,沒有任何問題,它將足以保持API。

那麼做這件事的最佳做法是什麼?如果你可以向我解釋它,那將是非常好的,如果你只是給我一個關於github或者其他東西的好例子的鏈接,那就更好了。

+0

你是正確的,你的索引應該是你唯一由服務器生成/解釋的html。剩下的html,css,js是靜態的,你的端點數據只是作爲JSON傳遞。 – Dylan 2014-10-04 19:26:59

+0

@Dylan你也可以避免返回索引。請參閱我的回答 – Qualcuno 2014-10-04 19:34:48

+0

Symfony2/AngularJS還有一些注意事項可能會讓您對此有所瞭解。像Twig和angular這樣的東西會衝突變量語法{{}}。所以關於這個問題有很多教程,並不完全關於最佳實踐或任何事情。 – Dylan 2014-10-04 19:38:40

回答

14

我們一直在使用相同的方法開發一些項目。不僅我認爲它沒有任何「副作用」,但解決方案也非常優雅。 我們通常在Node.js中創建後端,它只是一個API服務器(不一定完全符合REST)。然後,我們爲前端創建另一個單獨的Web應用程序,完全用HTML5/JavaScript(帶或不帶Angular.js)編寫。 API服務器從不返回任何HTML,只是JSON!甚至沒有索引結構。

有很多好處:

  • 的代碼是非常乾淨和優雅。前端和後端之間的通信遵循標準化的方法。服務器公開了一些API,客戶端可以自由使用它們。
  • 它使前端和後端擁有不同的團隊變得更加容易,他們可以非常自由地工作而不會相互干擾。通常編程技能有限的設計師也很欣賞這一點。
  • 前端只是一個靜態的HTML5應用程序,所以它可以(並且我們經常)很容易託管在CDN上。這意味着您的服務器永遠不必擔心靜態內容,並且它們的負載會降低,從而爲您節省資金。用戶也更快樂,因爲CDN通常對他們來說非常快。

一些提示,你根據我們的經驗,我可以給:

  • 最大的問題是與用戶的身份驗證。這並不是特別複雜,但您可能希望使用例如OAuth 2.0等協議來實現身份驗證,以供您內部使用。因此,前端應用程序將充當OAuth客戶端,並從後端獲取身份驗證令牌。您可能還需要考慮將身份驗證服務器(通過OAuth)從API服務器移到另一個單獨的資源上。
  • 如果您將webapp託管在不同的主機名上(例如CDN),您可能需要處理CORS,也可能需要處理JSONP。
  • 您編寫後端的語言並不重要。儘管我們使用Node.js獲得了最好的結果,但我們已經在PHP(包括Laravel)中實現了這一點。對於節點。JS,我們發表boilerplate on GitHub,基於RestifyJS

我過去問一些問題,你可能感興趣的:

+0

謝謝,我會閱讀你給我的。 但我還有一個問題。混合Symfony2和AngularJS有什麼理由嗎?也許如果有人希望只在部分應用程序中使用Angular,比如分頁或添加註釋? – tdudzik 2014-10-05 10:46:15

+0

Angular更加強大,可以創建基於MVC的整個Web應用程序。我不明白爲什麼你應該限制它到特定的組件。無論如何,選擇是你的:) – Qualcuno 2014-10-05 16:05:53

+0

與Symfony2它是超級容易的建立一個API,並在AngularJS中實現它,所以這兩個怪物框架的組合是非常合理的,但是限制Angular到特定的組件不是, d更快地完成jQuery所做的工作。 – dimention 2014-11-30 17:45:20

相關問題