Node.js. Разработка серверных веб-приложений на JavaScript
Покупка
Тематика:
Программирование на Java
Издательство:
ДМК Пресс
Автор:
Хэррон Дэвид
Перевод:
Слинкин Алексей Александрович
Год издания: 2023
Кол-во страниц: 145
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Профессиональное образование
ISBN: 978-5-89818-632-6
Артикул: 430816.05.99
Книга посвящена разработке веб-приложений в Node.js — платформе, которая выводит язык JavaScript за пределы браузера и позволяет использовать его в серверных приложениях. В основе платформы лежит исключительно быстрый движок JavaScript, заимствованный из браузера Chrome, к которому добавлена быстрая и надежная библиотека асинхронного сетевого ввода/вывода. Основной упор в Node.js делается на создании высокопроизводительных, хорошо масштабируемых клиентских и серверных приложений.
На практических примерах вы научитесь пользоваться серверным и клиентским объектами HTTP, каркасами Connect и Express, освоите алгоритмы асинхронного выполнения и узнаете, как работать с базами данных на основе SQL и с MongoDB.
Начав с практических рекомендаций по установке и настройке Node.js в режиме разработки и эксплуатации, вы научитесь разрабатывать клиентские и серверные HTTP-приложения; познакомитесь с применяемой в Node.js системой организации модулей на основе спецификации CommonJS, позволяющей реализовать подмножество технологии объектно-ориентированного проектирования.
Издание предназначено для программистов, знакомых с основами JavaScript и веб-разработки.
- Полная коллекция по информатике и вычислительной технике
- Веб-разработка
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Программирование
- Программирование на Java
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Дэвид Хэррон Node.js Разработка серверных веб-приложений на JavaScript
David Herron Node Web Development A practical introduction to Node, the exciting new server-side JavaScript web development stack BIRMINGHAM – MUMBAI
Дэвид Хэррон Node.js Разработка серверных веб-приложений на JavaScript Москва, 2023 2-е издание, электронное
УДК 004.738.5:004.45Node ББК 32.973.202-018.2 Х99 Х99 Хэррон, Дэвид. Node.js. Разработка серверных веб-приложений на JavaScript / Д. Хэррон ; пер. с англ. А. А. Слинкина. — 2-е изд., эл. — 1 файл pdf : 145 с. — Москва : ДМК Пресс, 2023. — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; экран 10". — Текст : электронный. ISBN 978-5-89818-632-6 Книга посвящена разработке веб-приложений в Node.js — платформе, которая выводит язык JavaScript за пределы браузера и позволяет использовать его в серверных приложениях. В основе платформы лежит исключительно быстрый движок JavaScript, заимствованный из браузера Chrome, к которому добавлена быстрая и надежная библиотека асинхронного сетевого ввода/вывода. Основной упор в Node.js делается на создании высокопроизводительных, хорошо масштабируемых клиентских и серверных приложений. На практических примерах вы научитесь пользоваться серверным и клиентским объектами HTTP, каркасами Connect и Express, освоите алгоритмы асинхронного выполнения и узнаете, как работать с базами данных на основе SQL и с MongoDB. Начав с практических рекомендаций по установке и настройке Node.js в режиме разработки и эксплуатации, вы научитесь разрабатывать клиентские и серверные HTTP-приложения; познакомитесь с применяемой в Node.js системой организации модулей на основе спецификации CommonJS, позволяющей реализовать подмножество технологии объектно-ориентированного проектирования. Издание предназначено для программистов, знакомых с основами JavaScript и веб-разработки. УДК 004.738.5:004.45Node ББК 32.973.202-018.2 Электронное издание на основе печатного издания: Node.js. Разработка серверных веб-приложений на JavaScript / Д. Хэррон ; пер. с англ. А. А. Слинкина. — Москва : ДМК Пресс, 2016. — 144 с. — ISBN 978-5-97060-397-0. — Текст : непосредственный. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации. ISBN 978-5-89818-632-6 © Packt Publishing © Издание,Оформление, ДМК Пресс
Содержание Об авторе ............................................................................................................ 8 Благодарности ................................................................................................. 9 О рецензентах ................................................................................................ 10 Предисловие ................................................................................................... 11 О содержании книги .......................................................................................... 11 Что необходимо для чтения этой книги .............................................................. 12 На кого рассчитана эта книга ............................................................................ 13 Графические выделения.................................................................................... 13 Отзывы .............................................................................................................. 14 Поддержка клиентов ......................................................................................... 14 Исходный код примеров .................................................................................... 14 Опечатки ........................................................................................................... 14 Нарушение авторских прав ............................................................................... 15 Вопросы ............................................................................................................ 15 Глава 1. ЧТО ТАКОЕ NODE? ....................................................................... 16 Что позволяет делать Node? .............................................................................. 17 Серверный JavaScript ........................................................................................ 18 Почему имеет смысл использовать Node? ......................................................... 18 Архитектура: потоки или асинхронный ввод/вывод с управлением по событиям ...................................................................................................... 19 Производительность и использование процессора ........................................... 21 Использование серверов, экономия затрат и экологичный Интернет ................ 23 Как правильно: Node, Node.js или Node.JS? ...................................................... 24 Резюме ............................................................................................................. 24 Глава 2. НАСТРОЙКА NODE ....................................................................... 25 Системные требования ..................................................................................... 25 Установка в POSIX-совместимых системах (Linux, Solaris, Mac и т. п.) ................ 26 Предварительная установка инструментария ............................................... 26 Установка средств разработки в Mac OS X ......................................................... 26 Установка в свой домашний каталог ............................................................. 27 Зачем устанавливать в домашний каталог? .................................................. 28 Установка в системный каталог .................................................................... 29 Установка в Mac OS X с помощью MacPorts .................................................. 29 Установка в Mac OS X с помощью homebrew ................................................. 30 Установка в Linux с помощью систем управления пакетами .......................... 30 Установка одновременно нескольких экземпляров Node ............................. 31 Выполним несколько команд для проверки установки ....................................... 31
Содержание Командные утилиты Node ............................................................................. 31 Запуск скрипта в Node ................................................................................. 33 Запуск сервера в Node ................................................................................. 34 Установка npm – менеджера пакетов для Node .................................................. 35 Запуск Node-серверов на этапе инициализации системы ................................. 36 Использование всех процессорных ядер в многоядерной системе .............. 40 Резюме ............................................................................................................. 42 Глава 3. МОДУЛИ NODE .............................................................................. 43 Что такое модуль? ............................................................................................. 43 Модули Node ..................................................................................................... 44 Как Node ищет модули, затребованные в require('module')? ............................... 44 Идентификаторы модулей и пути ................................................................. 44 Локальные модули внутри приложения ........................................................ 45 Комплектация приложения с внешними зависимостями .............................. 46 Системные модули в каталогах, перечисленных в массиве require.paths ...... 48 Составные модули – модули-каталоги ......................................................... 49 Менеджер пакетов для Node (npm) .................................................................... 50 Формат npm-пакета ..................................................................................... 50 Поиск npm-пакетов ...................................................................................... 52 Команды npm ............................................................................................... 53 Версии и диапазоны версий пакета .............................................................. 61 Спецификация CommonJS ........................................................................... 63 Резюме ............................................................................................................. 64 Глава 4. ВАРИАЦИИ НА ТЕМУ ПРОСТОГО ПРИЛОЖЕНИЯ ............. 65 Разработка учебной программы по математике ................................................ 65 Использовать ли каркас? .............................................................................. 65 Реализация Math Wizard в Node (без каркасов) .................................................. 66 Маршрутизация запросов в Node ................................................................. 66 Обработка параметров запроса ................................................................... 67 Умножение чисел ......................................................................................... 69 Вычисление других математических функций .............................................. 70 Обобщение Math Wizard ............................................................................... 73 Продолжительные вычисления (числа Фибоначчи) ...................................... 74 Чего не хватает до «настоящего веб-сервера»? ............................................ 77 Использование каркаса Connect для реализации Math Wizard ...................... 78 Установка и настройка Connect .................................................................... 79 Знакомство с Connect .................................................................................. 80 Реализация Math Wizard с помощью Express ..................................................... 82 Реализация Express Math Wizard .................................................................. 82 Обработка ошибок ....................................................................................... 87 Параметризованные URL и службы данных .................................................. 88 Резюме ............................................................................................................. 93 Глава 5. ПРОСТОЙ ВЕБ-СЕРВЕР, ОБЪЕКТЫ EVENTEMITTER И HTTP-КЛИЕНТЫ .......................................................................................... 95 Отправка и получение событий с помощью объектов EventEmitter ..................... 95 Теоретические основы EventEmitter ................................................................... 97 HTTP Sniffer – прослушивание обмена данными по протоколу HTTP ............. 97
Содержание Реализация простого веб-сервера ..............................................................100 Реализация Basic Server ..............................................................................101 Типы MIME и npm-пакет MIME .....................................................................110 Обработка куков ..........................................................................................111 Отправка HTTP-запросов клиентом .............................................................112 Резюме ............................................................................................................114 Глава 6. ХРАНЕНИЕ И ВЫБОРКА ДАННЫХ .........................................115 Движки сохранения данных для Node ...............................................................115 SQLite3 – облегченная встраиваемая база данных на основе SQL ....................115 Установка ....................................................................................................116 Реализация приложения Notes с помощью SQLite3 .....................................116 Использование других СУБД на основе SQL на платформе Node .................129 Mongoose – интерфейс между Node и MongoDB ..............................................130 Установка Mongoose ...................................................................................130 Реализация приложения Notes с помощью Mongoose .................................131 Отображение заметок на консоли – show.js .................................................135 Другие продукты, поддерживающие MongoDB ............................................137 Краткий обзор средств аутентификации пользователей...................................138 Резюме ............................................................................................................140 Предметный указатель ..............................................................................141
Об авторе Дэвид Хэррон вот уже больше 20 лет занимается созданием программного обеспечения, работая в Кремниевой долине в роли разработчика и инженера по контролю качества. Его последнее место работы – архитектор по организации контроля качества в компании Yahoo!, где ведутся работы по созданию новой платформы для веб-приложений на основе Node. В компании Sun Microsystems Дэвид занимал должность архитектора по организации контроля качества Java SE и работал главным образом над средствами автоматизации тестирования, в том числе написанным на базе AWT классом Robot, который ныне широко применяется в программах автоматизации тестирования графического интерфейса пользователя (ГИП). Он принимал участие в запуске проектов OpenJDK и JDK-Distros, а также отвечал за организацию конкурса Mustang Regressions Contest, идея которого состояла в том, чтобы обратиться к сообществу разработчиков на Java с просьбой поискать ошибки в версии 1.6. До перехода в Sun Дэвид работал в компании VXtreme, где занимался разработкой программных средств потокового видео. После покупки этой компании корпорацией Microsoft созданный ей продукт лег в основу Windows Media Player. В компании The Wollongong Group Дэвид работал над клиентским и серверным ПО электронной почты и принимал участие в деятельности нескольких рабочих групп IETF, направленной на совершенствование протоколов электронной почты. Дэвида интересуют транспортные средства с электрическими двигателями, мировые запасы энергии, изменение климата и вопросы охраны окружающей среды. Он сооснователь компании Transition Silicon Valley. В качестве сетевого журналиста он ведет раздел Green Transportation Examiner на сайте examiner.com, пишет на темы экологии в блоге на сайте 7gen.com, организовал дискуссионный форум по электромобилям на сайте visforvoltage.org, а также обсуждает различные программы, в том числе Node.js, Drupal и Doctor Who на сайте davidherron.com.
Благодарности Я благодарен многим людям. Хочу сказать спасибо матери Эвелин за… ну, в общем, за все, отцу Джиму, сестре Пэтти и брату Кену. Даже не представляю, как жил бы без вас! Спасибо моей подруге Мэгги за то, что она всегда рядом, готовая поддержать меня, за ее веру в меня, за мудрость и чувство юмора и за то, что устраивает мне головомойки, когда это необходимо. Пусть так будет и дальше. Хочу поблагодарить доктора Кена Кубота из Университета штата Кентукки, который поверил в меня и принял на первую работу, связанную с компьютерами. Шесть лет я учился у него не только обслуживанию компьютерных систем, но и многому другому. Спасибо моим бывшим работодателям, математическому факультету Университета штата Кентукки, компаниям The Wollongong Group, MainSoft, VXtreme, Sun Microsystems и Yahoo!, а также всем, с кем мне довелось работать в разных компаниях. Я благодарен своей бывшей начальнице Тине Су, которая побуждала меня выступать на публичных мероприятиях и писать, хотя это совсем не свойственно инженеру-программисту с интровертным складом ума. Особенно я благодарен компании Yahoo!, которая предоставила мне возможность поработать над внутренним проектом на базе Node.js и понять, что существует потребность в этой книге. Я признателен издательству Packt Publishing за предоставленную возможность написать эту книгу. Благодаря сотрудникам издательства, которые помогали мне на протяжении всей работы, я понял, что писать книги – моя мечта. Я благодарю Райана Дала, Айзека Шлютера и других разработчиков ядра Node за их мудрость и провидческий дар, необходимый для создания такой наполняющей сердце радостью подвижной платформы для разработки ПО. Есть платформы, с которыми работать откровенно трудно, но эта не из их числа. И чтобы реализовать ее настолько хорошо, необходимы проницательность и дальновидность.
О рецензентах Благовест Дачев, пишет программы для веб с 2002 года. Он прошел все стадии: начал с HTML, CSS и JavaScript, а затем перебрался в мир серверов и баз данных. Благовест одним из первых принял платформу Node.js и внес вклад в развитие нескольких проектов с открытым исходным кодом. В настоящее время он работает инженером-программистом в компании Dow Jones & Company, где занимается разработкой системы виджетов, позволяющей третьим сторонам искать и публиковать новости на своих сайтах. Благовест учился в Массачусетском университете в Амхерсте, где участвовал в исследованиях по информационно-поисковым системам, завершил проекты в рамках двух программ Google Summer of Code подряд и был соавтором нескольких статей. Я хотел бы поблагодарить свою маму Татьяну за любовь, неустанную заботу и силу духа, которые вдохновляли меня на протяжении многих лет, а также отца Йордана за счастливые детские воспоминания. Мэтт Рэнни, одним из первых принял платформу Node.js и внес свой вклад в ее развитие. Он один из основателей компании Voxer, использующей Node на своих серверах.