Если главная страница Google настолько минимальна, почему источником является сотни строк кода?

Код минимизируется, но переформатировано несколько сотен строк кода. Я бы предположил, что такая минимальная страница имеет минимальный код. Что Google делает, что источник так долго? Я вижу, что многие из них - это javascript, но у меня создалось впечатление, что вложение большого количества javascript было плохой практикой.

Ответ 1

Как минимум один фрагмент этого кода используется для обратных вызовов ajax для мгновенного поиска.

Кроме того, когда вы считаете, плохо ли встраивание Javascript, вы должны подумать об альтернативе. Если код был в отдельном файле, это был бы другой запрос http, что означает, что страница будет загружаться с большей задержкой.

Ответ 2

JavaScript, вероятно, не встроен в их незастроенный источник. Это была бы плохая практика. Встраивая его в источник страницы при его создании, страница не должна будет делать какие-либо дополнительные HTTP-запросы для загрузки отдельного файла ресурсов, поскольку HTTP-запросы являются одной из самых медленных частей загрузки веб-страницы.

Явное количество JS, по моим предположениям, вероятно, связано с большим количеством общих библиотек и кода, которые были распространены среди многих их страниц, и пытаясь не загружать их на своей домашней странице, в конечном итоге приведет к большому количеству ненужных и неприятные обходные пути в их коде. Кроме того, пользовательский интерфейс может выглядеть просто, но сколько на самом деле происходит под капотом? Есть учетные записи Google, о которых нужно беспокоиться, мгновенный и голосовой поиск, отслеживание аналитики и т.д.

В конце концов, однако, вы, вероятно, не будете действительно знать, если не получите инженера Google, чтобы разглашать свои секреты или работать с ними.

Ответ 3

Я думаю, что это принцип разделения интерфейса и реализации: пользователь видит интерфейс и не нуждается в заботе о том, что такое реализация - насколько просто или насколько сложно, и каким образом, пока реализация выполняет то, что должен предоставить интерфейс.

Возьмем пример часов. Когда вы смотрите на часы, вы вообще не задумываетесь о реализации. Все, о чем вы заботитесь, это то, что вы можете рассказать время по часам и минутной стрелке, и что вы можете перейти в режим секундомера, и кнопка A может запустить его, а кнопка B может reset, если это может обеспечить функциональность секундомер. Интерфейс может быть очень простым, а иногда и простым. Реализация может быть сложной... например, если у нее есть схема для синхронизации с сигналом атомных часов в разных регионах мира, используя миллионы транзисторов, чтобы хорошо выполнять эту работу, но пользователю обычно не важно, что реализация. Весь пользователь может заботиться о простом понимании интерфейса часов: смотреть на лицо часов и в мгновение ока, быть в состоянии сказать, в какое время оно.

Что касается того, почему код может быть настолько большим, помимо механизма автоматического предложения, который включает механизм дросселирования, так что не каждое нажатие клавиши вызывает запрос на сервер Google, есть также доля Google+, в которой есть фотография, ссылка, Видео, Событие, каждый с разной обработкой. Поэтому, хотя страница может быть чистой и простой, то, что может предоставить страница, намного больше.