Мне всегда говорили, что это хорошая практика (ala 'unobtrusive javascript), отдельный JavaScript из разметки HTML. Тем не менее, я видел противоположную тенденцию с рядом новых и популярных фреймворков, таких как Bootstrap, Angular.js и Ember.js. Может кто-нибудь сказать мне, почему это не считается плохой практикой?
Не используются ли атрибуты атрибутов данных в Bootstrap, Angular.js и Ember.js с принципами ненавязчивого Javascript?
Ответ 1
Ненавязчивый Javascript - хорошая практика для многих мест в Интернете. Структуры, о которых вы говорили, часто используются для создания полномасштабных приложений Javascript. Во многих из этих приложений опыт без Javascript часто является пустой страницей. В этой среде значение разделения вашей разметки на Javascript относительно невелико.
Ответ 2
Я сам задаю тот же вопрос и пришел к следующему выводу:
HTML - это язык разметки для представления документов. Семантика, которую все называют вокруг, фактически связана с представлением богатых документов. Это включает в себя изображения и ссылки, которые позволяют более богатый опыт. Те же принципы могут быть применены к документам Word, где вместо того, чтобы маркировать определенный текст как красный, вы можете отметить его как акцент, а затем подчеркнуть выделение как красное, что будет семантически правильным способом выражения намерения.
Проблема возникает из-за того, что HTML содержит элементы, которые позволяют пользователю взаимодействовать - формы. Первоначальный проект заключался в том, чтобы позволить не специалистам создавать простые интерактивные интерфейсы. Когда я проверял различные графические интерфейсы рабочего стола, нет никакой разницы между фактической логикой представления и представления, потому что когда вы создаете графический интерфейс, вам не нужно это разделение.
Для меня важна то, сколько из того, что вы пишете, основано на контенте или графическом интерфейсе. Поскольку HTML служит двум целям, трудно понять, что обслуживать с сервера. В основном сайты, такие как Wikipedia и даже Stackoverflow, ориентированы на контент. Это означает, что если они хотят быть доступными для более широкого круга клиентов, например ботов и старых браузеров, они должны иметь возможность передавать чистый html. Я думаю о двух возможных стратегиях, когда вы хотите предоставить контент и какой-то более богатый опыт пользовательского интерфейса, например textare, где я пишу этот комментарий. Один из них - сервер html, а затем инициализирует графический интерфейс. Это также называют ненавязчивым javascript и семантическим HTML. Это то, что делают большинство сайтов, ориентированных на контент. Это в основном для того, чтобы иметь возможность использовать браузеры и боты, которые позволят их контенту быть более доступными. Другая стратегия будет заключаться в том, чтобы идентифицировать тип клиента и обслуживать разные контенты, которые могут быть надежно реализованы только на стороне клиента, поскольку в обоих случаях будет обслуживаться html. Это по-прежнему близко к первой категории, из-за того, как HTML используется/используется как контент и графическое представление.
Если вы пишете приложение, которое не предоставляет контент, но фактическое обслуживание/процесс, то архитектура, подобная AngularJS и тому подобное, лучше подходит.
В моем опыте большинство бизнеса должно обеспечить оба. Скажем, у вас есть приложение, которое использует HTML/Javascript, чтобы позволить пользователям создавать рисунки. Это приложение не должно следовать никаким ненавязчивым рекомендациям, но оно не сможет работать и в старых браузерах. Но если вы предоставляете социальный обмен рисунками между пользователями, позволяя оставлять комментарии и другой контент, лучше писать эту часть сайта так, чтобы боты и другие клиенты могли легко получать доступ к контенту.