我一直在使用Spine.js和CoffeeScript深入JavaScript MVC很長一段時間。我從一段時間開發了Ruby on Rails,所以我理解模型,視圖和控制器應該分別處理什麼(基於我的溫和體驗)。但在Rails中,我們已經知道(一般來說)每個控制器基本上都是控制一堆視圖(或頁面)並一次處理一個或多個模型的東西。 (也許,如果我錯了,那麼糾正我,因爲我不是職業球員,我必須承認)。Spine.js真實世界的webapp結構
然而,我在建築學方面發現了一個與Spine完全不同的概念。我閱讀了它的文檔並將其插入其示例應用程序中。不幸的是,所有的Spine示例應用程序都展示瞭如何處理單個頁面應用程序,在現實世界中,「更大」的應用程序不再是這種情況。 (如果Spine只能用於「單頁應用程序」,請糾正我)。
假設有一個網站(或應用程序),它由許多頁/科/模塊如下:
1 - 一個主頁,顯示例如縮略圖基於列表 2 - 聯絡網頁 3 - 爲對當前用戶A簡檔管理頁(正常CRUD)
每一頁具有相同的主結構(或佈局)作爲鏈接到上述網頁,搜索輸入字段和一個註銷鏈路報頭(我已經知道登錄頁面應該是分開的,所以我不會在這裏詢問認證)。
這裏棘手的部分是我無法真正弄清楚如何將整個部分連接在一起,我一直在問自己一些問題,在Google和StackOverflow上搜索,但沒有明確的答案。
1 - 「必須」一個脊椎應用程序應用程序只能在一個頁面?我的意思是,修正了頁眉和頁腳,但帶有一個動態內容DIV,它根據用戶點擊標題的哪個標籤來加載和卸載視圖?或者我應該將每個頁面作爲獨立的脊柱應用程序處理?
2 - 我在一個頁面上有多個控制器嗎?例如,應用程序主控制器和導航控制器(標題)?
3 - 是否每個控制器都應該處理一個模型或與之相關的模型? (在示例中,它們之間始終存在1對1關係,如任務模型和任務控制器)。
4 - 我應該在哪裏存儲接口相關的狀態變量在我的應用程序。我應該創建一個「記住」當前用戶的模型,或者例如突出顯示哪個選項卡以供進一步參考?還是應該將它們存儲到控制器中?
5 - 如果它將是一個單頁面的應用程序(但有很多部分或模塊),我應該爲這個頁面中的每個加載部分有一個控制器嗎?
我知道這些對於更有經驗的程序員來說可能是微不足道的問題,但我真的不知道從哪裏開始。所以如果有人能引導我走向正確的軌道,那將是非常棒的。
在此先感謝!
DD
感謝您的回覆, 但是,如果我使用多頁面應用程序,我需要爲每個應用程序引導一個CoffeeScript類,是嗎?因此,如果我的主頁有index.coffee,我應該有例如profile.coffee來管理配置文件頁面中的控制器。是對的嗎? – DavidDev
那麼,你確實需要在某處初始化至少一個頁面特定的控制器。如果只是幾行代碼 - 將其包含在頁面代碼中。否則,每個頁面使用一個單獨的腳本文件。 – Infeligo
謝謝@infeligo的答案。這是很好的頭腦風暴和與你討論。乾杯! – DavidDev