В чем преимущество клиентской веб-архитектуры Gmail? - PullRequest
15 голосов
/ 22 февраля 2010

Мне просто интересно, в чем заключается преимущество клиентской архитектуры, которой придерживается GMail. Я имею в виду, в чем преимущество нескольких фреймов на странице; один с HTML-макетом, а второй со всеми javascripts?

Разве не сложнее выполнить все операции DOM? (вам нужно выполнить поиск через js ifram <-> top <-> html iframe).

Что вы, эксперты, думаете?

Ответы [ 3 ]

7 голосов
/ 22 февраля 2010

Короче говоря: для работы на стороне клиента.

Поскольку в GMail много Javascript (около 700 КБ), загрузка и запуск всего занимает некоторое время. При использовании отдельного iframe загрузка и запуск Javascript не будут блокировать пользовательский интерфейс браузера. Сценарии и события пользовательского интерфейса в отдельных фреймах будут выполняться параллельно популярными браузерами. Этот подход также позволяет вам создать полный DOM для интерфейса в другом iframe , пока сценарии еще выполняются. В этой статье описываются общие решения проблемы блокирующих скриптов.

Для работы истории браузера требуется еще один iframe. Как именно это работает, можно увидеть в реализации в Google Closure Library.

Что касается влияния на сложность проверки правильности работы с DOM: конструкторы компонентов пользовательского интерфейса в GMail (также часть библиотеки Closure) принимают необязательный вспомогательный аргумент DOM. Этот помощник связан с конкретным DOM, который может находиться в другом кадре. Управление различными DOM полностью встроено в дизайн этих компонентов пользовательского интерфейса.

5 голосов
/ 22 февраля 2010

Я совершенно уверен, что это не iframes, используемые для push "reverse-ajax". Gmail использует для этого систему goog.net.BrowserChannel библиотеки Google Closure и использует транспорты xhr и activex htmlfile. (См .: http://closure -library.googlecode.com / svn / docs / class_goog_net_BrowserChannel.html )

Это все, что я знаю наверняка, но я думаю, что по крайней мере один из фреймов был бы для управления историей.

4 голосов
/ 22 февраля 2010

Это «бесконечный фрейм», используемый для обратного ajax (сервер отправляет сообщение клиенту, когда происходит событие, в отличие от обычного ajax, где клиент запрашивает у сервера что-то) Из Википедии :

Основная техника для динамического веба Приложение должно использовать скрытый IFrame HTML-элемент (встроенный фрейм, который позволяет веб-сайту вставлять один HTML документ внутри другого). это невидимый IFrame отправляется в виде чанков блок, который неявно объявляет его бесконечно долго (иногда называется «Навсегда кадр»). По мере того, как происходят события, iframe постепенно заполняется скриптом теги, содержащие JavaScript для выполняется в браузере. Так как браузеры отображают HTML-страницы постепенно, каждый тег сценария выполнено в том виде, в каком оно было получено.

Одним из преимуществ метода IFrame является что он работает в любом обычном браузере. Два недостатка этой техники отсутствие надежной обработки ошибок метод, и невозможность отслеживание состояния запроса вызывающий процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...