Микроданные против атрибута данных в модульном HTML5
Я разрабатываю на PHP и использую некоторые HTML-оболочки (в стиле div) вокруг динамического / переменного содержимого. Другими словами, я использую стандартный шаблон несколько раз и заполняю его другим HTML, создавая похожие "модули". Я также использую jQuery для динамического обновления контента на основе взаимодействия с пользователем. Каждый модуль требует дополнительной информации, чтобы сообщить jQuery, как обрабатывать взаимодействие с пользователем. Я колебался между использованием микроданных или атрибутов данных для достижения этой цели. Примеры:
<script>
$(document).ready(function() {
eval($(".wrapper").children("meta[itemprop=userDoesSomething]").attr("content"));
});
</script?
<div itemscope class="wrapper" id="module1">
<meta itemprop="userDoesSomething" content="alert('Microdata is better!');">
Module-specific content
</div>
или же
<script>
$(document).ready(function() {
eval($(".wrapper").data("userDoesSomething"));
});
</script>
<div class="wrapper" id="module1" data-userDoesSomething="alert('Data attributes are better!');">
Module-specific content
</div>
Оба выполняют одно и то же, но с микроданными мне не нужно вставлять атрибут в тег оболочки. Я могу просто включить "данные" в оболочку, используя метатег, сохраняя шаблон оболочки без изменений. Я также понимаю, что атрибут данных, вероятно, более подходит, поскольку микроданные действительно предназначены для типизированных данных, но в этом случае это более удобно. Есть мысли о том, что лучше в долгосрочной перспективе?
1 ответ
Возможны оба пути.
Микроданные предназначены не только для "типизированных данных". Вы можете определить свой собственный словарь микроданных, если хотите. Но вы также можете использовать " локальный" (выделение мое):
Примеры в предыдущем разделе показывают, как информация может быть размечена на странице, которая не ожидает повторного использования ее микроданных. Микроданные наиболее полезны, тем не менее, когда они используются в ситуациях, когда другие авторы и читатели могут сотрудничать, чтобы по-новому использовать разметку.
Однако, если вы хотите использовать какой-либо другой словарь микроданных (например, http://schema.org/) на своих страницах в будущем, вы можете столкнуться с некоторыми конфликтами с вашими "локальными" микроданными. Поэтому я не буду использовать микроданные, если они не дают вам преимуществ по сравнению с data-*
атрибутов.
Учитывая meta
элемент: вы можете получить что-то похожее с data-*
атрибуты тоже. В HTML5 script
Элемент может быть использован для "блоков данных". Таким образом, вы можете использовать что-то вроде:
<div class="wrapper" id="module1">
<script type="text/plain" data-userDoesSomething="alert('Data attributes are better!');">
</script>
Module-specific content
</div>
<div class="wrapper" id="module1">
<script type="text/plain" data-userDoesSomething>
alert('Data attributes are better!');
</script>
Module-specific content
</div>
<!-- etc. -->
Вместо text/plain
, вы можете использовать все, что вам нужно (JSON, HTML, …).