Кастомные HTML-теги

9cb555da45c5f22c74a76aa72df27024

Автор этой статьи затронул по-моему мнению очень важную тему, но может как-то не очень подробно её раскрыл, написание комментария с ответом вылилось в этот пост.

Речь пойдет именно о тегах с кастомными именами, не о веб-компонентах.

Давайте посмотрим на то как мы сейчас пишем html

wait

обратите внимание что в этом конкретно примере важно для разработчика, а что является бойлерплейтом? Мы видим что есть loader с контетом wait и этот элемент блочный (но это неточно надо глянуть в css стили еще), а вот

это типовой/boilerplate код.

В препроцессоре html pug (jade) созданном чтобы упростить набор html-кода то же самое было бы записано просто вот так:

.loader wait

кому-то он кажется уже чем-то черезчур, типа сложно такую мешанину где из разделителей только пробелы читать, местами я с ними согласен.

Но посмотрите как легко и нативно мы можем избавится от больше части шаблонного кода

wait

Используя свои имена тегов мы тем самым пишем и читаем меньше бойлерплейта.


Есть и другие плюсы. Вот вы слегка прокрутили код в своей ide и видите в конце блока следущее

    . . . 
      

что это у нас закрывается? Да, вверху страницы у этих тегов есть классы и id и может какие-то другие опознавательные признаки, но что касается закрытия, в каком-то коде можно встретить комментарии с классом закрывающегося тега где-то нет, а можно писать так

     . . .  
      

Обратите внимание что я советую сократить написание бойлерплейт кода, а не тупо заменять стандартные теги на свои. То есть заголовок лучше написать так

My title

а не так

My title

потому что в данном случае, использование кастомного тега увеличивает количество шаблонного-кода, а не уменьшает.

Помимо этого так же стоит отдавать предпочтение тегам main footer article section aside когда они подходят по смыслу вместо div .

Хотелось бы еще сказать про то в каких случаях использовать классы, в каких атрибуты , а когда dataset (атрибуты с data-) и что хватит пихать все в одни только css-классы что show это не класс тега, а состояние, но это пожалуй потянет на отдельную статью.

По всем измеримым метрикам этот подход эффективнее, вы не сможете по научному / математически доказать обратное, а лишь апеллировать к субъективному восприятию , стилю / моде / удобству «наши деды так писали и мы будем» и т.п.

Что касается SEO — то поисковикам совершенно без раницы

(а скорее после компиляции реактом это будет какой-нибудь
) или  и если бы дело было только в SEO то хотя бы закрытые авторизацией SPA писали бы уже с использованием кастомных имён.

В соответствии со спецификацией html имена своих тегов обязательно должны содержать разделитель «черточка» -, но я лично не нашел доводов против использования имен без черточек,  — работает на всех устройствах до которых удалось дотянуться, ровно так же как и , там нет какого-то лага / дополнительного парсинга или чего-то еще, разве что из него нельзя позже сделать из этого тега веб-компонент, без переименовывания.

Я же вижу что многие просто пишут по старинке, новички и не знают что так можно потому что не видели примеров, мидлы всё еще боятся -, а вдруг где-то (на умном холодильнике) это да не сработает, а сеньёрам вообще не до того)

Я же призываю вас писать более лаконичный и выразительный код, ну или как мимнимум не сопротивляться таким вот «нововведениям» в вашей кодовой базе. Это ведь даже не какое-то ноу-хау, не очередной модный фреймворк о котором потом все забудут — это обычный html который так работает уже больше 10 лет, на котором вы и так пишете, но делаете это… ну как в примерах выше)

© Habrahabr.ru