JavaScript

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 14:03, 24 января 2018.
JavaScript
Javascript.png
Парадигма мультипарадигменный: объектно-ориентированное, обобщённое, функциональное, императивное, аспектно-ориентированное, событийно-ориентированное, прототипное программирование
Спроектировано Брендан Эйх
Первый   появившийся 1995
OS Кроссплатформенное
Расширение файла .js
Портал: https://www.javascript.com/
Под влиянием
Self, Си, Scheme, Perl, Python, Java, AWK, HyperTalk

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

История

В разработке JavaScript участвовали Брендана Эйха вместе с сооснователем Netscape Communications Марком Андрессеном и сооснователем Sun Microsystems Биллом Джойем. Компании ставили перед собой цель обеспечить «язык для склеивания» составляющих частей веб-ресурса: добавление немного поведения на веб-страницу. Например, обработать нажатие кнопок на веб-странице, произвести какие-нибудь другие действия, связанные прежде всего с элементами управления, добавить изображений, плагины, Java-апплеты, которые были бы удобны для веб-дизайнеров и программистов, не обладающих высокой квалификацией. Также он применяется как язык серверной стороны. Первоначально язык назывался Mocha, затем он был переименован в LiveScript и предназначался как для программирования на стороне клиента, так и для программирования на стороне сервера (там он должен был называться LiveWire). На синтаксис оказали влияние языки Си и Java. 4 декабря 1995 года LiveScript переименовали в JavaScript, получив соответствующую лицензию у Sun. Первая публичная версия JavaScript была встроена в Netscape Navigator 2.0, выпущенный в 1995 году.

11111111111111111111111111111111111111111111111111111111111111111111111.png

Структура языка

Структурно JavaScript можно представить в виде объединения трёх чётко различимых друг от друга частей

  • ядро (ECMAScript),
  • объектная модель браузера (Browser Object Model или BOM (en)),
  • объектная модель документа (Document Object Model или DOM).

Ядро

Основная статья: ECMAScript ECMAScript не является браузерным языком и в нём не определяются методы ввода и вывода информации. Это, скорее, основа для построения скриптовых языков. Спецификация ECMAScript описывает типы данных, инструкции, ключевые и зарезервированные слова, операторы, объекты, регулярные выражения, не ограничивая авторов производных языков в расширении их новыми составляющими.[Источник 1]

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

Объектная модель браузера — браузер-специфичная часть языка, являющаяся прослойкой между ядром и объектной моделью документа. Основное предназначение объектной модели браузера — управление окнами браузера и обеспечение их взаимодействия. Каждое из окон браузера представляется объектом window, центральным объектом DOM. Объектная модель браузера на данный момент не стандартизирована, однако спецификация находится в разработке WHATWG и W3C.

Помимо управления окнами, в рамках объектной модели браузера, браузерами обычно обеспечивается поддержка следующих сущностей:

  • управление фреймами,
  • поддержка задержки в исполнении кода и зацикливания с задержкой,
  • системные диалоги,
  • управление адресом открытой страницы,
  • управление информацией о браузере,
  • управление информацией о параметрах монитора,
  • ограниченное управление историей просмотра страниц,
  • поддержка работы с HTTP cookie.

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

Основная статья: Document Object Model Объектная модель документа — интерфейс программирования приложений для HTML и XML-документов. Согласно DOM, документ (например, веб-страница) может быть представлен в виде дерева объектов, обладающих рядом свойств, которые позволяют производить с ним различные манипуляции:

  • генерация и добавление узлов,
  • получение узлов,
  • изменение узлов,
  • изменение связей между узлами,
  • удаление узлов.[Источник 2]

Области использования

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

Однако развитие веб-среды, появление HTML5 и технологии Node.js открыло перед JavaScript гораздо большие горизонты. Сейчас JavaScript продолжает использоваться для создания веб-сайтов, только теперь он предоставляет гораздо больше возможностей.

