Я узнал кое-что интересное о том, как представления работают с шаблонами 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 обрабатывает макеты и представления?