2011-08-25 85 views
20

我正在尋找實施骨幹到一個大型的網絡項目與多個「應用程序」,將使用它,我想弄清楚組織我的文件的好方法。這兩個我來了這麼遠是:你如何組織你的Backbone文件?

js 
+- models 
| +- search 
| | +- result.js 
| | +- ... 
| +- cart 
| | +- item.js 
| | +- ... 
| ... 
+- collections 
| +- search 
| | +- results.js 
| | +- ... 
| +- cart 
| | +- items.js 
| | +- ... 
| ... 
+- views 
| +- search 
| | +- resultRow.js 
| | +- ... 
| +- cart 
| | +- itemRow.js 
| | +- ... 
| ... 
+- routers 
| +- search 
| +- cart 
| ... 

而且

js 
+- search 
| +- models 
| | +- result.js 
| | +- ... 
| ... 
| +- collections 
| | +- results.js 
| | +- ... 
| ... 
| +- views 
| | +- resultRow.js 
| | +- ... 
+- cart 
| +- models 
| | +- item.js 
| | +- ... 
| ... 
| +- collections 
| | +- items.js 
| | +- ... 
| ... 
| +- views 
| | +- itemRow.js 
| | +- ... 
+- routers 
| +- search 
| +- cart 
| ... 

我傾向於後者,因爲它有網站的部分之間更清晰的線條和應用程序保持在一起,但我們目前的後端框架結構更像前者。

+0

將模型和集合放在一個文件夾中,將它們稱爲result.js和result_collection.js。 – Vojto

回答

21

我會去修改第二個版本......基本上,將m,v和c文件夾放到您的每個網站部分中。當文件名和類名已經反映它們的內容時,真的不需要將它們分離到子文件夾中。

js 
+- search 
| +- result.js 
| +- results.js 
| +- resultRow.js 
| +- ... 
+- cart 
| +- item.js 
| +- items.js 
| +- itemRow.js 
| +- ... 
+- routers 
| +- search 
| +- cart 
| ... 

看這個佈局,我仍然知道,「項目」是一個模型,「項目」是一個集合,「itemRow」是一個觀點,因爲這是你已經設置了該公約。在我看來,添加額外的文件夾名稱層只會增加複雜性並且不會增加任何值。

也 - (你可能知道這一點,但如果其他人閱讀這篇文章不...)一定要使用像require.js的東西來鞏固/縮小所有的js到一個單一的文件,然後部署到您的生產環境。保持這樣組織的代碼非常適合開發和調試目的。但是當生產系統使用代碼時,將其分解爲多個文件會給最終用戶造成嚴重的延遲。 require.js通過提供一種簡單的方法解決了這個問題,在開發過程中既有兩個組織的文件,又有一個用於生產的縮小文件。

+1

是的,我們使用自定義服務器端打包器,它使用.htaccess規則通過它傳遞所有js文件請求,然後將文件捆綁在一起,然後依賴關係決定是否縮小取決於環境。它是緩存的服務器端和客戶端,直到新的推送生成新的緩存密鑰(在開發中,此緩存密鑰被覆蓋爲當前時間)。 – JaredMcAteer

+0

還有什麼其他替代方法需要js,你推薦?只是爲了將所有文件打包到一個文件中(可以縮小) – Samson

+0

我使用Grunt.js。這很棒。 :) http://gruntjs.com –