Наиболее популярные области использования JavaScript:

  • Одно из ранних использований JavaScript-кода в диалоговом окне сообщений, предусмотренных предупреждениях, оповещениях или приглашениях пользователям. *Содержимое HTML - элементов может быть изменено с помощью JavaScript. Это требует использования HTML dom, в котором HTML - элементы определены как объекты.
  • JavaScript может использоваться для обратной связи с пользователями посредством онлайн-форм.
  • Широко используется в формах регистрации и принятия индивидуальных логина и пароля.
  • JavaScript создает поле поиска, которое принимает вводимые пользователем данные, на основе которых выводятся результаты поиска
  • Используется для фиксации расположения элементов на странице и решает, загружать их или нет. Таким образом, это помощь в создании лучшего макеты страниц. *JavaScript поддерживает HTML и может быть использован для повышения качества веб-страниц во многих отношениях. Он может быть использован для добавления нескольких элементов для веб-страниц, простой HTML этого не может. Использование аудио, видео и анимации, станет удобнее с использованием JavaScript.
  • Может быть использован, чтобы скрыть информацию и раскрывать ее при действии пользователя.
  • JavaScript может использоваться для приема пользовательских комментариев или обратной связи с клиентами онлайн. Это, как правило, в виде текстовых полей, которые появляются при действии пользователя и предлагают пользователю ввести текст в полях, которые получены и отображены или сохранены для дальнейшего использования.
  • Может быть использован для хранения IP-адресов посетителей и записи их посещений страниц. JavaScript легко реализовать. Это позволяет создавать отзывчивые интерфейсы.
  • Может загружать содержимое на действия пользователя, тем самым устраняя необходимость загрузки всего содержимого страницы, когда пользователь собирается использовать только его часть.
  • Может быть использован для проверки действий браузера и устранить проблемы браузера.
  • Расширения браузеров, таких как Chrome, Opera и Safari реализованы с помощью JavaScript.
  • База данных mongodb принимает запросы в Программы Adobe Acrobat и Adobe Reader поддерживают JavaScript в формате Компания Adobe позволяет его использовать для написания сценариев.
  • .org позволяет использовать JavaScript в качестве скриптового языка.
  • Приложение Google Apps script (облако-ориентированный язык сценариев, который позволяет пользователям автоматизировать задачи, создавать пользовательские формулы, и взаимодействовать с продуктами Google) основан на JavaScript.
  • Java ввел классscript позволяющий реализации JavaScript, что позволяет java-приложениям использовать скрипты. С QT на C++ инструментарий включает QtScript для интерпретации сценариев JavaScript.
  • В JavaScript есть определенные риски безопасности. Но с использованием его подмножеств, таких как ADsafe и Secure ECMAScript (SES), может быть предоставлена большая безопасность.[Источник 3]

Практическое использование. Встраивание в веб-страницу

Основной скрипт. Расположение внутри страницы

Современные браузеры в обязательном порядке имеют поддержку языка JavaScript.

Команды JavaScript добавляются на веб-страницы с помощью тега <script>, причём исполняемый скрипт нужно вносить в окне Текст CMS WordPress. Контейнеров <script> в одном документе может быть сколько угодно. Атрибут «type=’text/javascript’» указывать необязательно, так как по умолчанию стоит javascript. Например:

<script type=«text/javascript»>
document.write(«Вывод текста стандартной командой JavaScript.»);
</script>

Скрипт этого языка можно как внедрять непосредственно в HTML-код страницы, так и выносить в файл, который может вызываться разными страницами. Вот пример вызова файла со скриптом:

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

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

Расположение внутри тега

Спецификация HTML описывает набор атрибутов, используемых для задания обработчиков событий. Пример использования:

     <a href="delete.php" onclick="return confirm('Вы уверены?');">
        Удалить
     </a>

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

Использование кода JavaScript в контексте разметки страницы расценивается в рамках ненавязчивого JavaScript как плохая практика. Аналогом (при условии снабжения ссылки идентификатором alertLink)

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

приведённого примера может являться, например, следующий фрагмент JavaScript:

window.onload = function() {
   var linkWithAlert = document.getElementById("alertLink");
   linkWithAlert.onclick = function() {
       return confirm('Вы уверены?'); 
   };
};

