Я бы пошел с модифицированной версией второй ... в основном, отбросьте папки для 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 решает эту проблему, предоставляя простой способ иметь как организованные файлы во время разработки, так и один минимизированный файл для производства.