2. Технологии и языки программирования для web

Опубликовал в рубрике Лекции.

2.1 Стандарт интерфейса CGI

CGI (Common Gateway Interface − «общий интерфейс шлюза») − стандарт интерфейса, используемого для связи внешней программы с веб-сервером. Программу, которая работает по такому интерфейсу совместно с веб-сервером, принято называть шлюзом, хотя многие предпочитают названия «скрипт» (сценарий) или «CGI-программа».

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

Все скрипты, как правило, помещают в каталог cgi-bin сервера, но это необязательно: скрипт может располагаться где угодно, но при этом большинство веб-серверов требуют специальной настройки.

В веб-сервере Apache, например, такая настройка может производиться при помощи общего файла настроек httpd.conf или с помощью файла .htaccess в том каталоге, где содержится этот скрипт. Также Apache позволяет запускать все скрипты, имеющие расширение .cgi.

CGI является одним из наиболее распространённых средств создания динамических веб-страниц.

Объектная модель документа

DOM (Document Object Model − «объектная модель документа») − это не зависящий от платформы и языка программный интерфейс, позволяющий программам и скриптам получить доступ к содержимому документов, а также изменять содержимое, структуру и оформление документов.

Модель DOM не накладывает ограничений на структуру документа. Любой документ известной структуры с помощью DOM может быть представлен в виде дерева узлов, каждый узел которого представляет собой элемент, атрибут, текстовый, графический или любой другой объект. Узлы связаны между собой отношениями родительский-дочерний.

Изначально различные браузеры имели собственные модели документов (DOM), не совместимые с остальными. Для того, чтобы обеспечить взаимную и обратную совместимость, специалисты международного консорциума W3C классифицировали эту модель по уровням, для каждого из которых была создана своя спецификация. Все эти спецификации объединены в общую группу, носящую название W3C DOM.

2.2 Уровни объектной модели документа (DOM)

Текущим уровнем спецификаций DOM является уровень 2, но тем не менее некоторые части спецификаций уровня 3 являются рекомендуемыми W3C.

Уровень 0 − включает в себя все специфические модели DOM, которые существовали до появления уровня 1, например document.images, document.forms, document.layers и document.all. Необходимо обратить внимание, что эти модели формально не являются спецификациями DOM, опубликованными W3C, а скорее являются информацией о том, что существовало до начала процесса стандартизации.

Уровень 1 − базовые функциональные возможности DOM (HTML и XML) в документах, такие как получение дерева узлов документа, возможность изменять и добавлять данные.

Уровень 2 − поддержка так называемого пространства имён XML <–filtered views–> и событий.

Уровень 3 − состоит из шести различных спецификаций:

DOM Level 3 Core;

DOM Level 3 Load and Save;

DOM Level 3 XPath;

DOM Level 3 Views and Formatting;

Level 3 Requirements;

DOM Level 3 Validation.

Эти спецификации являются дополнительными расширениями DOM.

Учитывая существование различных реализаций DOM в веб-браузерах, среди программистов распространена привычка проверять работоспособность тех или иных возможностей DOM для каждого конкретного браузера, и только потом использовать их. Следующий код иллюстрирует способ проверки на поддержку стандартов W3CDOM перед тем как запустить код, зависящий от результата этой проверки.

if (document.getElementById && document.getElementsByTagName) {

// если методы getElementById и getElementsByTagName

// доступны, то можно относительно точно предположить поддержку W3CDOM.

obj = document.getElementById(«navigation»)

// далее идёт другой код с использованием возможностей W3CDOM.

// …..

}

Наиболее популярными языками программирования для WEB являются:

1) SGML;

2) DHTML;

3) ECMAScript;

4) XML;

5) JavaScript;

6) AJAX.

Рассмотрим их боле подробно.

SGML (Standard Generalized Markup Language − Стандартный Обобщенный Язык Разметки) − появился в 1986 г. и заявил о себе как гибкий, комплексный и всеохватывающий мета-язык для создания языков разметки.

Этот язык не имеет гипертекстовой модели. Создание SGML можно с уверенностью назвать попыткой объять необъятное, т. к. он объединяет в себе такие возможности, которые крайне редко используются все вместе. В этом и состоит его главный недостаток − сложность и, как следствие, дороговизна этого языка ограничивает его использование только крупными компаниями, которые могут позволить себе купить соответствующее программное обеспечение и нанять высокооплачиваемых специалистов. Кроме того, у небольших компаний редко возникают настолько сложные задачи, чтобы привлекать к их решению SGML.

SGML − наследник разработанного в 1969 г. в IBM языка GML (Generalized Markup Language), который не стоит путать с Geography Markup Language, разрабатываемым GIS Consortium.

Изначально SGML был разработан для совместного использования машинно-читаемых документов в больших правительственных и аэрокосмических проектах. Он широко использовался в печатной и издательской сфере, но его сложность затруднила его широкое распространение для повседневного использования.

Наиболее широко SGML применяется для создания других языков разметки, именно с его помощью был создан язык разметки гипертекстовых документов − HTML, спецификация которого была утверждена в 1992 г. Его появление было связано с необходимостью организации стремительно увеличивающегося массива документов в сети Internet. Бурный рост количества подключений к Internet и, соответственно, Web-серверов повлек за собой такую потребность в кодировке электронных документов, с которой не мог справиться SGML вследствие высокой трудности освоения. Появление HTML − очень простого языка разметки − быстро решило эту проблему: легкость в изучении и богатство средств оформления документов сделали его самым популярным языком для пользователей Internet. Но, по мере роста количества и изменения качества документов в Сети, росли и предъявляемые к ним требования, и простота HTML превратилась в его главный недостаток. Ограниченность количества тегов и полное безразличие к структуре документа побудили разработчиков в лице консорциума W3C к созданию такого языка разметки, который был бы не столь сложен, как SGML, и не настолько примитивен, как HTML. В результате, сочетая в себе простоту HTML, логику разметки SGML и удовлетворяя требованиям Internet, появился на свет язык XML.

Основные части SGML документа:

1) SGML-декларация;

2) Document Type Definition;

3) Содержимое SGML-документа (по крайней мере, должен быть корневой элемент).

SGML предоставляет множество вариантов синтаксической разметки для использования различными приложениями. Изменяя SGML-декларацию, можно даже отказаться от использования угловых скобок, хотя этот синтаксис считается стандартным, так называемым concrete reference syntax.

Пример SGML синтаксиса:

<QUOTE>

typically something like <ITALICS>this</ITALICS>

</QUOTE>

SGML стандартизован ISO: «ISO 8879:1986 Information processing−Text and office systems − Standard Generalized Markup Language (SGML)»

HTML и XML произошли от SGML. HTML − это приложение SGML, а XML − это подмножество SGML, разработанное для упрощения процесса машинного разбора документа. Другими приложениями SGML являются SGML Docbook (документирование), и «Z Format» (типография и документирование).

Dynamic HTML или DHTML − это способ создания интерактивного веб-сайта, используя сочетание статичного языка разметки HTML, встраиваемого (и выполняемого на стороне клиента) скриптового языка JavaScript, CSS (каскадных таблиц стилей) и DOM (объектной модели документа).

Он может быть использован для создания приложения в веб-браузере: например для более простой навигации или для придания интерактивности форм. DHTML может быть использован для динамического перетаскивания элементов по экрану. Также он может служить как инструмент для создания основанных на браузере видео-игр.

DHTML приложения, которые вполне автономны в браузере, без серверной поддержки, такой как база данных, иногда вынуждены обращаться к Single Page Applications, или SPA. Конкурирующей технологией являются Adobe Flash для анимации и апплеты (applets).

Обычно веб-страница, использующая DHTML, выглядит следующим образом:

<!DOCTYPE html PUBLIC «-//W3C//DTD HTML 4.01//EN»

