Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Node.js. Разработка серверных веб-приложений на JavaScript

Покупка
Артикул: 430816.05.99
Доступ онлайн
199 ₽
В корзину
Книга посвящена разработке веб-приложений в Node.js — платформе, которая выводит язык JavaScript за пределы браузера и позволяет использовать его в серверных приложениях. В основе платформы лежит исключительно быстрый движок JavaScript, заимствованный из браузера Chrome, к которому добавлена быстрая и надежная библиотека асинхронного сетевого ввода/вывода. Основной упор в Node.js делается на создании высокопроизводительных, хорошо масштабируемых клиентских и серверных приложений. На практических примерах вы научитесь пользоваться серверным и клиентским объектами HTTP, каркасами Connect и Express, освоите алгоритмы асинхронного выполнения и узнаете, как работать с базами данных на основе SQL и с MongoDB. Начав с практических рекомендаций по установке и настройке Node.js в режиме разработки и эксплуатации, вы научитесь разрабатывать клиентские и серверные HTTP-приложения; познакомитесь с применяемой в Node.js системой организации модулей на основе спецификации CommonJS, позволяющей реализовать подмножество технологии объектно-ориентированного проектирования. Издание предназначено для программистов, знакомых с основами JavaScript и веб-разработки.
Хэррон, Д. Node.js. Разработка серверных веб-приложений на JavaScript : практическое руководство / Д. Хэррон ; пер. с англ. А. А. Слинкина. - 2-е изд. - Москва : ДМК Пресс, 2023. - 145 с. - ISBN 978-5-89818-632-6. - Текст : электронный. - URL: https://znanium.com/catalog/product/2108525 (дата обращения: 22.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Дэвид Хэррон

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 на 
своих серверах.

Доступ онлайн
199 ₽
В корзину