Вынесение в отдельный файл

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

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

Атрибуты элемента script

Элемент script, широко используемый для подключения к странице JavaScript, имеет несколько атрибутов. необязательный атрибут type для указания MIME-типа содержимого. В запросе комментариев RFC-4329, определяющем[55] MIME-тип, соответствующий JavaScript, указано:

Медиатипы

application/javascript,
application/ecmascript,

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

Необязательный атрибут src, принимающий в качестве значения адрес к файлу со скриптом. Необязательный атрибут charset, используемый вместе с src для указания используемой кодировки внешнего файла. Необязательный атрибут defer указывает, что получение скрипта происходит асинхронно, но выполнение следует отложить до тех пор, пока страница не будет загружена целиком. Необязательный атрибут async указывает, что получение скрипта происходит асинхронно, а выполнение будет произведено сразу по завершению скачивания. Очерёдность выполнения скриптов не гарантируется. При этом атрибут language (language="JavaScript"), несмотря на его активное использование (в 2008 году этот атрибут был наиболее часто используемым у тега <script>), относится к не рекомендуемым (deprecated), отсутствует в DTD, поэтому считается некорректным.

Использование JavaScript в приложениях

Приложения, написанные на JavaScript, могут исполняться на серверах, использующих Java 6 и более поздних версий. Это обстоятельство используется для построения серверных приложений, позволяющих обрабатывать JavaScript на стороне сервера.

Помимо Java 6, существует ряд платформ, использующих существующие движки (интерпретаторы) JavaScript для исполнения серверных приложений. (Как правило, речь идёт о повторном использовании движков, ранее созданных для исполнения кода JavaScript в браузерах WWW.)

Название Используемый движок JavaScript Языки, на которых написан движок и платформа Лицензия
Jaxer SpiderMonkey C++, C GPL 3
persevere-framework Rhino Java Модифицированная лицензия BSD
Helma Rhino Java, JavaScript BSD-подобная Helma License 2.0
v8cgi V8 C++, JavaScript Лицензия BSD
node.js V8 C++ Лицензия MIT

Версии

JavaScript Соответствующая версия JavaScript Изменения
1.0 (Netscape 2.0, март 1996) 1.0 (ранние версии IE 3.0, август 1996) Оригинальная версия языка JavaScript.
1.1 (Netscape 3.0, август 1996) 2.0 (поздние версии IE 3.0, январь 1997) В данной версии был реализован объект Array и устранены наиболее серьёзные ошибки.
1.2 (Netscape 4.0, июнь 1997) Реализован переключатель switch, регулярные выражения. Практически приведён в соответствии с первой редакцией спецификации ECMA-262.
1.3 (Netscape 4.5, октябрь 1998) 3.0 (IE 4.0, октябрь 1997) Совместим с первой редакцией ECMA-262.
1.4 (только Netscape Server) 4.0 (Visual Studio 6, нет версии IE) Применяется только в серверных продуктах Netscape
5.0 (IE 5.0, март 1999)
5.1 (IE 5.01)
1.5 (Netscape 6.0, ноябрь 2000; также

поздние версии Netscape и Mozilla)

5.5 (IE 5.5, июль 2000) Редакция 3 (декабрь 1999). Совместим с третьей редакцией спецификации ECMA-262.
5.6 (IE 6.0, октябрь 2001)
1.6 (Gecko 1.8, Firefox 1.5, ноябрь 2005) Редакция 3 с некоторыми совместимыми улучшениями: E4X, дополнения к Array (например, Array.prototype.forEach), упрощения для Array и String
1.7 (Gecko 1.8.1, Firefox 2.0, осень 2006), расширение JavaScript 1.6 Редакция 3, с добавлением всех улучшений из JavaScript 1.6, генераторов и списочных выражений(англ. list comprehensions, [a*a for (a in iter)]) из Python, блоковых областей с использованием let и деструктурирующего присваивания (var [a, b] = [1, 2])
JScript .NET(ASP.NET; нет версии IE) (Считается, что JScript .NET разработан при участии других членов ECMA)
1.8 (Gecko 1.9, Firefox 3.0, осень 2008), расширение JavaScript 1.7 Новая форма записи для функций, сходная с типичными лямбда-выражениями, генераторы, новые методы итеративной обработки массивов reduce() и reduceRight().
1.8.1 (Gecko 1.9.1, Firefox 3.5) Встроенная поддержка JSON, метод getPrototypeOf() у Object, методы trim(), trimLeft(), trimRight() у String
2.0 Редакция 4 (разработка не закончена, название зарезервировано ECMA, но не было использовано для публикации)
Редакция 5 (ранее известная под названием ECMAScript 3.1. Финальная версия принята 3 декабря 2009 года.)


