Нарушает ли data-id разделение интересов

Мой вопрос прост:

Нарушает ли добавление нотации «data-» к вашей разметке разделение задач MVC?

Пример: <div id="myDiv" data-id="34"></div>

или если вы используете систему шаблонов, то <div id="myDiv" data-id="{{myPrimaryKey}}"></div>

Среди моих коллег идут споры по этому поводу. Мое мнение таково, что это нарушает SoC, потому что вы встраиваете данные в свою HTML-разметку (AKA ваше представление). Кажется, что все в вашей разметке должно касаться только фактического отображения/форматирования данных. Но, может быть, я слишком пуритан?

Предыстория: проект, вызвавший это обсуждение, представляет собой чистый клиент JavaScript с веб-сервисами RESTful в качестве серверной части. Данные извлекаются через вызовы AJAX к веб-службе.


person Scot    schedule 30.07.2012    source источник


Ответы (1)


Ты слишком пурист. Это то, для чего был создан материал data-. Иногда вам нужно аннотировать узлы с пользовательскими данными, чтобы вы могли создавать URL-адреса и прочее для запросов к серверу или для пользы JavaScript.

person Anthony Mills    schedule 30.07.2012
comment
Ну, я понимаю, в чем цель data-. Мы пробовали Backbone.js и javascriptMVC для MVC (или MVC-ish в случае Backbone), и во всех смыслах и целях мы можем делать то, что нам нужно, без добавления атрибутов «data-» с этими библиотеками, потому что мы иметь модель в области видимости, которая может предоставить необходимые нам данные, при условии, что мы хорошо структурировали наши представления. Компромисс заключается в том, что мы получаем множество очень детальных представлений. Что может быть, а может и не быть хорошо само по себе. - person Scot; 31.07.2012
comment
Ну, многие детализированные представления, казалось бы, нарушают принцип DRY. :) - person Anthony Mills; 03.08.2012
comment
Не совсем... представление пишется один раз. Например, если у вас есть список виджетов, каждый элемент в списке является собственным экземпляром представления. это то, что я имел в виду. Вот простой пример: backbonejs.org/docs/todos.html - person Scot; 04.08.2012
comment
Наличие каждого элемента в списке в качестве отдельного экземпляра, вероятно, не является концом света (конечно, при разумных размерах объектов и количествах членов списка). Так что я бы сказал, просто делайте все, что приводит к наиболее лаконичному и понятному коду. В любом случае, вероятно, должно работать. - person Anthony Mills; 04.08.2012