Ответ 1
1. Можно ли настроить Durandal для достижения вышеуказанного (или чего-то подобного)?
Да, у вас может быть любая структура папок, которую желает ваше сердце. Durandal не накладывает никакой структуры папок на ваше приложение, но у него есть соглашение по умолчанию, которое полностью переоценивается.
Если вы используете Durandals router, вам нужно посмотреть, как настроить его для поиска модулей. Есть много способов сделать это, я предпочитаю создавать свое собственное соглашение, переопределяя router.autoConvertRouteToModuleId
.
Если вы не используете плагин router, вам придется самостоятельно управлять uris для своих модулей, и это делается, следуя requirejs ' и используя это соглашение по модулю w/durandals composition.
Кроме того, вы можете переопределить, как он находит представления для привязки к вашим модулям, переопределяя соглашение viewlocators. Durandal обеспечивает очень упрощенный способ структурирования небольших приложений прямо из коробки, но если вам нужно создавать более крупные приложения, рекомендуется создать собственные соглашения.
2. Разве разумно отважиться от стандартных дюрандальных конвенций? 3. Каковы потенциальные проблемы при этом?
Итак, существуют соглашения о том, как открывать модули и как открывать полностью видимые виды. И я рекомендую вам переопределить их и выбрать способ, который лучше всего подходит. Но, поскольку для размещения durandal внутри вашей папки сценариев, как вы указали выше, я не думаю, что это хорошая идея.
Я не рекомендую это, потому что я вижу папку сценариев в качестве места для всех ваших сторонних скриптов, которые являются модулями NON-AMD. Это связано с тем, что Durandal также поставляется с optimizer.exe, который позволяет минимизировать/сжать/убрать все ваши файлы html/css/js (amd) в 1 файл.
Если вы сохраняете все приложение в папке приложения, а затем сохраняете папку durandal внутри папки приложения, оптимизатор работает только потому, что он находится внутри папки app/durandal/amd. Таким образом, когда вы его выполнили, он перекроет до 2 каталогов в вашу папку приложений и затем сканирует каждую подпапку, чтобы создать файл app.build.js для оптимизации. то он сжимает ваше приложение в один файл для вас.
Это приводит к необходимости вручную редактировать файл app.build.js каждый раз, когда вы добавляете новый файл в свой проект. Конечно.. есть и другие инструменты, которые могут сделать это тоже.., но вам придется потратить время на изучение их api и как их настроить. Если вы не хотите посвятить время изучению чего-то вроде grunt, то этот оптимизатор - это задница. Лично мне нравится возможность просто дважды щелкнуть что-то и создать для меня все мое приложение.
Что касается размещения всех ваших сторонних библиотек, которые являются не-amd в отдельной папке скриптов, я бы рассмотрел их сжатие, используя набор MVC. Причина, по которой я буду связывать их отдельно, состоит в том, что вы знаете, что эти файлы arnt меняются очень часто, и если вы свяжете их с отдельными js файлами, они могут быть кэшированы браузером отдельно. Принимая во внимание, что если ваш спа изменяется, что он, вероятно, будет... тогда вы хотите, чтобы браузер кешировал это отдельно, поэтому ему нужно только повторно загрузить сжатое приложение.