Могу ли я ограничить область действия Pug-микшера его блоком объявления, чтобы к нему нельзя было получить доступ, расширяя блоки?

#pug

#pug

Вопрос:

Это проблема, с которой я часто сталкиваюсь, и это заставляет меня задуматься, не ошибаюсь ли я в подходе к Pug-микшированию. Я проверил проблемы GitHub для связанных разговоров.

Учитывая эти файлы:

 // main.pug

extends base

block content
    include message // or the definition itself
     message('Outer')
    block inner
  
 // page.pug

extends main

block inner
     message('Inner')
  

Pug предоставит inner блоку доступ к message микшеру. Это согласуется с другими правилами определения области действия, такими как те, которые касаются переменных.

Я хотел бы явно включить микшины в мои блоки и страницы таким образом, чтобы у них не было «знаний» о объявлениях в блоках, которые они расширяют.

Помимо моих чувств, Pug игнорирует избыточные объявления, что означает, что если вы определите микшер, который разделяет имя с микшером из расширенного блока, Pug будет спокойно использовать существующий микшер. Вы должны быть в курсе всех миксинов из всех блоков, которые вы расширяете. РЕДАКТИРОВАТЬ: я, должно быть, неправильно запомнил это. При дальнейшем тестировании более поздний микширование переопределяет начальный.

Так ли это, или я должен использовать микшины по-другому?

Комментарии:

1. Так оно и есть. Я обнаружил, что если ваше приложение становится настолько сложным, что вы сталкиваетесь с конфликтами имен переменных, в любом случае пришло время провести рефакторинг и присвоить переменным их собственные префиксы в пространстве имен. Сила Pug в упрощении HTML, а не в создании сверхсложных приложений.

2. Спасибо, это то, что я вижу в шаблонах: общие микшины заранее включены в базовый шаблон. Также смотрите Мою правку. Я ошибался в поведении.