Должен ли я заключить теги в /> или нет в HTML5? - PullRequest
8 голосов
/ 16 ноября 2011

Сначала я посмотрел на html5rocks.com источники.Выглядит как доверенный сайт.И они закрывают там теги.

 <link rel="shortcut icon" href="/favicon.ico" />

Потом я посмотрел на HTML5demos , а они не

 <link rel="stylesheet" href="css/html5demos.css">

Ответы [ 5 ]

8 голосов
/ 16 ноября 2011

Это совершенно необязательно. Однако, если вы когда-нибудь захотите обработать файл HTML5 с помощью синтаксического анализатора XML, я был бы склонен включить их.

5 голосов
/ 16 ноября 2011

То, на что вы ссылаетесь, называется Пустые элементы в спецификации HTML5, и согласно спецификации они могут иметь символ / или нет , непосредственно перед закрытием > символа.

См. Раздел 8.1.2.1 Start tags, элемент 6 из Спецификация HTML5 , в котором говорится:

Тогда, если элемент является одним из элементов void, или если элемент является сторонним элементом, тогда может быть один символ SOLIDUS U + 002F (/). Этот символ не влияет на пустые элементы, но для внешних элементов он помечает начальный тег как самозакрывающийся.

3 голосов
/ 16 ноября 2011

Необязательно в HTML5.Вы сами решаете, используете ли вы его или нет.

Лично я считаю более читабельным включение этого /.

1 голос
/ 09 апреля 2013

Пустые элементы в HTML5 можно закрыть либо с помощью />, либо просто >. Внешние элементы (т. Е. Элементы из пространства имен MathML и пространства имен SVG), однако, могут быть самозакрывающимися, и do требует, чтобы их открывающий тег был заполнен />.

Поскольку спецификация HTML5 не дает подробных указаний о том, какой путь будет лучше, мы должны учитывать другие аспекты при принятии решения закрыть Void Elements с помощью \> или >. Вот следующие аспекты, которые я хотел бы учитывать при принятии этого решения для проекта:

  1. Ремонтопригодность

    Лично мне гораздо легче обнаруживать ошибки, особенно ошибки сопряжения тегов, и вообще понимать файл, если он использует закрытие тегов /> для пустых элементов. Это еще более верно, когда есть и внешние элементы, так как эти должны использовать /> закрытия тегов.

    Я также обнаружил, что многие наборы правил подсветки синтаксиса не на 100% совместимы с HTML5 и могут запутаться из-за , а не , использующего закрытия тегов /> с элементами, которые не имеют отдельного закрывающего тега. Конечно, это зависит от редактора, и многие IDE имеют более надежную подсветку синтаксиса, чем другие более простые редакторы, поэтому ваш опыт может отличаться, но если важна удобство обслуживания и простота редактирования, это один из факторов, который часто упускают из виду.

  2. Размер страницы

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

    Однако для 99% приложений существует много других вещей, на которые нужно потратить время и силы на оптимизацию, что будет иметь гораздо большее влияние на время загрузки страницы, чем удаление посторонних / символов из пустых элементов.

  3. Машинная читаемость

    По тем же правилам, что и правила подсветки синтаксиса, не такие гибкие, какими они должны быть, вы, вероятно, обнаружите, что то же самое относится и к библиотекам обработки HTML и / или XML, которые вы можете использовать для обработки страницы HTML. Вы, вероятно, найдете синтаксис, который ближе к XML, лучше поддерживается библиотеками обработки, и если вы ожидаете, что другие разработчики будут обрабатывать ваш HTML, использование наиболее широко поддерживаемого синтаксиса позволит им использовать более широкий набор инструментов.

Заключение
Если, в конце концов, вы решите, что вам по-прежнему необходимо уменьшить размер страницы, который вы можете получить, удалив лишние / символов, я думаю, что лучший путь - это пропустить весь ваш HTML через фильтр который может анализировать HTML и автоматически удалять символы, если позволяет спецификация HTML5. Это дает преимущество в , а не , жертвуя обслуживаемостью, но при этом сокращая размер страницы. Вы даже можете выбрать , а не , чтобы передавать свои выходные данные через этот фильтр, если вы знаете, что запрос предназначен для анализа другим кодом, что также позволяет вам сохранять аспект читабельности компьютера.

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

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

1 голос
/ 16 ноября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...