![]() |
|
Модераторы: gambit |
![]()
|
|
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 7 Всего: 49 |
По ссылке нет ничего насчет выноса в отдельный файл. Там есть только про разделение разметки и JS. - вполне достижимо, именно для этого и сущесвует ClientScriptManager. CSS не подразумевает привязку к конкретной структуре страницы - он не требует существования элементов с определенными ID. В случае JS код подписки в window.onload явно требует существования всех элементов, на которые он ссылается. Т.е. вместо уменьшения связности между разметкой и скриптом и разделения концепций (ради чего Unobtrusive JavaScript и существует) ты получаешь строгую привязку скрипта к конкретной странице - те же .., только в профиль. Чем тебя не устраивает стандартный подход - JS в отдельном файле, код подписки и html раздельно в aspx? |
|||
|
||||
| Любитель |
|
||||||||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
Эээ.. если не использовать селекторы по ид-шнику - то да. Или селекторы по ид-шнику зря придумали?! Классы в js также используются (всмысле селекторы по классам). Просто селекторы по ид-шникам в настоящий момент гораздо быстрей работают. Надо выбирать разумно.
Тут несколько не так. Если мы хотим создать конкретную кнопку, делающую какую-то операцию - привязываемя по ид-шнику. Добавить всем элементам плавающий тултип - проходим по всем элементам с title. Добавить валидацию емейла - проходим по всем инпутоам, у которых есть класс email. И т. д.
Если у меня есть кнопка, специфичная для этой страницы - я в любом случае буду писать скрипт под неё. Получить универсальный js на все случаи жизни невозможно
Этот подоход стандартен только для ASP .Net WebForms. Не устраивает: 1. Лишними сложностями - код с вечными <%= ClientID %> менее поддерживаемый всё-таки. 2. Разбуханием html-а. У меня на страницы меняются данные, но есть тысяча стабильных наскриптованных функций - я предпочту их закешировать однажды. Кстати по этой причине ужасным (без напильника) является реализация мёрджинга сриптов в ASP .Net AJAX. Это сообщение отредактировал(а) Любитель - 2.4.2009, 18:04 |
||||||||
|
|||||||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 7 Всего: 49 |
Можно и тут обсудить - пока в пределах темы.
Селектор по ID в CSS работает при отсутствии элементов - он просто применяет стиль к 0 элементов - это нормальное поведение. CSS не предъявляет требований существования элемента. В JS нет селекторов по ID в том же смысле - там есть поиск элемента по ID, который должен вернуть ровно 1 результат (в случае подписывания на событие). Если он не нашел вообще ничего - ошибка. Если нашел больше 2-х элементнов - тоже ошибка. Т.е. это кусок кода жестко связан с разметкой, и от выноса его со страницы ты ничего не получишь, кроме лишних пролем с отладкой. ASP.NET не мешает тебе искать по типам, аттрибутам и т.д. Если ты хочешь создать конкретную кнопку - ты должен упомянуть ее в 2-х местах (в случае Unobtrusive). Зачем разносить эти 2 места по разным файлам? 1. ClientID проявляется только в случае naming container-а на странице - грида, репитера - когда без генерации ClientID ты получишь неуникальные ID в HTML. А от двух неуникальных ID толку никакого - ты не сможешь обработать оба элемента. 2. Так и вынеси эти тысячи скриптов в отдельный файл и наслаждайся кэшированием. Оставь в aspx только подписку. |
|||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
Этой работой занимаются фреймворки asp:Content, user-controls если я не туплю дают "порчу" ид-шника. А зачем в случае CSS мы так делаем?! Потому что разметка отдельно, оформление отдельно, динамика отдельно. Всё равно разбухание Я, кстати, в итоге не понял - подписку по классам ты предлагаешь выносить или нет? |
|||
|
||||
| PashaPash |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 7 Всего: 49 |
Мегафреймворк jQuery находит по id один элемент, даже если на странице их несколько. Сомневаюсь что остальные фреймворки справляются лучше. Да и w3c-ный стандарт требует уникальности.
Ага, дают - но они "портят" его предсказуемо, каждый раз одинаково и уникально в пределах страницы.
В CSS оформлению все равно, что у тебя в разметке - оно пассивно. А скрипты - активны. А при выносе подписки - еще и явно налагают требования на разметку. Т.е. вместо разделения ты получаешь наоборот - жесткую связь.
Да ес-но, какой смысл ее оставлять? На странице оставить только подписку по ID. |
||||||
|
|||||||
| Любитель |
|
||||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
Ну это уже как раз разброс Само собой. Я не о том говорил - я говорил о проверке на то есть элемен или нет в первую очередь. Семантику пассивности/активности не понял
Ээ.. Ты же не предлагаешь тем не менее использовать явно полученные ид-шники?! Даже учитывая, что мы о них "вроде знаем". Короче - думаю мы мнение друг друга поняли |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |