Статьи

Блестящий новый HTML5 парсер Firefox

Анри Сивонен, один из разработчиков Mozilla для Firefox, написал на hacks.mozilla.org гостевой пост о новом HTML5-парсере Firefox.

Зачем Firefox новый синтаксический анализатор HTML? Несколько причин. Прежде всего, спецификация HTML5 является первой спецификацией HTML, которая фактически описывает, как пользовательские агенты (читай: браузеры) должны анализировать HTML для рендеринга. Ранее разработчики браузеров сами решали, как выполнить анализ HTML-документа и превратить его в дерево DOM для отображения. Новый парсер Firefox — это первая реализация этой спецификации в браузере. Если вам интересны более подробные сведения и у вас есть возможность убить день, загляните на HTML-страницу парсинга WHATWG. Если у вас не так много свободного времени, Сивонен предлагает вам версию CliffsNotes:

Алгоритм разбора HTML5 состоит из двух основных частей: токенизация и построение дерева. Токенизация — это процесс разделения исходного потока на теги, текст, комментарии и атрибуты внутри тегов. Этап построения дерева принимает теги, чередующийся текст и комментарии, а также строит дерево DOM. Часть токенизации алгоритма синтаксического анализа HTML5 ближе к тому, что делает Internet Explorer, чем к тому, что делал Gecko. Internet Explorer некоторое время занимал основную долю рынка, поэтому сайты, как правило, тестировались на отсутствие взлома при работе с токенизатором IE. Часть построения дерева близка к тому, что уже делает WebKit. Из основных браузерных движков WebKit имел самое разумное решение для построения дерева до HTML5.

Так что, если вы сейчас возьмете ночную сборку Firefox , вы будете просматривать веб-страницы с помощью нового блестящего парсера. Что это значит для веб-разработчиков? Удивительно мало. Как указывает сам Сивонен, наиболее важной особенностью нового парсера является то, что вы не заметите никакой разницы. Существующие страницы должны отображаться почти таким же образом, с некоторыми незначительными улучшениями: механизм синтаксического анализа теперь работает в другом потоке по сравнению с основным пользовательским интерфейсом браузера, так что, по-видимому, здесь наблюдается некоторое повышение производительности; innerHTML и ряд давних ошибок парсера в Firefox был исправлен как побочный эффект переписывания парсера с нуля.

Однако Сивонен отмечает, что есть одна примечательная особенность нового синтаксического анализатора, которая может взволновать некоторых разработчиков: документы HTML5 могут включать встроенные SVG и MathML, смешанные непосредственно в разметку HTML, и они будут отображаться как графические и математические символы соответственно. Он собрал тестовую страницу, чтобы продемонстрировать эти новые функции здесь (для корректного просмотра вам понадобится ночная сборка Firefox). Вот как выглядит эта страница:


Демонстрационная страница с встроенным MathML и SVG

Код, который используется для создания этого примера, достаточно прост. Просмотрите источник этой страницы, чтобы понять, что я имею в виду.

Конечно, это далеко от того, чтобы его можно было использовать на обычных веб-сайтах, но всегда интересно взглянуть в будущее HTML и связанных с ним технологий, а также в будущее нашего любимого браузера. Спасибо Анри за то, что он дал нам возможность заглянуть за кулисы великой работы, происходящей в Mozilla!