Я узнал кое-что интересное о том, как представления работают с шаблонами Pug в Express.js. В последнее время я много поработал в Ember.js, и теперь мне удобнее размещать свои представления в каталогах и подкаталогах, которые отражают их путь.

Например, если у меня есть путь /mydirectory/view/, кажется логичным, чтобы шаблон для этого представления сохранялся следующим образом:

views
|--mydirectory
|  |
|  -- view.pug
|--layout.pug
|--error.pug
|--index.pug

Однако, когда я попытался сохранить свои представления таким образом, я быстро обнаружил странную ошибку. Похоже, что Паг не смог найти ожидаемый layout файл для моего представления. Я предполагал, что он будет автоматически использовать layout.pug из моего корневого views каталога, но оказалось, что это не так. Если мне нужен макет для представления в подкаталоге, мне нужно либо создать новый, либо скопировать его из моего корня.

Фактически, Pug ищет файл макета в каждом каталоге и, если он отсутствует, возвращает ошибку. Это не то, чего я ожидал от Ember, где дочерние шаблоны наследуются от родителей.

Мой вывод из этого заключается в том, что, в отличие от Ember, Pug / Express предназначен для создания уникального макета для каждого каталога. Это означает, что я могу использовать каталоги для отслеживания уникальных макетов, вместо того, чтобы они соответствовали структуре моего пути.

Хотя для этого нужно немного привыкнуть к Ember, это также интересно тем, что обеспечивает большую гибкость в просмотрах на сайте.

Вы сталкивались с этой проблемой с Мопсом? Как вам нравится структурировать свой views каталог? В чем вы видите преимущества и недостатки того, как Pug обрабатывает макеты и представления?