Структура папок как для серверной, так и для толстой клиентской веб-приложения
В настоящее время я использую Node.js для бэкэнд и extjs или магистрали для клиента, и теперь я полностью запутался в структуре папок.
С помощью express
моя структура папок выполняется следующим образом
appname
|--controllers
|--models
| |--appmodel.js
|--public
| |--css
| |--js // any client-side javascripts
|--routes
| |--router.js
|--views
| |--appview.ejs
|--app.js
где app.js
- это точка входа, и она использует router.js
для обработки маршрутизации и рендеринга представлений. Это работает отлично, если это только серверная разработка. Теперь, если я хочу использовать ExtJS или Backbone для клиента, как мне организовать мой код? Должен ли я добавить его в папку public
или views
?
appname
|--controllers
| |--extbasedcontroller.js // correct location?
|--models
| |--appmodel.js
| |--extbasedmodels.js // correct location?
|--public
| |--css
| |--js
| | |--extjs // extjs files
|--routes
| |--router.js
|--views
| |--appview.ejs
| |--extbasedview.ejs // correct location?
|--app.js
Если это так, где я должен поставить модель для своих файлов extjs? Если я поместил его в папку models
, мне кажется, что я смешиваю код клиента и сервера в одной папке, и это будет путать...
Ответы
Ответ 1
На вашем месте я бы сделал так:
appname
|--ServerCode
| |--controllers
| |--models
| | |--appmodel.js
| |--routes
| | |--router.js
| |--views
| | |--appview.ejs
| |--app.js
|--public
| |--css
| |--js // any client-side javascripts
| |--models
| |--controllers
| |--...
Основная идея состоит в том, чтобы поместить общую папку вне области вашего сервера javascript.
См. пример здесь: https://github.com/madhums/node-express-mongoose-demo/
Ответ 2
Просто поместите все /webapp
под /public
, чтобы вы прекратили создание, например, внешних моделей под /public/webapp/models
appname
|--models
| |--appmodel.js
|--public
| | |--webapp // extjs/backbone files
| | | |--models
| | | |--controllers
| | | |--css
| | | |--js
| | | |--img
| | | |--views
| | | | |--appview.ejs
| | | | |--extbasedview.ejs
|--routes
| |--router.js
|--app.js
Ответ 3
Вот моя предлагаемая структура папок:
appname
|--webapp
| |--img
| |--js
| | |--controllers
| | | |--controller.js
| | |--something.js
| |--css
| |--views
| | |-- appview.ejs
| |--index
| |--404 etc.
|--app.js
|--package.json
|--README
|-- etc.
Я думаю, что это очень аккуратно и легко ориентироваться, потому что весь сервер и node_modules находятся снаружи, а файлы, которые мне нужны для приложения, находятся в папке "webapp" . Если вам действительно нужна папка с именем "public" (я не могу помнить, что она нужна для экспресс-потребностей или нет), я думаю, вы можете просто переименовать папку "webapp" в "public" или переместить папку "webapp" внутри "public" . Я бы также рекомендовал использовать AngularJS вместо .ejs, но делать то, что вы хотите сделать.:)