Сценарии на стороне клиента — ключ к интерактивности В "академическую" эпоху развития Всемирной паутины существовал лишь один механизм, позволявший наладить обратную связь веб-ресурсов с посе¬тителями — CGI (Common Gateway Interface, общий шлюзовой интерфейс).
Интерфейс CGI расширяет функциональность веб-сервера. Благодаря этой технологии сервер приобретает способность исполнять на своей стороне про¬извольный программный код. При этом сервер имеет возможность переда¬вать исполняемому приложению некие пользовательские данные (отправляе¬мые, например, при помощи тех же веб-форм) и получать результаты его ра¬боты (как правило, в виде HTML-кода). Сгенерированные "на лету" страницы отсылаются клиенту точно так же, как и покоящиеся на диске статические документы.
Благодаря своей универсальности технология CGI живет и по сей день — в качестве CGI-скриптов могут выступать приложения, написанные с применением практически любых языков программирования, включая даже в той или иной мере "усеченные" по своим возможностям языки командных процессоров операционных систем. Создателю сайта достаточно лишь соблюсти ряд общих требований, обсуждение каковых не входит в наши задачи.
Сегодня старый добрый интерфейс CGI оттесняют в сторону многочислен¬ные конкуренты, обладающие индивидуальными особенностями, достоинст¬вами и недостатками, но решающие, в сущности, похожие задачи. PHP (Per¬sonal Home Page, персональная домашняя страница); ASP (Active Server Pages, активные серверные страницы) от компании Microsoft; Java-сервлеты и JSP (Java Server Pages, серверные страницы на языке Java) от Sun Microsystems; ColdFusion от Allaire— вот далеко не полный перечень совре¬менных серверных технологий.
Назначение и ключевые особенности JavaScript
Принципиальное отличие JavaScript от HTML и CSS состоит в том, что JavaScript представляет собой самый настоящий язык программирования.
HTML и CSS не являются таковыми даже в первом приближении. HTML, будучи языком разметки, в созданном вами сайте выполняет задачи логического структурирования данных, а CSS описывает, каким образом эти данные должны отображаться на экране, выводится на печать, озвучиваться и т.д. В этом смысле созданная вами частичка сайта, такая как веб-страница мало чем отличается, скажем, от какого-нибудь письма или договора, сохраненного в формате документа MS Word.
Программа же в самом общем смысле — это набор команд, предписывающих компьютеру выполнять те или иные активные действия — например, осуще¬ствлять операции над данными. Так вот, JavaScript позволяет создавать имен¬но программы.
Разумеется, JavaScript— чрезвычайно простой язык программирования В отличие, скажем, от С или C++ (универсальных языков программирования, при помощи которых создана львиная доля системного и прикладного про¬граммного обеспечения для самых различных компьютерных платформ), он не позволяет создавать автономный исполняемый код; не предусматривает возможности управления памятью; не предполагает никаких манипуляций с файловой системой и т. д. Но всего этого и не требуется от JavaScript — у него совершенно другие задачи.
JavaScript не предназначен для создания самостоятельных приложений — он задуман как компактный кроссплатформенный язык, легко интегрируемый в различные прикладные программные продукты (например, браузеры) с целью расширения функциональных возможностей создаваемых сайтов. Программы, создаваемые при помощи JavaScript, принято называть сценариями или скриптами. JavaScript является объектно-ориентированным языком. К сожалению, ни строгое определение этого термина, ни наглядную его иллюстрацию привес¬ти здесь не представляется возможным — это требует наличия определенной фундаментальной подготовки у читателя. Мы , тем не менее, ставит основной своей целью отнюдь не занудное теоретизирование, а постижение ключевых концепций на практике. Придет время — и сущность языка JavaScript станет очевидной читателю из практических примеров, которые могут понадобится пи создании сайта. Пока же я лишь замечу, что объектно-ориентированный подход— это одна из наиболее современных и распространенных на сегодняшний день парадигм программирования.
Следующий тезис для кого-то может стать откровением, но язык JavaScript как таковой (во всяком случае, на уровне спецификации ЕСМА-262) не со¬держит в себе ровным счетом никаких механизмов, позволяющих взаимодей¬ствовать с веб-формами и какими бы то ни было другими элементами веб¬страниц, управлять интерфейсом браузера и т. д.
Этот парадоксальный, казалось бы, факт объясняется предельно просто: JavaScript может получать доступ к объектам, предоставляемым средой, в которую тот интегрирован. Но непосредственно в ядре JavaScript такие объекты не определяются.
Отсюда вытекает два качественно противоположных следствия.
С одной стороны, возможность расширения ядра JavaScript за счет объектной модели, присущей тому или иному приложению, делает этот язык сценариев весьма универсальным.
С другой же стороны, неизбежные разногласия, возникающие между объект¬ными моделями различных браузеров, поддерживающих JavaScript, так или иначе препятствуют кроссбраузерной совместимости созданных вами сайтов, исполь¬зующих "динамику" на стороне клиента... Понятие объектной модели документа и динамического HTML
Факт наличия поддержки языка JavaScript той или иной версии в определен¬ном браузере ничего не говорит о способностях отображения этим браузером интерактивных веб-страниц, созданных для сайта с применением данного языка. Эти возможности определяются не столько совместимостью агента пользователя с конкретной версией языка, сколько особенностями реализованной в браузе¬ре объектной модели.
Обратимся ненадолго к истории. Так, например, и Netscape 4, и IE4 поддер¬живают JavaScript 1.2, однако объектные модели этих двух браузеров разнят¬ся, словно день и ночь.
В сущности, объектная модель браузера Netscape 4 обеспечивает доступ к весьма и весьма ограниченному кругу элементов HTML-документа создаваемого сайта, позволяя модифицировать лишь малую часть их атрибутов и обрабатывать довольно скудный набор событий, связанных с объектами веб-страницы.
Объектная модель же, впервые реализованная в IE4, шагнула далеко вперед. Она обеспечила доступ ко всем элементам HTML, позволив сценариям изме¬нять содержимое этих элементов и значения всех присущих им атрибутов. Это, в свою очередь, открыло возможность динамически в режиме реального времени перекраивать веб-страницы в созданном сайте практически полностью, подвергая модификации как содержание и структуру, так и оформление документов.
Помимо прочего, объектная модель, воплощенная в IE4, существует отдельно от базовых функций JScript, предоставляя возможность взаимодействия с со¬бою другим языкам сценариев, поддерживаемым браузером Internet Explorer — в частности, VBScript (скриптовый язык, основанный на синтак¬сисе языка программирования Visual Basic). Netscape 4, напротив, реализует морально устаревшую на сегодня интегрированную модель, в которой базо¬вые функции JavaScript неразрывно связаны с предлагаемой этим браузером инфраструктурой объектов.
Так вот, именно объектная модель документа, реализованная в IE4, являет:» более совершенной для создания сайтов, чем аналогичная модель Netscape 4. Эта инициатив Microsoft впоследствии легла в основу официальной рекомендации W3C — DOM (Document Object Model, объектная модель документов) level 1, принятой в 1998 г. Позднее в качестве рекомендаций W3C были утверждены суще¬ственно более расширенные версии спецификации DOM — DOM level 2 (или просто DOM2, 2000—2003 гг.) и DOM level 3 (DOM3, 2004 г.).
Согласно рекомендациям W3C, DOM — это независимый от платформы и от какого бы то ни было конкретного языка интерфейс, позволяющий разнооб¬разным программам и сценариям получать доступ к содержанию, структуре и представлению документов с возможностью динамически модифицировав все эти три составляющие.
В отличие от прототипа— объектной модели документа, реализованной в IE4, спецификации DOM, принятые Консорциумом W3C, распространяются не только на HTML-документы, но и вообще на любые XML-документы, рассматривая модель документа HTML как частный случай.
В основе DOM лежит понимание XML-документа как дерева объектов с изменяемыми свойствами. Так, например, для классической веб-страницы кор¬нем такого дерева будет выступать объект, соответствующий элементу ....
Он называется родительским для объектов, соответствующих элементам .. . и .. ., а те, в свою очередь, являются дочерни¬ми по отношению к нему. Все элементы дерева за исключением корневого являются потомками корня, а сам корень, в свою очередь, называется их предком. Все объекты, составляющие дерево, именуются узлами последнего.
Получить наглядное представление о дереве объектов того или иного документа позволяет, например, такой инструмент, как Инспектор DOM, вклю¬ченный в минимальный дистрибутив браузера Mozilla Firefox 1.0 (см. рис. 4 -и 4.5).
Собственно DHTML — это не более чем лаконичная аббревиатура, введенная в оборот фирмой Microsoft и обозначающая конгломерат технологий стороны клиента в составе HTML, листов стилей и языков сценариев, объединенных под знаменами DOM.
Ключевыми возможностями DHTML являются обеспечение динамического формирования веб-страниц в созданном сайте в процессе их загрузки и динамического изменения уже загруженных документов под влиянием действий пользователя исключительно на стороне клиента, без необходимости обращений к веб-серверу.
|