«http://www.w3.org/TR/html4/strict.dtd»>

<html>

<head>

<title>Заголовок страницы</title>

<script type=»text/javascript»>

window.onload= function () {

myObj = document.getElementById(«navigation»);

// …. какой-то код

}

</script>

</head>

<body>

<div id=»navigation»>

</div>

</body>

</html>

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

<script type=»text/javascript» src=»myjavascript.js»></script>

<!DOCTYPE html PUBLIC «-//W3C//DTD HTML 4.01//EN»

«http://www.w3.org/TR/html4/strict.dtd»>

<html>

<head>

<title>Test</title>

<style type=»text/css»>

h2 {background-color: lightblue; width: 100%}

a {font-size: larger; background-color: goldenrod}

a:hover {background-color: gold}

#example1 {display: none; margin: 3%; padding: 4%; background-color: limegreen}

</style>

<script type=»text/javascript»>

<!–

function changeDisplayState (id) {

e=document.getElementById(id);

if (e.style.display == ‘none’ || e.style.display ==»") {

e.style.display = ‘block’;

showhide.innerHTML = ‘Hide example’;

} else {

e.style.display = ‘none’;

showhide.innerHTML = ‘Show example’;

}

}

//–>

</script>

</head>

<body>

<h2>How to use a DOM function</h2>

<p><a id=»showhide» href=»javascript:changeDisplayState(‘example1′)»>Show example</a></p>

<div id=»example1″>

This is the example. (Additional information, which is only displayed on request)

…………..</div>

<p>The general text continues ….</p>

<p></p>

</body>

</html>

ECMAScript − это интерпретируемый язык программирования, стандартизированный международной организацией ECMA в спецификации ECMA-262. Язык широко используется в Вебе. JavaScript, JScript и ActionScript являются расширением стандарта ECMA-262.

ECMA International (European Computer Manufacturers Association) − основанная в 1961 г. ассоциация, деятельность которой посвящена стандартизации информационных и коммуникационных технологий.

Она преследует три цели:

создавать (в сотрудничестве с организациями аналогичной направленности, но локального масштаба) стандарты и технические отчёты в порядке поддержки и стандартизации использования информационных и сетевых систем;

поощрять правильное использование стандартов путём влияния на контекст их употребления;

публиковать стандарты и технические отчёты в электронном и бумажном виде. Распространение документов должно быть бесплатно и неограниченно.

Стандарты ECMAScript:

ECMA-262: ECMAScript Language Specification 3rd edition (December 1999);

ECMA-290: ECMAScript Components Specification (June 1999) ;

ECMA-327: ECMAScript 3rd Edition Compact Profile(June 2001);

ECMA-357: ECMAScript for XML (E4X) Specification 2nd edition (December 2005).

XML (eXtensible Markup Language — расширяемый язык разметки) − рекомендованный Консорциумом Всемирной паутины язык разметки, фактически представляющий собой свод общих синтаксических правил. XML − текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML), иногда называемых словарями. XML является упрощённым подмножеством языка SGML.

Временем рождения XML можно считать 1996 г., в конце которого появился черновой вариант спецификации языка, или 1998 г., когда эта спецификация была утверждена. Целью создания XML было обеспечение совместимости при передаче структурированных данных между разными системами обработки информации, особенно при передаче таких данных через Интернет. Словари, основанные на XML (например, RDF, RSS, MathML, XHTML, SVG), сами по себе формально описаны, что позволяет программно изменять и проверять документы на основе этих словарей, не зная их семантики, то есть не зная смыслового значения элементов. Важной особенностью XML также является применение так называемых пространств имён (англ. namespace).

Стандартом определены два уровня правильности документа XML:

1) правильно построенный (Well-formed). Правильно построенный документ соответствует всем общим правилам синтаксиса XML, применимым к любому XML-документу. И если, например, начальный тег не имеет соответствующего ему конечного тега, то это неправильно построеный документ XML. Документ, который неправильно построен, не может считаться документом XML; XML-процессор (парсер) не должен обрабатывать его обычным образом и обязан классифицировать ситуацию как фатальная ошибка;

