суббота, 15 мая 2010 г.

HTML5 и будущее web

HTML5 и будущее web

Пошарив по сети, нашёл интересную статью об истории HTML, и решил осветить наболевший вопрос о переходе на HTML5. Почитать спецификацию вы можете сами, а перед этим я расскажу о некоторых проблемах и дам полезные для их понимания ссылки.





Преимущества HTML5:

  • Новые «структурные» теги (официально они так не называются): <section>, <nav>, <article>, <aside>, <header>, <footer>. Раньше это решалось блочными элементами с аттрибутами class и role
  • Аттрибуты вида data-* — например, data-size для указания размеров (это только пример, вместо «size» может быть что угодно в рамках синтаксиса). Обращаться к таким аттрибутам можно посредством свойства dataset:
    someElement.dataset.size = '200x300';
    
  • Новые «функциональные» теги: <canvas>, <video>, <audio>, <menu> и другие — со своим API и возможностью добавления пользовательских (или, точнее, дизайнерских) элементов управления и поддержкой стандартных (по умолчанию браузера)
  • Возможность работать в привычном xhtml-формате, т.е. возможность создавать валидные XHTML-документы (помним разницу между valid XHTML и well-formed XML!) и работать с их XML DOM, парсить, преобразовывать с помощью XSL, встраивать в них SVG и другие XML-документы. Напомню, что работа над XHTML 2 была прекращена в 2009 году
  • Расширения для форм в виде множества значений параметра type
  • Расширения для ссылок, по сути это те же микроформаты, но на уровне спецификации языка
  • Прочие полезности вроде <ruby> (типографика для иероглифической писменности), <figure> (иллюстрации, схемы) и т.п.

Но было бы слишком странно, если бы все было так хорошо. Не сказать, что все плохо, но проблемы и сложности все равно имеются:

  • Отсутствует встроенный механизм расширения, кроме тех самых аттрибутов data-*. Если вы захотите новых возможностей, то придется пользоваться старыми способами: XML Schema, DTD, RELAX NG и встраивание всего этого с помощью пространств имен XML, с последующими «ослиными хаками», Flash-велосипедами и JavaScript-протезами. Поэтому программисты не останутся без работы ближайшие 20 лет
  • Еще более усугубится проблема псевдо-XHTML (настоятельно рекомендую понять суть этой проблемы): разработчики будут верстать ломаный XHTML, отправлять его с MIME-типом text/html и таким образом накапливать проблемы в виде js-сценариев и стилей, слетающих при смене типа документа, или вообще ошибок в разметке документа и отказа браузера его обрабатывать. Все это — следствие того, что никто не читает руководства. Так что верстальщики тоже не останутся без работы ближайшие 20 лет
  • Новые теги все равно закончатся, а кроме этого еще и не совсем очевиден выбор именно такого набора. Например, когда мне лучше ставить <nav>, а когда оставить просто список ссылок? Нет четких границ применимости
  • Проблемы обратной совместимости решены лишь для малого подмножества нововведений, сообществу разработчиков предстоит придумывать очень сложные механизмы поддержки старых браузеров. И это будут уже не просто ухищрения вида «добавь комментарий, чтобы починить осла», а полноценные наборы инструментов. Например, как бы вы сделали обратную совместимость элемента <video>? А вот то-то и оно, что Flash-велосипеды из моды не скоро выйдут
  • Сотни тысяч непрофессионалов полезут пробовать новые возможности HTML5 (OMG, <blink> is back!). А поскольку спецификация внушительна по объему и сложности, то ждите еще и вал учебников и руководств в духе «HTML5 для альтернативно одаренных», написаных такими же. При этом хорошие книги по HTML5 уже есть, но школьники не знают английского. Ничего плохого в этом не вижу, все вполне естественно (сам такой был), но упомянуть об этом стоит
  • Неполная поддержка и ошибки реализации
  • Соперничество W3C, WHATWG, других производителей веб-стандартов и производителей браузеров и смежного ПО
  • Копирастия, войны патентов

Таков мой взгляд на будущее HTML5. Обидеть ни кого не хотел, holywar не провоцировал. Отнеситесь, пожалуйста, серьезно к вышесказанному, т.к. речь идет о центральном веб-стандарте на ближайшие, возможно, 2 десятка лет — HTML5 может получить статус «Candidate Recommendation» к 2012 году (подробнее см. WHATWG FAQ и Уровни готовности технических отчетов W3C).

Полезные ссылки:


И чуть не забыл мой вывод: HTML5 мне нравится, несмотря на все сложности. Так или иначе, это гораздо лучше, чем <div class="page"><div class="wrapper"><div></div><div></div></div></div>. Canvas вообще отличная вещь как растровое дополнение к SVG.

UPD: Спасибо анонимному комментатору ниже за ссылки:


Вкратце, суть такова:

  • Проблема псевдо-XHTML («маркетингового» XHTML), кажется, отменяется в виду того, что различие между HTML5 и XHTML5 определяется MIME-типом. Кроме того, для XHTML5 DOCTYPE может быть любым, а HTML5 допускает закрытие пустых тегов слешем. Т.е. в большинстве случаев разница между HTML5 и XHTML5 будет заключаться в нескольких строках. Хотя никто не отменял и специфические правила, касающиеся специальных символов XML и вложенности тегов.
  • Я очень кратко упомянул парсинг, стоит дать ссылки: Парсинг (оффициальная документация HTML5), Валидатор HTML5, Парсер HTML5. Суть в том, что авторы отказались от SGML-парсинга, который поддерживался только валидаторами, и построили новую модель. Причем в этой новой модели явно оговариваются правила обработки ошибок парсинга (необязательные к применению).

Автор: Дмитрий Scriptin.

Интересное...




Другие посты по этой теме:



Комментариев нет: