Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Можно примеров? Чтоб элемент действительно был единственным по замыслу, и замысел впоследствии не изменился, однако потребность в создании дополнительных экземпляров таки возникла.
Например, закольцовывание в слайдере, когда из загруженных в него элементов невидимым остаётся один. Как в детской "садюжке": слева пол-Пети и справа пол-Пети
Ты скажешь: "пререндеринг", а я скажу: элементы с видео и с анимациями. Ссылку не дам по соображениям приватности, но пример из жизни.
А так, хорошие примеры, как ни парадоксально, именно мне привести трудно: зная, во что это может вылиться, я принимаю превентивные меры, и спотыкаюсь о такие примеры крайне редко.
ЕМ>Я критиковал не саму идею использования шаблонов, а прежде всего утверждение, что присвоение id любому элементу якобы автоматически делает из него синглон (как концепцию).
Я же, вроде, обосновал?
Вот простой тип по имени
template.out-link:
<template class="out-link">
<a href="{url}" target="_blank" class="text-nowrap out-link {classes}" data-{name}="{value}">
{text}
<svg width="16" height="16" class="inline">
<use href="#bi-box-arrow-up-right"></use>
</svg>
</a>
</template>
Вот синглтонный тип по имени
template.the-out-link:
<template class="the-out-link">
<a id="the-link" href="{url}" target="_blank" class="text-nowrap out-link {classes}" data-{name}="{value}">
{text}
<svg width="16" height="16" class="inline">
<use href="#bi-box-arrow-up-right"></use>
</svg>
</a>
</template>
Вот инстанцирование:
<!-- Создаём инстанс простого типа -->
<span data-template="template.out-link" data-template-params='{ "text": "popper.js", "url": "https://popper.js.org/" }'></span>
<!-- Создаём инстанс синглтонного типа -->
<span data-template="template.the-out-link" data-template-params='{ "text": "The Google, The great and terrible", "url": "https://google.com/" }'></span>
Что тебя смущает?
То, что вместо проверки компилятором, кому можно инстанцировать, а кому нельзя (обычно так обеспечивается уникальность инстанса: инстанцировать дают доверенному агенту, который по контракту обязывается чекать уникальность), проверка идёт в коде шаблонизации, который чекает уникальность идентификаторов и кидает исключения?
Или то, что код шаблонизации не включён в браузер и его пишет сам программист?
Или то, что ЛЮБОЙ КУСОК HTML'я может быть типом для шаблонизатора (или закольцованного слайдера), и ЛЮБОЙ КУСОК HTML'я может быть инстансом, порождённым шаблонизатором (или закольцованным слайдером)? В этом всё дело? Я бы поставил на этот пункт
I'm a sewer mutant, and my favorite authors are Edgar Allan Poo, H.G. Smells and George R.R. Martin.