2) действительный (Valid). Действительный документ дополнительно соответствует некоторым семантическим правилам. Это более строгая дополнительная проверка корректности документа на соответствие заранее определённым, но уже внешним правилам, в целях минимизации количества ошибок, например, структуры и состава данного, конкретного документа или семейства документов. Эти правила могут быть разработаны как самим пользователем, так и сторонними разработчиками, например, разработчиками словарей или стандартов обмена данными. Обычно такие правила хранятся в специальных файлах − схемах, где самым подробным образом описана структура документа, все допустимые названия элементов, атрибутов и многое другое. И если документ, например, содержит не определённое заранее в схемах название элемента, то XML-документ считается недействительным; проверяющий XML-процессор (валидатор) при проверке на соответствие правилам и схемам обязан (по выбору пользователя) сообщить об ошибке.

Рассмотрим правильное построение документов XML, то есть их синтаксис.

XML − это иерархическая структура, предназначенная для хранения любых данных, визуально структура может быть представлена как дерево. Важнейшее обязательное синтаксическое требование − то, что документ имеет только один корневой элемент (англ. root element) (альтернативно называемый элементом документа (англ. document element)). Это означает, что текст или другие данные всего документа должны быть расположены между единственным начальным корневым тегом и соответствующим ему конечным тегом.

Следующий простейший пример − правильно построенный документ XML:

<book>Это книга: «Книжечка»</book>

Первая строка XML-документа называется объявлением XML (англ. XML declaration) − это необязательная строка, указывающая версию стандарта XML (обычно это 1.0), также здесь может быть указана кодировка символов и внешние зависимости.

<?xml version=»1.0″ encoding=»UTF-8″?>

Спецификация требует, чтобы процессоры XML обязательно поддерживали Юникод-кодировки UTF-8 и UTF-16 (UTF-32 не обязателен). Признаются допустимыми, поддерживаются и широко используются (но не обязательны) другие кодировки, основанные на стандарте ISO/IEC 8859, также допустимы другие кодировки, например, русские Windows-1251, KOI-8.

Комментарий может быть размещен в любом месте дерева. XML комментарии размещаются внутри пары тегов <!– и заканчиваются –>. Два знака дефис (–) не могут быть применены ни в какой части внутри комментария.

<!– Это комментарий. –>

Ниже приведён пример простого кулинарного рецепта, размеченного с помощью XML:

<?xml version=»1.0″ encoding=»UTF-8″?>

<recipe name=»хлеб» preptime=»5″ cooktime=»180″>

<title>Простой хлеб</title>

<ingredient amount=»3″ unit=»стакан»>Мука</ingredient>

<ingredient amount=»0.25″ unit=»грамм»>Дрожжи</ingredient>

<ingredient amount=»1.5″ unit=»стакан»>Тёплая вода</ingredient>

<ingredient amount=»1″ unit=»чайная ложка»>Соль</ingredient>

<Instructions>

<step>Смешать все ингредиенты и тщательно замесить.</step>

<step>Закрыть тканью и оставить на один час в тёплом помещении.</step>

<step>Замесить ещё раз, положить на противень и поставить в духовку.</step>

</Instructions>

</recipe>

Структура XML-документа

Остальная часть этого XML-документа состоит из вложенных элементов, некоторые из которых имеют атрибуты и содержимое. Элемент обычно состоит из открывающего и закрывающего тегов, обрамляющих текст и другие элементы. Открывающий тег состоит из имени элемента в угловых скобках, например, «<step>»; закрывающий тег состоит из того же имени в угловых скобках, но перед именем ещё добавляется косая черта, например, «</step>». Содержимым элемента (англ. content) называется всё, что расположено между открывающим и закрывающим тегами, включая текст и другие (вложенные) элементы. Ниже приведён пример XML-элемента, который содержит открывающий тег, закрывающий тег и содержимое элемента:

<step>Замесить ещё раз, положить на противень и поставить в духовку.</step>

Кроме содержания у элемента могут быть атрибуты − пары имя-значение, добавляемые в открывающий тег после названия элемента. Значения атрибутов всегда заключаются в кавычки (одинарные или двойные), одно и то же имя атрибута не может встречаться дважды в одном элементе. Не рекомендуется использовать разные типы кавычек для значений атрибутов одного тега.

<ingredient amount=»3″ unit=»стакан»>Мука</ingredient>

В приведённом примере у элемента «ingredient» есть два атрибута: «amount», имеющий значение «3», и «unit», имеющий значение «стакан». С точки зрения XML-разметки, приведённые атрибуты не несут никакого смысла, а являются просто набором символов.

Кроме текста, элемент может содержать другие элементы:

<Instructions>

<step>Смешать все ингредиенты и тщательно замесить.</step>

<step>Закрыть тканью и оставить на один час в тёплом помещении.</step>

<step>Замесить ещё раз, положить на противень и поставить в духовку.</step>

</Instructions>

В данном случае элемент «Instructions» содержит три элемента «step». XML не допускает перекрывающихся элементов. Например, приведённый ниже фрагмент некорректен, так как элементы «em» и «strong» перекрываются.

<!– ВНИМАНИЕ! Некорректный XML! –>

<p>Обычный <em>акцентированный <strong>выделенный и акцентированный</em> выделенный</strong></p>

Каждый XML-документ должен содержать в точности один корневой элемент (англ. root element или document element), таким образом, следующий фрагмент не может считаться корректным XML-документом.

<!– ВНИМАНИЕ! Некорректный XML! –>

<thing>Cущность №1</thing>

<thing>Cущность №2</thing>

Для обозначения элемента без содержания, называемого пустым элементом, необходимо применять особую форму записи, состоящую из одного тега, в котором после имени элемента ставится косая черта. Если в DTD элемент не объявлен пустым, но в документе он не имеет содержания, для него допускается применять такую форму записи. Например:

<foo></foo>

<foo />

<foo/>

В XML определены два метода записи специальных символов: ссылка на сущность и ссылка по номеру символа. Сущностью (англ. entity) в XML называются именованные данные, обычно текстовые, в частности спецсимволы. Ссылка на сущность (англ. entity references) указывается в том месте, где должна быть сущность и состоит из амперсанда («&»), имени сущности и точки с запятой («;»). В XML есть несколько предопределённых сущностей, таких как «lt» (ссылаться на неё можно написав «&lt;») для левой угловой скобки и «amp» (ссылка − «&amp;») для амперсанда, возможно также определять собственные сущности. Помимо записи с помощью сущностей отдельных символов, их можно использовать для записи часто встречающихся текстовых блоков. Ниже приведён пример использования предопределённой сущности для избежания использования знака амперсанда в названии:

<company-name>AT&amp;T</company-name>

Полный список предопределённых сущностей состоит из &amp; («&»), &lt; («<»), &gt; («>»), &apos; («’»), и &quot; («»") − последние две полезны для записи разделителей внутри значений атрибутов. Определить свои сущности можно в DTD-документе.

Иногда бывает необходимо определить неразрывный пробел, который очень часто используется в HTML и обозначается как &nbsp; в XML такой предопределённой сущности нет, его записывают &#160, а использование &nbsp; вызывает ошибку. Отсутствие этой весьма распространённой сущности у множества программистов, зачастую, вызывает удивление, и это создаёт некоторые трудности при миграции своих HTML-разработок в XML.

Cсылка по номеру символа (англ. numeric character reference) выглядит как ссылка на сущность, но вместо имени сущности указывается символ # и число (в десятичной или шестнадцатеричной записи), являющееся номером символа в кодовой таблице Юникод. Это обычно символы, которые невозможно закодировать напрямую, например буква арабского алфавита в ASCII-кодированном документе. Амперсанд может быть представлен следующим образом:

<company-name>AT&#38;T</company-name>

Существует ещё множество правил, касающихся составления корректного XML-документа, показаны лишь необходимые для понимания структуры XML-документа.

Достоинства XML

1) человеко-ориентированный − одновременно понятный и человеку и компьютеру;

2) поддерживает Юникод;

3) в формате XML могут быть описаны основные структуры данных − такие как записи, списки и деревья;

4) XML − это самодокументируемый формат, который описывает структуру и имена полей также как и значения полей;

5) имеет строго определённый синтаксис и требования к анализу, что позволяет ему оставаться простым, эффективным и непротиворечивым;

6) широко используется для хранения и обработки документов;

7) XML − формат, основанный на международных стандартах;

8) иерархическая структура XML подходит для описания практически любых типов документов;

9) представляет собой простой текст, свободный от лицензирования и каких-либо ограничений;

10) не зависит от платформы;

11) является подмножеством SGML (который используется с 1986 г.). Уже накоплен большой опыт работы с языком и созданы специализированные приложения;

12) не накладывает требований на расположение символов на строке.

Недостатки XML

1) Синтаксис XML избыточен.

Размер XML документа существенно больше бинарного представления тех же данных. В грубых оценках величину этого фактора принимают за 1 порядок (в 10 раз).

Размер XML документа существенно больше, чем документа в альтернативных текстовых форматах передачи данных (например JSON, YAML) и особенно в форматах данных, оптимизированных для конкретного случая использования.

Избыточность XML может повлиять на эффективность приложения. Возрастает стоимость хранения, обработки и передачи данных.

Для большого количества задач не нужна вся мощь синтаксиса XML и можно использовать значительно более простые и производительные решения

2) XML не содержит встроенной в язык поддержки типов данных. В нём нет понятий «целых чисел», «строк», «дат», «булевых значений» и т. д.

3) Иерархическая модель данных, предлагаемая XML, ограничена по сравнению с реляционной моделью и объектно-ориентированными графами.

Выражение неиерархических данных (например графов) требует дополнительных усилий

Кристофер Дейт, специалист в области реляционных баз данных, автор классического учебника «An Introduction to Database Systems», отмечал, что «…XML является попыткой заново изобрести иерархические базы данных…» (в 1980-е года иерархические базы данных были вытеснены реляционными базами данных).

4) Пространства имён XML сложно использовать и их сложно реализовывать в XML парсерах;

5) Существуют другие, обладающие сходными с XML возможностями, текстовые форматы данных, которые обладают более высоким удобством чтения человеком (YAML, JSON, SweetXML, XF).

Наиболее распространены три способа преобразования XML-документа в отображаемый пользователю вид:

1) применение стилей CSS;

2) применение преобразования XSLT;

3) написание на каком-либо языке программирования обработчика XML-документа.

Без использования CSS или XSL XML-документ отображается как простой текст в большинстве Web-браузеров. Некоторые браузеры, такие как Internet Explorer, Mozilla и Mozilla Firefox отображают структуру документа в виде дерева, позволяя сворачивать и разворачивать узлы с помощью нажатий клавиши мыши.

Применение стилей CSS

Процесс аналогичен применению CSS к HTML документу для отображения.

Для применения CSS при отображении в браузере, XML документ должен содержать специальную ссылку на таблицу стилей. Например:

<?xml-stylesheet type=»text/css» href=»myStyleSheet.css»?>

Это отличается от подхода HTML, где используется элемент <link>.

Применение преобразования XSLT

XSL является технологией, описывающей как форматировать или преобразовывать данные XML-документа. Документ трансформируется в формат, подходящий для отображения в браузере. Браузер − это наиболее частое использование XSL, но не стоит забывать, что с помощью XSL можно трансформировать XML в любой формат, например VRML, PDF, текст.

Для задания XSL трансформации (XSLT) на стороне клиента требуется наличие следующей инструкции в XML:

