Я пишу серверное и клиентское JavaScript-приложение на основе NodeJS. У меня есть контроллеры, модели, представления и докладчики. Проблема, с которой я сталкиваюсь, заключается в том, что некоторые части кода должны быть только на стороне сервера, а некоторые - на стороне клиента, а некоторые - оба.
Например, контроллеры для меня являются чисто серверной частью, поэтому они не должны быть доступны на стороне клиента. Докладчики, с другой стороны, являются чисто клиентской частью, поэтому должны быть доступны на клиентской стороне.
Взгляните на мою текущую плохую структуру:
project\
project\public\index.js
project\public\images\
project\protected\controllers\
project\protected\models\
project\protected\views\
project\protected\presenters\
Проблема, с которой я сталкиваюсь, состоит в том, что общая папка является корнем документа и защищена вне корня документа. Мне нужно иметь возможность использовать представления как на стороне клиента, так и на стороне сервера. Таким образом, мои взгляды не могут быть защищены. То же относится и к моделям, и к множеству других вещей. Мне тоже нужно иметь доступ к ним на стороне клиента.
Я начинаю думать, что мне нужно поместить всю структуру в корневой каталог документа, за исключением некоторого файла конфигурации. Это то, что я должен сделать? Есть ли проблемы с этим подходом? Я спрашиваю, потому что большинство веб-фреймворков (Django, Zend Framework) работают так, что фреймворк находится вне корня документа.