Ограничения в использовании

  • Отсутствует доступ к файлам, которые размещены на пользовательском компьютере. В целом нет доступа за пределы самой веб-страницы. Исключением могут быть только файлы cookie, которые могут быть считаны и записаны с помощью JavaScript. Объекты такого типа обычно нужны лишь для того, чтобы страница загружалась быстрее.
  • Нет возможности выполнения кроссдоменных запросов, то есть получение доступа к веб-страницам, которые находятся на другом домене, даже если они открыты в соседних вкладках.
  • Нет возможности закрывать вкладки и окна, которые открывались с его помощью.
  • Отсутствует возможность защиты исходного текста на странице и запрета на копирование изображений или текста со страницы. При этом остается возможность добавлять некоторые ограничения, что позволяют функции JavaScript.
  • Подобные ограничения в некотором смысле затрудняют выполнение вредоносного кода.

Отладка

В JavaScript доступ к отладчикам становится особенно полезным при разработке крупных нетривиальных программ из-за различий в реализациях разных браузеров (в частности, в отношении объектной модели документа). Полезно иметь доступ к отладчику для каждого из браузеров, в которых будет работать веб-приложение.

По состоянию на ноябрь 2009 года, Internet Explorer, Opera, Firefox, Safari, и Google Chrome имеют отладчики сценариев.

Internet Explorer имеет три отладчика: Microsoft Visual Studio — самый полный из них, за ним следует Microsoft Script Editor (компонент Microsoft Office), и, наконец, свободный Microsoft Script Debugger, гораздо более простой, чем два других. Бесплатный Microsoft Visual Web Developer Express предоставляет ограниченную версию с отладочной функцией JavaScript в Microsoft Visual Studio. В восьмой версии в IE вместе с инструментами для разработчиков появился встроенный отладчик.

В Opera также имеется собственный отладчик — Opera Dragonfly.

Разрабатываемые веб-приложения в Firefox можно отлаживать при помощи расширений Firebug, Venkman.

В Safari входит отладчик JavaScript WebKit Web Inspector[109]. Этот же отладчик доступен и в других браузерах, использующих WebKit: Google Chrome, Arora, Rekonq, Midori и др.

Уникальность Java Script

Основная уникальность этого языка в том, что он имеет поддержку почти у всех браузеров и имеет полную интеграцию с ними. Все действия с помощью JavaScript являются очень простыми. Нет никакой другой технологии, которая бы вмещала в себя все подобные преимущества. Например, есть не кросс-браузеры, они имеют поддержку не у всех обозревателей (это XUL, ActiveX, VBScript). Также есть и такие, которые не в полной степени интегрированы с браузером. Это Silverlight, Flash, Java. На данный момент идет большое развитие подобной технологии и в разработке находятся элементы JavaScript 2.

Источники

  1. JavaScript[2017-2017]. Дата обновления 29.11.2017. http://juice-health.ru/programming/439-javascript(дата обращения 29.11.2017)
  2. JavaScript[2017-2017]. Дата обновления 29.11.2017. https://learn.javascript.ru/intro(дата обращения 29.11.2017)
  3. JavaScript[2017-2017]. Дата обновления 29.11.2017. http://ep-z.ru/stroitelstvo/sayt/javascript/(дата обращения 29.11.2017)