Шрифт:
Интервал:
Закладка:
Оба этих варианта использования все еще существуют, но теперь нет необходимости обращаться к JavaScript. Вы можете создавать эффекты перелистывания с помощью псевдокласса :hover в CSS. Вы можете проверять поля формы с помощью атрибутов REQUIRED и TYPE в HTML.
Эта схема повторяется снова и снова: решение создается на императивном языке и, если оно достаточно популярно, со временем переходит на декларативный язык. Когда функция доступна на декларативном языке, ее не только легче написать, но и она более надежна.
Свободная обработка ошибок в HTML и CSS означает, что многие авторские ошибки или проблемы с поддержкой браузера решаются изящно; браузер просто игнорирует то, что он не понимает, и продолжает работу. Этого часто бывает достаточно. В отличие от этого, если вы предоставите браузеру плохо сформированный JavaScript или попытаетесь использовать неподдерживаемую функцию JavaScript, браузер не только выдаст ошибку, но и прекратит разбор сценария на этом этапе и откажется работать дальше.
Ответственность
JavaScript дал веб-дизайнерам возможность создавать веб-сайты, которые были более ловкими, плавными и реактивными. Эта же технология дала веб-дизайнерам возможность создавать сайты, которые были медлительными, громоздкими и сложными в использовании.
Одно из первых злоупотреблений JavaScript произошло (что неудивительно) в рекламной индустрии – бизнесе, смысл существования которого часто противоречит целям людей, пытающихся решить задачу как можно быстрее. JavaScript позволяет создавать новые окна браузера, что раньше мог делать только пользователь. Молодой разработчик по имени Итан Цукерман понял, что он может создавать новое окно с рекламой в нем. Это позволило рекламодателям разместить свое сообщение перед посетителями сайта. Мало того, JavaScript можно было использовать для создания нескольких окон, некоторые из которых были видимыми, а некоторые – скрытыми за текущим окном. Это было чудовищное решение.
Двадцать лет спустя Цукерман написал:
«Я написал код для запуска окна и запуска рекламы в нем. Мне очень жаль.»
Всплывающие (и не всплывающие) окна стали настолько невыносимыми, что браузеры должны были предоставить людям возможность блокировать их.
Рекламная индустрия позже нашла другие способы злоупотребления JavaScript. Реклама, поддерживаемая онлайн-издателями, вводила раздутый и неэффективный JavaScript в их страницы, что замедляло их загрузку. JavaScript также использовался для отслеживания людей с сайта на сайт. Для борьбы с этим люди потянулись к программам блокировки рекламы. В конечном итоге блокировка рекламы была встроена в браузеры и операционные системы, чтобы дать нам возможность бороться с чрезмерным JavaScript.
Веб-дизайнерам стоит помнить то, что рекламная индустрия предпочитает игнорировать: в Интернете последнее слово остается за пользователем.
Приложение
В деле "Якобеллис против Огайо", рассмотренном Верховным судом в 1964 году, судья Поттер Стюарт дал такое определение непристойности:
«Я знаю это, когда вижу.»
То же самое можно сказать о Веб 2.0 или о термине "веб-приложение". Мы все можем привести примеры веб-приложений, но дать определение этому термину гораздо сложнее. Веб-приложения позволяют людям создавать, редактировать и удалять контент. Но эти задачи были распространены задолго до появления веб-приложений. Люди могли заполнять формы и отправлять их на веб-сервер для обработки. Ajax устранил необходимость в таком путешествии на сервер.
Возможно, определение веб-приложения требует некоторых круговых рассуждений:
JavaScript – это требование для веб-приложения, а
веб-приложение – это веб-сайт, для работы которого требуется JavaScript.
В этом случае создание веб-приложений зависит от фундаментального предположения: JavaScript должен быть доступным и надежным. Но из-за своей императивной природы JavaScript имеет тенденцию быть более хрупким, чем декларативный язык, такой как HTML. Полагаться на JavaScript может оказаться не таким уж надежным предположением.
2.0
Рост JavaScript ускорился в 2005 году, когда Джесси Джеймс Гарретт опубликовал статью под названием Ajax: Новый подход к веб-приложениям. Статья дала название технике, которая набирала популярность. Используя определенный набор JavaScript, веб-браузер мог отправлять и получать данные с веб-сервера без обновления всей страницы. В результате пользователи получили более широкий доступ к информации.
Термин Ajax был придуман в то же время, когда на подъеме находился другой неологизм. Тим О'Рейли использовал фразу Web 2.0 для описания новой волны веб-продуктов и услуг. В отличие от Ajax, было трудно дать определение Web 2.0. Для бизнесменов это означало новые бизнес-модели. Для графических дизайнеров он означал закругленные углы и градиенты. Для разработчиков это означало JavaScript и Ajax.
Каким бы ни было его точное значение, термин Web 2.0 отражает настроение и чувство. Теперь все должно было стать по-другому. Старые способы мышления о создании веб-сайтов можно было отбросить. Рассматривать веб как безграничную коллекцию документов с гиперссылками было устаревшим. Наступила эра веб-приложений.
Не прощать
Свободная обработка ошибок в HTML позволила ему со временем набрать силу. Это также обеспечило простоту изучения языка. Даже если вы допустили ошибку, реализация браузером закона Постеля гарантировала, что вы все равно получите результат. Удивительно, но была попытка удалить эту суперспособность из HTML.
После стандартизации HTML версии 4 в 1999 году Консорциум Всемирной паутины опубликовал XHTML 1.0. В нем HTML был переформулирован в соответствии с правилами формата данных XML. В то время как в HTML имена тегов и атрибутов могут быть прописными или строчными, XML требует, чтобы они были полностью строчными. Были и другие различия: все атрибуты должны быть заключены в кавычки, а отдельные элементы, такие как IMG или BR, требуют закрывающей косой черты.
XHTML 1.0 не добавил в язык никаких новых возможностей. Это был просто более строгий способ написания разметки. XHTML 2.0 был совсем другим предложением. Он не только удалял такие устоявшиеся элементы, как IMG, но и внедрял драконовскую модель обработки ошибок XML. Если в XML-документе есть хоть одна ошибка – один атрибут без кавычек или пропущенная закрывающая косая черта – то синтаксический анализатор должен немедленно остановиться и отказаться что-либо отображать.
XHTML 2.0 умер на лозе. Его теоретическая чистота была отвергнута людьми, которые действительно зарабатывали на жизнь созданием веб-сайтов. Веб-дизайнеры справедливо отказались от публикации в формате, который может полностью провалиться вместо того, чтобы попытаться восстановиться после ошибки.
Странно, что спустя годы веб-дизайнеры с удовольствием создавали целые веб-сайты с помощью JavaScript, языка, который разделяет неумолимую модель обработки ошибок XML. Они не называли их веб-сайтами. Они называли их веб-приложениями. Это различие было холодным утешением для тех, кто не мог выполнить свою задачу из-за того, что сервис полагался на JavaScript для критически важной функциональности.
Несмотря на хрупкую модель обработки ошибок JavaScript, веб-дизайнеры со временем все больше полагались на JavaScript. В 2015 году NASA перезапустило свой веб-сайт как веб-приложение. Если вы хотели