2012-12-05 24 views
4

我有幾年的背景與服務器端MVC應用程序開發使用CakePHP和一些更多的香草PHP。可悲的是,我不能說JS應用程序的相同,儘管我有使用Mootools查閱靜態頁面的經驗。CakePHP開發人員嘗試使用JavaScript MV *。得到困惑

所以現在我正在研究客戶端應用程序的構建,到目前爲止我的成功還沒有那麼棒。由於我碰到的唯一的MVC是CakePHP,所以每個JS MV *框架看起來都是不可理解的。對於我習慣於編寫整潔的CakePHP和Mootools Class代碼,JS代碼的大塊感覺無序,這並沒有什麼幫助。

我甚至試圖通過模仿CakePHP編寫我自己的簡單MVC類庫,主要用於學術用途。我想不用說,我並沒有真正得到它的任何地方。

  • 的js是異步的:

    有些東西在學習和寫我自己的MVC我意識到。 CakePHP的工作方式是因爲PHP是同步的。在JS中,有一些需要以不同方式實現的事物列表,以及由於異步而可以完成不同的事情列表。服務器端MVC(或者它的CakePHP實現)和客戶端MV *之間最重要的區別是什麼?

  • 我還是不太明白客戶端模型的概念。在Cake中,他們處理數據驗證和數據庫連接。另一方面,客戶端是不安全的環境,因此客戶端模型只能進行基本的數據過濾,預先驗證和默認值。我完全錯了嗎?
  • 某些應用程序需要服務器對應部分。服務器也應該是MVC?
  • 看來,在客戶端MV *中,您可以同時擁有多個控制器。儘管我理解它有其用處,但我在這一點上的知識是如此之少,我甚至不能想到比「它有什麼好處?」這個更好的問題。

我也下載了TodoMVC,並試圖檢查不同的框架,很少成功。它的主要問題是它只有單頁面(動作發生在不同的URL上,但佈局保持不變),實現如此不同以至於我很難理解基礎知識,更別說找到最適合的框架爲了我。此外,它不以任何方式與服務器通信,這是一個巨大的失望,因爲我想看看不同的框架如何做。

所以,對這個問題的最佳答案將是一本書的鏈接稱爲客戶端JavaScript MV *傻瓜(誰只有在服務器端MVC經驗),這將賺你的地方大約500個互聯網絡除了常規的StackOverflow獎勵。

我會非常感謝任何關於我寫的問題主題的任何見解(完整鏈接)。您將獲得標準+ 1的獎勵,並且作爲進一步的獎勵,我保證在便箋上寫下您的暱稱,並將其保留在我的顯示器上以備下個月使用。當然,最有幫助的人的回答當然是接受,另外還可以提供一張照片,用於將他們的暱稱打印到我的顯示器上。

+0

我正在繼續我自己的MVC項目。我想出了客戶端MVC是如何工作的大部分內容,儘管Model層對我來說仍然很模糊,因爲對服務器的直接db查詢是不可能的。換言之,客戶端模型與服務器模型的行爲有着很大的不同,因此我很難決定實現的範圍以及遵循的示例。 – jpeltoniemi

回答

0

我很想知道你最終在哪裏。 PHP是我的第一個愛,雖然我仍然喜歡這種語言的易用性,但當它清楚地被逐漸淘汰,以獲得更快,更具可擴展性的技術時,很難真正認真對待它。

你覺得JavaScript的異步複雜性會讓人頭疼,但它絕對會爲性能提升打開大門。有相當多的庫(比node.js更多的是客戶端工作),目的是讓JavaScript寫成好像它是同步的 - 再次,我沒有看到它幫助你當前的問題,但很高興知道別人分享你的痛苦。

我覺得MVC中的JavaScript可以這樣認爲:

L:模特們只是你的數據的解釋。所以如果你有一個人,你可以說每個人都有一個名字是一個字符串,一個年齡是一個整數,等等。現在,無論何時你創建一個新人,你都可以進行驗證。我發現,模型,客戶端,往往非常簡單。 V:意見是另一個有趣的事情。有些人喜歡有一大套包含HTML(ew)字符串的渲染函數。其他人喜歡讓視圖只是像handlebars.js這樣的模板引擎的封裝(可能是更好的解決方案)。 C:與PHP中的控制器幾乎完全相同的功能。

我對你的建議是不寫你自己的,而是採取Backbone.js(快速成爲行業標準),內外學習它,也許建立在它之上。

祝你好運!

+0

我其實試過了一些js MV *框架。可悲的是我無法與他們中的任何人聯繫。我認爲這是一個開始我自己的MVC框架的偉大決定。這是一次非常棒的學習經歷,我幾乎立即獲得了一些寶貴的見解,而我在使用其他框架時不會很快學到這些寶貴的見解。我的目標是儘可能地模仿CakePHP,否則這很棒,但是我通過組織模型,模型視圖和控制器圖層來打擊牆壁。目前該項目正在休息,但我計劃在我有更多時間後立即回到項目。 – jpeltoniemi

+0

如果它成爲github的方式,請告訴我! – gcoladarci

+0

當然。還有很多事情要做,所以我不會讓我的希望上升:) – jpeltoniemi