Closed weber closed 8 years ago
А зачем создавать папку и одноименный контроллер в ней? Быть может более вдумчивый подход к именованию контроллеров создаст меньше проблем?
2014-07-10 18:55 GMT+01:00 Sergey Kirichenko notifications@github.com:
Позвольте внести предложения на внесение изменений, так как считаю нелогичное и излишние некоторые моменты работы с шаблонами.
1.
Контроллер в корне директории «controllers» Данный контроллер не найдет свой шаблон(по умолчанию) и вернет «500 Error: Template main/main not found». Логичнее он должен взять шаблон из корня папки «views» — что то вроде глобальных шаблонов. 2.
Контроллер вложенные в директории «controllers/name_folder/» Тут при работе с шаблоном нужно создавать излишнюю вложенность директорий
К примеру для контроллера /app/controllers/manager/manager_controller.js шаблон будет находится в /app/views/manager/manager/manager.ejs. Зачем линяя директория manager? Логичнее /app/views/manager/manager.ejs И для того чтобы избегать эту вложенность приходится писать так
render('../index',{});
да и красоты не какой :)
Структура приложения
Решение возможно не совсем «класс!» :) но
compound/lib/controller-extensions.js
function getViewFilename() { if((self.controllerName.indexOf('/')+1) === 0) return view;
var partControllerName = self.controllerName.split('/'); delete partControllerName[0]; var str_partControllerName = partControllerName.join(''); return path.join(str_partControllerName, view).replace(/\\/g, "/"); }
После этого теперь: Контроллер в корне директории «controllers»
// /app/controllers/main_controller.js load('application'); action('main', function (req, res) { render({}); });
использует шаблон /app/views/main.ejs и Контроллер вложенный в директорию «controllers/name_folder/»
// /app/controllers/manager/manager_controller.js load('application');
action('manager', function (req, res) { render({}); });
использует /app/views/manager/manager.ejs
Если уж нужно использовать дополнительную вложенность директорий то обращение к ним по моему мнению будет симпотнее и понятнее
load('application');
action('manager', function (req, res) { render('manager/manager',{}); });
Зы: Прошу прощения за способ изложения, старался донести как можно доходчиво.
— Reply to this email directly or view it on GitHub https://github.com/1602/compound/issues/630.
А зачем создавать папку и одноименный контроллер в ней?
ну хотя бы для того чтобы можно было разграничить контроллеры, ну к примеру: контроллеры каталога в одной директории, а контроллеры магазина в другой, админка в третей( Как бы разделяй и властвуй)
По поводу «одноименный контроллер» есть какие то ограниечения?
@weber что-то тут бемом попахивать начинает ;-) но я за, сам с таким же сталкивался. Часто удобно котроллеры с модельками и вьюхами раскидывать по «библиотекам» и подключать на разных проектах.
Мы тут не ищем никакой абсолютной правды. Если у вас есть предложения, пишите код и делайте пул реквесты.
Позвольте сделать предложения на внесение изменений, так как считаю нелогичное и излишние некоторые моменты работы с шаблонами.
К примеру для контроллера /app/controllers/manager/manager_controller.js шаблон будет находится в /app/views/manager/manager/manager.ejs. Зачем лишняя директория manager? Логичнее /app/views/manager/manager.ejs И для того чтобы избегать эту вложенность приходится писать так
render('../index',{});
да и красоты не какой :)Структура приложения
Решение возможно не совсем «класс!» :) но
compound/lib/controller-extensions.js
После этого теперь: Контроллер в корне директории «controllers»
использует шаблон /app/views/main.ejs и Контроллер вложенный в директорию «controllers/name_folder/»
использует /app/views/manager/manager.ejs
Если уж нужно использовать дополнительную вложенность директорий то обращение к ним по моему мнению будет симпотнее и понятнее
Зы: Прошу прощения за способ изложения, старался донести как можно доходчиво.