<?xml-stylesheet type=»text/xsl» href=»transform.xsl»?>

Словари XML

Так как XML является достаточно абстрактным языком, были разработаны словари XML. Словарь позволяет разработчикам договориться о некотором конечном наборе имен тегов и атрибутов этих тегов. Одним из первых словарей появился XHTML, который понимают большинство браузеров. XHTML часто используют для хранения и редактирования контента в CMS.

Были созданы более специализированные словари, например протокол передачи данных SOAP, который не является человеко-ориентированным и достаточно трудно читаем. Есть коммерческие словари, такие как xCBL и cXML которые используются для передачи данных, ориентированных на торговую деятельность, эти словари включают в себя описание системы заказов, поставщиков, продуктов и прочее. Обычно, описывая какой-либо документ, человек для себя придумывает некоторый словарь, который потом описывается посредством DTD или просто объясняется «на пальцах» заинтересованным лицам.

Одним из интересных словарей, получивших широкое распространение, является FB2 − словарь, описывающий формат книги, со всевозможными сносками, цитатами, даже картинками.

JavaScript − скриптовый язык, чаще всего использующийся при создании сценариев поведения браузера, встраиваемых в веб-страницы. Является одной из реализаций языка ECMAScript.

Название «JavaScript» является зарегистрированным товарным знаком компании Sun Microsystems, Inc.

Разработанный Бренданом Айком из компании Netscape язык был включён в браузер Netscape Navigator начиная с версии 2.0B3 в декабре 1995 г. Первоначально язык назывался Mocha, затем он был переименован в LiveScript. На синтаксис оказали влияние языки Си и Java, и, поскольку технология Java была в то время очень модной, LiveScript переименовали в JavaScript, получив соответствующую лицензию у Sun. Реализация компании Microsoft получила название JScript. Internet Explorer, поддерживает JScript, начиная с версии 3.0, выпущенной в августе 1996 г. Стандартизация языка ассоциацией ECMA иниицирована компанией Netscape. Стандартизированная версия имеет название ECMAScript, описывается стандартом ECMA-262. Первая версия данного стандарта примерно соответствовала JavaScript 1.1.

JavaScript в данный момент полностью занимает нишу браузерных языков. JavaScript также находит применение в качестве скриптового языка доступа к объектам приложений. Платформа Mozilla (XUL/Gecko) использует JavaScript. Среди сторонних продуктов, например, Java, начиная с версии 6, содержит встроенный интерпретатор JavaScript на базе Rhino. Сценарии JavaScript поддерживаются в таких приложениях Adobe, как Adobe Photoshop, Adobe Dreamweaver, Adobe Illustrator или Adobe InDesign.

JavaScript обладает рядом свойств объектно-ориентированного языка, но благодаря прототипированию поддержка объектов в нём отличается от традиционных ОО языков. Кроме того, JavaScript имеет ряд свойств, присущих функциональным языкам − функции как объекты первого уровня, объекты как списки, карринг (currying), анонимные функции, замыкания (closures) − что придаёт языку дополнительную гибкость.

JavaScript имеет C-подобный синтаксис, но по сравнению с языком Си имеет следующие коренные отличия:

1) объекты, с возможностью интроспекции и динамического изменения типа через механизм прототипов;

2) функции как объекты первого класса;

3) обработка исключений;

4) автоматическое приведение типов;

5) автоматическая сборка мусора;

6) анонимные функции;

Пример объявления и использования класса в JavaScript (класс является одновременно функцией, так как функции − это объекты первого уровня):

function MyClass()

{

this.myValue1 = 1;

this.myValue2 = 2;

}

var mc = new MyClass();

mc.myValue1 = mc.myValue2 * 2;

Использование в HTML

JavaScript-код включается в HTML-код страницы и исполняется интерпретатором, встроенным в браузер. JavaScript заключается в теги <script></script> с обязательным по спецификации HTML 4.01 атрибутом, хотя в большинстве браузеров язык сценариев по умолчанию именно JavaScript.

