Как вы организуете ваши файлы Backbone? - PullRequest
20 голосов
/ 25 августа 2011

Я хочу внедрить магистраль в большой веб-проект с несколькими «приложениями», которые будут его использовать, и я пытаюсь найти хороший способ упорядочить свои файлы. Два, которые я придумала до сих пор:

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
|  ... 

Я склоняюсь к последнему, поскольку оно имеет более четкие границы между разделами веб-сайта и объединяет приложения, но наша текущая структура серверной инфраструктуры намного больше похожа на первую.

1 Ответ

21 голосов
/ 26 августа 2011

Я бы пошел с модифицированной версией второй ... в основном, отбросьте папки для m, v и c в каждом разделе вашего сайта. на самом деле нет необходимости разделять их на подпапки, когда имена файлов и имена классов уже будут отражать то, что они есть.

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

глядя на этот макет, я все еще знаю, что "item" - это модель, "items" - это коллекция, а "itemRow" - это представление, потому что это соглашение, которое вы установили. добавление дополнительного слоя с именами папок, на мой взгляд, только добавляет сложности и не имеет значения.

также - (вы, вероятно, знаете это, но в случае, если другие читают этот пост, не ...), обязательно используйте что-то вроде require.js, чтобы объединить / минимизировать все ваши js в один файл перед развертыванием на вашем производственные среды. Хранение кода организованным таким образом отлично подходит для целей разработки и отладки. но когда для производственной системы наступает время использовать код, разделение его на несколько файлов приводит к значительным задержкам для конечного пользователя. require.js решает эту проблему, предоставляя простой способ иметь как организованные файлы во время разработки, так и один минимизированный файл для производства.

...