Двойные дефисы в HTML-комментарии - PullRequest
1 голос
/ 21 июня 2019

Я вижу противоречивую документацию и мнения о том, является ли "-" недействительным в комментарии HTML. Большинству документации, которую я видел по этому вопросу, 5-10 и более лет. Рассмотрим следующий упрощенный код в HTML с использованием синтаксиса BEM для имен классов CSS.

<html>
    <head>
        <meta charset="utf-8">
        <title>Page</title>
    </head>
    <body>
        <div>
            <header>
                <div>
                    <div>
                        <div><a href="/">link</a></div>
                        <!-- <div class="block__element--modifier"></div> -->
                        <div></div>
                        <div></div>
                    </div>
                </div>
            </header>
        </div>
    </body>
</html>

Я смотрю на использование синтаксического анализатора, который читает это и автоматически закрывает мой заголовок, создавая такой результат. Глядя на код, он идентифицирует «-» в прокомментированном классе как закрытие комментария, комментируемый закрывающий тег div используется, и позже он определяет, что уровень требует, чтобы заголовок был закрыт.

<html>
    <head>
        <meta charset="utf-8">
        <title>Page</title>
    </head>
    <body>
        <div>
            <header>
                <div>
                    <div>
                        <div><a href="/">link</a></div>
                        <!-- <div class="block__element--modifier"></div> -->
                        <div></div>
                        <div></div>
                    </div>
                    </header>
                </div>
            </header>
        </div>
    </body>
</html>

Хотя оставлять закомментированный код не самый лучший, это вполне нормальная вещь в типичном цикле разработки. В нашем случае этот вывод вызывает очень неправильное отображение этой страницы.

Этот вывод явно не верен, но я хочу понять, что должно быть правильно. Согласно this и другим постам существует идея, что "-" или двойные дефисы не должны использоваться в HTML, потому что это не разрешено в XML. Действительно, спецификация HTML4 препятствует этому , но, похоже, HTML5 не делает этого различия . У меня всегда было понимание, что логика и синтаксический анализ действительно не должны использоваться для HTML, потому что на самом деле это не подмножество xml . На самом деле, я никогда не был счастлив, когда шел по этому пути ».

Влияние здесь заключается в том, что BEM является общим соглашением, и если текущая спецификация HTML запрещает это, мы можем захотеть избежать BEM или изменить его для будущего использования. В то время как HTML и парсеры по умолчанию довольно просты, придерживаться спецификации, как правило, является лучшей практикой для будущей стабильности. Мысли?

1 Ответ

0 голосов
/ 21 июня 2019

Вот почему оригинальная схема именования БЭМ отличается:

block-name__elem-name_mod-name_mod-val

  • Имена пишутся строчными латинскими буквами.
  • Слова разделяются дефисом (-).
  • Имя блока определяет пространство имен для его элементов и модификаторов.
  • Имя элемента отделяется от имени блока двойным подчеркиванием (__).
  • Имя модификатора отделяется от имени блока или элемента одним подчеркиванием (_).
  • Значение модификатора отделяется от имени модификатора одним подчеркиванием (_).
  • Для логических модификаторов значение не включено в имя.

Подробнее см. https://en.bem.info/methodology/naming-convention/.

...