Скрипт, выводящий модальное окно с классической надписью «Hello, World!» внутри браузера:

<script type=»text/javascript»>

alert(‘Hello, World!’);

</script>

Следуя концепции интеграции JavaScript в существующие системы, браузеры поддерживают включение скрипта, например, в значение атрибута события:

<a href=»delete.php»>Удалить</a>

Здесь при нажатии на ссылку функция confirm(‘Вы уверены?’); вызывает модальное окно с надписью «Вы уверены?», а return false; блокирует переход по ссылке. Разумеется, этот код будет работать только если в браузере есть и включена поддержка JavaScript, иначе переход по ссылке произойдет без предупреждения.

Есть и третья возможность подключения JavaScript − написать скрипт в отдельном файле, а потом подключить его с помощью конструкции

<script type=»text/javascript» src=»http://Путь_к_файлу_со_скриптом»></script>

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

AJAX (Asynchronous Javascript and XML − «асинхронный JavaScript и XML») − это подход к построению интерактивных пользовательских интерфейсов веб-приложений, заключающийся в «фоновом» обмене данными браузера с веб-сервером. В результате при обновлении данных веб-страница не перезагружается полностью, и веб-приложения становятся более быстрыми и удобными.

Впервые термин AJAX был публично использован 18 февраля 2005 г. в статье Джесси Джеймса Гарретта (Jesse James Garrett) «Новый подход к веб-приложениям». Гарретт придумал термин, когда ему пришлось как-то назвать новый набор технологий, предлагаемый им клиенту.

Однако в той или иной форме многие технологии были доступны и использовались гораздо раньше, например в подходе «Remote Scripting», предложенным компанией Microsoft в 1998 г. или с использованием HTML элемента IFRAME, появившегося в Internet Explorer 3 в 1996 г.

AJAX стал особенно популярен после использования его компанией Google в сервисах Gmail, Google Maps и Google Suggest.

AJAX − это не самостоятельная технология, а концепция использования нескольких смежных технологий. AJAX базируется на двух основных принципах:

1) использование технологии динамического обращения к серверу «на лету», без перезагрузки всей страницы полностью, например:

с использованием XMLHttpRequest (основной метод);

через динамическое создание дочерних фреймов;

через динамическое создание тега <script>.

2) использование DHTML для динамического изменения содержания страницы.

В качестве формата передачи данных обычно используются JSON или XML.

Преимущества AJAX

1) Экономия трафика:

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

2) Уменьшение нагрузки на сервер:

AJAX позволяет несколько снизить нагрузку на сервер. К примеру, на странице работы с почтой, когда вы отмечаете прочитанные письма, серверу достаточно внести изменения в базу данных и отправить клиентскому скрипту сообщение об успешном выполнении операции без необходимости повторно создавать страницу и передавать её клиенту.

3) Ускорение реакции интерфейса:

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

Недостатки AJAX

1) Интеграция со стандартными инструментами браузера:

динамически создаваемые страницы не регистрируются браузером в истории посещения страниц, поэтому не работает кнопка «Назад», предоставляющая пользователям возможность вернуться к просмотренным ранее страницам, но существуют скрипты, которые могут решить эту проблему;

другой недостаток изменения содержимого страницы при постоянном URL заключается в невозможности сохранения закладки на желаемый материал. Частично решить эти проблемы можно с помощью динамического изменения идентификатора фрагмента (части URL после #), что позволяют многие браузеры.

2) Динамически загружаемое содержимое недоступно поисковикам (если не проверять запрос, обычный он или XHttpRequest):

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

3) Старые методы учёта статистики сайтов становятся неактуальными:

многие сервисы статистики ведут учёт просмотров новых страниц сайта, для сайтов, страницы которых широко используют AJAX, такая статистика теряет актуальность.

  2 Технологии и языки программирования для web (120,0 Кб, 0 скачиваний)
You do not have permission to download this file.