2015-11-04 221 views
0

我的項目將是一種craiglist,用戶可以發佈聲明的網站(evereday-life物體,汽車,平板等)。因此,身份驗證,個人資料頁,內容創作,展示出售對象等客戶端或服務器端框架?

我已經開發了後端的很大一部分:我在用Java開發的三層體系結構一個RESTful API。它使得與數據庫的鏈接,爲我提供不同的URL並向我發送相關的JSON。

網址,例如:

http://api.mywebsite.fr/user?userid=1向我回:

{"user": {"username": "jdoe1234", "email", "[email protected]"}} 

我有整個網站上執行的所有操作的URL(anouncement創作,最後的數據更新......一切,我已經仔細地聲明它們是POST,GET,UPDATE,DELETE等)。還有oAuth可以保護API不受令牌所允許的查詢的影響。

這是所有「服務器」方面,我認爲有沒有異議。但是,如果所有的操作都是由web服務管理的,我不會看到像Symfony/cakePHP,Zend等這樣的大型服務器端框架在我的不同入口點上發出HTTP請求的興趣,檢索JSON並填充HTML。

所以我看着客戶端框架,如Angular,Ember等。起初,它似乎非常適合我的情況:http請求的可能性,管理成功或錯誤的情況下做什麼,直接利用生成的JSON填充視圖等。

我甚至沒有設法制作我在angularjs和Ember之間進行了選擇,兩者都非常相似,但是隨着Angular v2的發佈,我擔心v1的可維護性(如果我選擇Angular,它將會是v1,因爲大多數教程和問題都與Angular 1.X )。

我不知道如果我通過選擇客戶端框架做正確的事,恐怕他們「brident」(不知道這個詞的,對不起)我。另外,它在瀏覽器中完全實例化,所以用戶可以絕對更改我提供的所有代碼和數據。這對我來說似乎很奇怪。

我想是絕對肯定,我的情況下,使用我做這個應用程序提供給公衆例如技術。我想正確地做事情,以避免可維護性或安全問題。 (webservice/api),使用像Angular這樣的客戶端框架還是應該留在Symfony/Zend等大型服務器端框架中是一個不錯的主意?知道我將自己置於這個平臺將被大量使用的環境中(craiglist可比較的流量)。

+0

爲什麼修復沒有損壞的東西,或者引入你認爲不需要的外部依賴關係? – dandavis

+0

其實我只在後端有API,所以我的問題在於知道什麼是最適合我利用API的。我暫時不使用任何服務器或客戶端框架:) – Nuzzob

回答

2

我會說 - 取決於你是否想成爲未來更多的前端傢伙或後端傢伙。如果你想成爲全棧開發者,那麼它不適用。

在我看來,兩者的Symfony/Zend公司或其他大的服務器端框架並不如此令人興奮的動態前端JavaScript框架像灰燼/角/反應。

另外,如果你已經REST的API和OAuth認證的後端部分實現我與Ember去。爲什麼? Ember Data是與後端API交談的絕佳工具。它很成熟,它在需要的時候會懶散地加載記錄,並且它是非常可定製的。

它在瀏覽器中完全實例化,使用戶可以更改 絕對的所有代碼和數據我提供...

灰燼已建成安全像消毒這是在它呈現的數據的模板語言 - HTMLBars。此外,還有在Ember中實施的CORS和內容安全策略(CSP)標準。

我想絕對肯定我使用的技術,例如我使用這種技術的情況下,我使用這個應用程序可以讓我公開該應用程序。我想 做得不好,爲了避免可維護性或安全 的問題。

在灰燼你可以創建成熟的,安全的,生產就緒的應用程序,但你需要熟悉你的灰燼技能在一定程度上建立這樣雄心勃勃的Web應用程序,但它的建築的每個應用程序的一部分。

有了我已經有的東西(webservice/api),是不是很好用 想法使用像Angular這樣的客戶端框架?

是的,這是使用MEAN堆棧或使用Ember + RESTful API的非常流行的解決方案。

爲什麼要選擇Ember而不是Angular(其中有更大的 社區/教程/回答問題)?

角有較大的社區/教程/回答問題,但是當我開始用角超過灰燼,瞭解它可能帶來的好處的一些方面的項目,我很驚訝,怎麼有它的社區做一件事情沒有達成共識。因此,我不必快速搜索如何聲明和使用指令(我認爲這是讓我困惑的事情),我不得不以另一種方式做最好的研究。此外,還有很多方法來設置項目(在哪裏放置自定義指令,不同的Angular對象),並且您必須做另一項研究來選擇哪一個。我最終使用repo healthy-gulp-angular作爲我的模板,但是您可以看到它在8個月內未更新,但我認爲在這8個月中Angular有很多更改,我不確定此回購是否是最佳選擇。

在Ember中,您擁有使用Convention over Configuration原則構建的Ember CLI工具。您還有Ember Data,它利用JSON API standard - 如果您現在沒有兼容JSON API的服務器端,則可以編寫自定義適配器來標準化服務器響應或更改後端回覆的方式。在Ember中,你根本不會遇到所有頭痛和不同的最佳解決方案,只能根據你的要求做一件基本的事情。

什麼意思是「單頁應用程序」?

單頁面應用程序基本上是一個頁面,當您瀏覽時不必重新加載所有資產和HTML。它比PHP更具優勢 - 當用戶移動到另一個位置時,他只下載該路線的新數據。 More info here.

這些框架是否允許我創建真實路線? ( www。myapp/profil/userid等)

是的,當然。您甚至不需要在您的網址中使用#。對於profile路由和指定路徑profile/:userid,當用戶將打開URL www.myapp/profile/userid時,他將自動被帶到profile的路由,並且userid將被解釋爲路由參數,因此您可以將這個userid並找到用戶從model掛鉤店中記錄。

+0

謝謝您的回答!我過去曾經使用過Zend作爲另一個項目,但正如我在這裏所說的那樣,我並不真正看到它是如何100%高效的,因爲我已經有了一個精心構建的API。 我在你的個人資料中看到你是「親」,所以我問自己,如果你的意見是客觀的(沒有冒犯性)。爲什麼我應該選擇Ember而不是Angular(它有更大的社區/教程/回答問題)?什麼意思是「單頁應用程序」?這些框架是否允許我創建真正的路線? (www.myapp/profil/userid等)。 再次感謝您的時間! – Nuzzob

+0

答覆已更新。我不是100%客觀的,因爲:a)我花更多時間在Ember上,我只知道Angular的基礎知識; b)這個問題是基於意見的:P –

+0

偉大的更新,這將是非常有用的做出我的選擇,再次感謝你;) – Nuzzob

0

客戶端=速度,服務器=穩定

js框架更新每週一次 非JS後端每年一次

客戶端依賴於行爲取決於瀏覽器 返回是隻在機器上但不在環境上

我選擇了FE因爲我厭倦了通過將變量值寫入數據庫來調試代碼,以便真正看到控制器中發生了什麼-_-