Разработка программных комплексов на языке JavaScript
Покупка
Тематика:
Программирование на Java
Издательство:
Издательство Уральского университета
Под ред.:
Пименов Владимир Германович
Год издания: 2020
Кол-во страниц: 132
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7996-3034-8
Артикул: 799098.01.99
Рассматриваются вопросы практического использования языка JavaScript для разработки веб-сервисов. Основное внимание уделяется подробному разбору сложных теоретических вопросов прототипного наследования, политик безопасности. В качестве средств разработки используются платформа Node.js и фреймворк Express. Для студентов, специализирующихся в области прикладной информатики, компьютерных наук и занимающихся разработкой программного обеспечения.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 02.03.01: Математика и компьютерные науки
- 02.03.02: Фундаментальная информатика и информационные технологии
- 02.03.03: Механика и математическое моделирование
- ВО - Специалитет
- 10.05.01: Компьютерная безопасность
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ УРАЛЬСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ ИМЕНИ ПЕРВОГО ПРЕЗИДЕНТА РОССИИ Б. Н. ЕЛЬЦИНА Екатеринбург Издательство Уральского университета 2020 С. И. Солодушкин, И. Ф. Юманова РАЗРАБОТКА ПРОГРАММНЫХ КОМПЛЕКСОВ НА ЯЗЫКЕ JAVASCRIPT Учебное пособие Рекомендовано методическим советом Уральского федерального университета для студентов вуза, обучающихся по направлениям подготовки 02.03.03 «Математическое обеспечение и администрирование информационных систем», 02.03.01 «Математика и компьютерные науки», 02.03.02 «Фундаментальная информатика и информационные технологии», по специальности 10.05.01 «Компьютерная безопасность»
С60 Солодушкин, С. И. Разработка программных комплексов на языке JavaScript : учебное пособие / С. И. Солодушкин, И. Ф. Юманова ; под общ. ред. В. Г. Пименова ; Министерство науки и высшего образования Российской Федерации, Уральский федеральный университет. — Екатеринбург : Изд‑во Урал. ун‑та, 2020. — 132 с. : ил. — 100 экз. — ISBN 978‑5‑7996‑3034‑8. — Текст : непосредственный. ISBN 978‑5‑7996‑3034‑8 Рассматриваются вопросы практического использования языка JavaScript для разработки веб‑сервисов. Основное внимание уделяется подробному разбору сложных теоретических вопросов прототипного наследования, политик безопасности. В качестве средств разработки используются платформа Node.js и фреймворк Express. Для студентов, специализирующихся в области прикладной информатики, компьютерных наук и занимающихся разработкой программного обеспечения. УДК 004.4(075.8) ББК 32.973.2я73 УДК 004.4(075.8) ББК 32.973.2я73 С60 ISBN 978‑5‑7996‑3034‑8 © Уральский федеральный университет, 2020 П о д о б щ е й р е д а к ц и е й В. Г. Пименова Ре ц е н з е н т ы: кафедра прикладной математики и технической графики Уральского государственного архитектурнохудожественного университета (заведующий кафедрой доктор физикоматематических наук, профессор С. С. Титов); А. Б. Ложников, кандидат физикоматематических наук, доцент, старший научный сотрудник отдела дифференциальных уравнений Института математики и механики УрО РАН
ОГЛАВЛЕНИЕ Предисловие 5 Глава 1. Основные понятия и история языка JavaScript 6 1.1. Краткая история появления языка JavaScript: причины и предпосылки 6 1.2. Тезаурус (основные понятия и связи между ними) 8 1.3. Общая характеристика языка 13 Контрольные вопросы 17 Глава 2. Прототипное наследование в JavaScript 18 2.1. Прототипное наследование встроенных объектов 18 2.2. Операторы instanceof и typeof 25 2.3. Свойство __proto__ и метод getPrototypeOf() 28 2.4. Прототипное наследование пользовательских объектов 29 Контрольные вопросы 30 Глава 3. Same Origin Policy. Эксперименты с кроссдоменным взаимодействием 32 3.1. Эксперименты с Same Origin Policy 32 3.2. Понятие Same Origin Policy 35 3.3. Кроссдоменные запросы не из скрипта 37 3.4. Кроссдоменные запросы: Ajax‑запросы и CORS 39 3.5. Методы обхода и ослабления Same Origin Policy 56
3.6. Дополнение. Листинги с исходным кодом 65 Контрольные вопросы 69 Глава 4. Веб‑сервисы 71 Контрольные вопросы 75 Глава 5. Фреймворк Express 76 5.1. Быстрый старт 76 5.2. Маршрутизация 80 5.3. Использование промежуточных обработчиков 94 5.4. JSON и AJAX 105 5.5. Шаблонизаторы 108 Контрольные вопросы 120 Глава 6. Интеграция фреймворка Express и MongoDB 121 6.1. Начало работы с MongoDB 121 6.2. Взаимодействие с MongoDB из Node.js 124 Контрольные вопросы 129 Библиографические ссылки 131
ПРЕДИСЛОВИЕ Учебное пособие «Разработка программных комплексов на языке JavaScript» написано авторами на основе опыта чтения курса «Web и DHTML» в Уральском федеральном университете. Цель учебного пособия — изучение объектно‑ориентированного программирования на JavaScript и прототипного наследования, Same Origin Policy и методов релаксации тех жестких ограничений, которые данная политика накладывает, а также знакомство с фреймворком Express. Учебное пособие призвано помочь студентам в освоении курса «Web и DHTML» и отражает его структуру. Пособие разбито на главы. Каждая глава соответствует рассматриваемой на занятиях теме и содержит необходимые теоретические сведения, примеры, всесторонне иллюстрирующие теорию, и иногда листинги программ. Кроме того, в конце глав приводятся вопросы для самоконтроля. При подготовке учебного пособия авторы в основном обращались к первоисточникам, т. е. к официальным стандартам и документации. Работа выполнена в рамках исследований Уральского математического центра.
Глава 1 ОСНОВНЫЕ ПОНЯТИЯ И ИСТОРИЯ ЯЗЫКА JAVASCRIPT 1.1. Краткая история появления языка JavaScript: причины и предпосылки Необходимо понимать, что языки программирования создаются в контексте определенных исторических реалий, и нужна достаточно сильная мотивация для разработки нового языка. Разработчики языка ставят перед собой вполне конкретные цели, а это, в свою очередь, определяет возможности языка, реализуемые в нем парадигмы. В связи с этим мы дадим историческую справку о появлении и развитии языка JavaScript, а потом охарактеризуем его в общем и целом. Начало 1990‑х гг. ознаменовано бурным развитием Интернета и особенно World Wide Web. Разработчики браузеров (на тот момент было два основных браузера — Internet Explorer и Netscape Navigator) старались сделать свои продукты более продвинутыми, реализовать в них поддержку новых возможностей и тем самым вытеснить конкурентов и завоевать рынок. Выполнение в браузере программного кода было одной из таких возможностей. Что происходило в мире IT в то время? В 1992 г. компания Nombas начала разработку скриптового языка Cmm (Си‑минус‑минус), который, по замыслу разработчиков, должен был стать достаточно мощным, чтобы заменить макросы, сохраняя при этом схожесть с Си, чтобы разработчикам не составило
большого труда изучить его. Главным отличием от Си была работа с памятью. В новом языке все управление памятью осуществлялось автоматически: не было необходимости создавать буферы, объявлять переменные, осуществлять преобразование типов. В остальном языки походили друг на друга: в частности, Cmm поддерживал стандартные функции и операторы Си. Cmm был переименован в ScriptEase, поскольку исходное название звучало слишком негативно, а упоминание в нем Си отпугивало людей. На основе этого языка был создан проприетарный продукт CEnvi. В конце ноября 1995 г. Nombas разработала версию CEnvi для внедрения в веб‑страницы. Страницы, которые можно было изменять с помощью скриптового языка, получили название Espresso Pages — они демонстрировали использование скриптового языка для создания игры, проверки пользовательского ввода в формы и создания анимации. Espresso Pages позиционировались как демоверсия, призванная помочь представить, что случится, если в браузер будет внедрен язык Cmm. Работали они только в 16‑битовом Netscape Navigator под управлением Windows. Таким образом, идея, что браузер должен поддерживать язык программирования, встраиваемый в HTML‑код страницы, витала в IT‑сообществе; язык JavaScript создавался не на пустом месте. В апреле 1995 г. компания Netscape поставила перед Бренданом Эйхом задачу — внедрить в браузер Netscape поддержку языка программирования. Анонс JavaScript представителями Netscape и Sun состоялся накануне выпуска второй бета‑версии Netscape Navigator. В июле 1996 г. компания Microsoft выпустила аналог языка JavaScript, названный JScript. Первым браузером, поддерживающим эту реализацию, был Internet Explorer 3.0. По инициативе компании Netscape была проведена стандартизация языка ассоциацией ECMA. Стандартизированная версия, описываемая стандартом ECMA‑262, имеет название ECMAScript. Первой версии спецификации соответствовал JavaScript версии 1.1, а также язык JScript.
1.2. Тезаурус (основные понятия и связи между ними) Прежде чем переходить к описанию языка JavaScript, необходимо дать базовые определения и установить связи между ними. Дело в том, что в учебниках и особенно в электронных ресурсах зачастую имеет место смешение и/или подмена понятий, что вызывает немалую путаницу. В этом разделе будут указаны семантические отношения между терминами. Это позволит выявить смысл терминов не только с помощью определений, но и посредством их соотнесения с другими понятиями и их группами. В свою очередь, специальная терминология должна способствовать правильной лексической, корпоративной коммуникации (общению и взаимодействию лиц, связанных одной дисциплиной или профессией). Язык JavaScript, спецификация — описание языка, разработанного в компании Netscape. Существует в виде формального документа, который, в частности, разъясняет существующие типы данных, зарезервированные слова языка, их синтаксис и семантику. Язык JavaScript развивался, были выпущены новые релизы, где были добавлены дополнительные языковые возможности (например, стрелочные функции, блочные области видимости и т. д.). На JavaScript можно написать программный код, однако чтобы этот код выполнить, необходимо наличие программы‑интерпретатора JavaScript‑кода. Таким образом, наряду со спецификацией языка существует еще реализация языка — программа, которая умеет прочитывать код, написанный на JavaScript, и выполнять его (см. движок JavaScript). Название JavaScript является зарегистрированной торговой маркой. Язык JScript, спецификация — описание языка, разработанного в компании Microsoft. Далее можно повторить все, что было выше написано про JavaScript. Поскольку идея Netscape выполнять скрипты на веб‑страницах оказалась привлекательной, компания Microsoft также реализовала эту идею в своих браузерах.
Слово «JavaScript» является зарегистрированной торговой маркой, а потому во избежание юридических конфликтов корпорация Microsoft должна была придумать иное название для своего языка, который почти идентичен языку JavaScript. Отметим, что первые релизы JavaScript и Jscript состоялись до выхода документации ECMAScript. Как JavaScript, так и Jscript на момент их публикации были «корпоративными» стандартами, т. е. не были утверждены независимыми организациями по стандартизации, такими, например, как ISO, IETF или ECMA. По инициативе компании Netscape была проведена стандартизация языка ассоциацией ECMA. Стандартизированная версия имеет название ECMAScript, описывается стандартом ECMA‑262. ECMAScript, спецификация — описание языка, возникшего на основе нескольких технологий, самыми известными из которых являются языки JavaScript и JScript. Разработка первой редакции спецификации началась в ноябре 1996 г. Принятие спецификации состоялось в июне 1997 г. Язык ECMAScript стандартизирован международной организацией ECMA в спецификации ECMA‑262; эта же организация занимается поддержкой и развитием языка. Как указано в [1], «ECMAScript is based on several originating technologies, the most well‑known being JavaScript (Netscape) and JScript (Microsoft). The language was invented by Brendan Eich at Netscape and first appeared in that company’s Navigator 2.0 browser. It has appeared in all subsequent browsers from Netscape and in all browsers from Microsoft starting with Internet Explorer 3.0». Приведем перевод этого фрагмента. Язык ECMAScript основан на нескольких ориганальных технологиях, наболее известными из которых являются JavaScript (Netscape) и JScript (Microsoft). Язык был предложен Бренданом Эйхом из компании Netscape, впервые появился в ее браузере Navigator 2.0. Этот язык входил также в состав всех последующих браузеров компании Netscape и всех браузеров компании Microsoft, начиная с Internet Explorer 3.0. ECMAScript — это абстрактное описание языка, существующее только на бумаге. Изначально ECMAScript возник на основе JavaScript или JScript как попытка их стандартизации, и авторы стандарта стремились соответствовать реализациям. Теперь, наобо
рот, стандарт развивается относительно самостоятельно, а авторы реализаций (наиболее известными из которых являются JavaScript и JScript) стремятся соответствовать стандарту. Реализации JavaScript и JScript, которые также называют расширениями языка, не на 100 % совместимы со стандартом ECMAScript. Движок JavaScript — программа, которая выполняет JavaScriptкод. Может быть реализована как традиционный интерпретатор или как just in time (на лету, во время исполнения) компилятор. Когда мы говорим о реализации стандарта ECMAScript, мы говорим, во‑первых, о движке, реализующем стандарт, а во‑вторых, о возможных проприетарных расширениях языка. К компетенции движков относятся вопросы оптимизации, скорости выполнения кода, расхода оперативной памяти и т. д. Существуют реализации движков под Windows, Linux, MacOS, а спецификаций под Windows, Linux нет — спецификация одна. Приведем примеры движков: 1) SpiderMonkey — самый первый движок JavaScript, созданный Бренданом Эйхом в Netscape Communications; 2) Rhino, разрабатываемый Mozilla Foundation движок JavaScript с открытым исходным кодом, полностью написанный на Java; 3) V8‑движок, разработанный датским отделением компании Google. Среда выполнения — программная платформа, окружение, в котором работает движок JavaScript. Начиная писать первые программы на JavaScript, мы используем console.log или setTimeout, однако в стандарте языка ничего этого не описано. Соответственно, движок JavaScript этих функций и/или объектов не знает. Возникает вопрос: а как же это тогда работает? Дело в том, что программный код на JavaScript исполняется в среде выполнения, наиболее распространенной средой являются веббраузер и Node.js. Среда выполнения предоставляет определенные API и объекты среды, которые могут быть использованы движком. Как указано в документации [1], ECMAScript представляет собой объектно‑ориентированный язык программирования, предназначенный для проведения вычислений с объектами и управления этими объектами в среде выполнения.