![image](https://habrastorage.org/files/c68/b2f/116/c68b2f11656a455084ce7f178477e701.jpg)
Эта книга посвящена Node и тем модулям, которые образуют базовую функциональность Node. Вы начнете знакомство с основ создания веб-сервера и базовых функциональностей, а затем перейдете к системе модулей, REPL, разработке приложений, проблемам безопасности, дочерним процессам, познакомитесь с новыми функциональностями, появившимися в ES6, комплексной разработкой (Express, MongoDB, Redis, AngularJS и Backbone.js), приемами разработки приложений и, наконец, с использованием Node в других областях, таких как микроконтроллеры и «интернет вещей».
Для кого написана эта книга
На мой (автора) взгляд, читатели этой книги относятся к двум категориям.
В первую входят разработчики, которые создавали клиентские приложения с разными библиотеками и фреймворками и теперь хотят перенести свои навыки владения JavaScript на сторону сервера.
Ко второй категории относятся разработчики серверных приложений, которые хотят попробовать что-то новое или перейти на более современную технологию. Они работали на Java или C++, Ruby или PHP, а теперь они желают освоить язык JavaScript и объединить его со своим знанием серверной среды.
У этих двух вроде бы разных аудиторий есть одно общее знание: JavaScript (или ECMAScript, если выражаться точнее). Читатель этой книги должен очень уверенно владеть языком JavaScript. Есть и другое сходство: обеим категориям придется изучать одни и те же азы Node, включая базовый Node API.
Однако каждая категория смотрит на изучение Node со своей точки зрения и руководствуется своими навыками. Чтобы книга приносила больше пользы, я постаралась представить материал с обеих точек зрения. Например, разработчика C++ или Java может заинтересовать создание дополнений для Node на языке C++, которое вряд ли вызовет интерес у разработчика клиентских приложений. В то же время такие концепции, как прямой или обратный порядок байтов, могут быть очень знакомыми для разработчиков серверных приложений, но не для специалистов по клиентскому программированию. Я не могу глубоко изложить любую из этих перспектив, но постараюсь, чтобы материал не показался слишком сложным или скучным любому читателю.
Я совершенно точно не собираюсь заставлять вас что-либо заучивать наизусть. В книге будут представлены API базовых модулей, но я не стану описывать все объекты и все функции, потому что они документированы на сайте Node. Вместо этого я постараюсь рассмотреть важнейшие аспекты всех базовых модулей и конкретную функциональность Node, которая, на мой взгляд, особенно важна для того, чтобы вы не уступали другим разработчикам Node. Конечно, основной фактор успеха — практика, а эта книга — средство обучения. Перевернув последнюю страницу книги, вы сможете самостоятельно перейти к углубленному изучению конкретных типов функциональности, например работе с семейством технологий MEAN (Mongo-Express-Angular-Node). Материал книги станет отправной точкой, от которой вы сможете пойти в любом из интересующих вас направлений Node.
Структура книги
В этой книге первоочередное внимание уделено основам. Она посвящена Node и тем модулям, которые образуют базовую функциональность Node. Конечно, я упомяну ряд сторонних модулей и подробно опишу npm, но главная цель этой книги заключается в том, чтобы дать читателю представление о базовой функциональности Node. А когда вы уверенно встанете на ноги, вы сможете пойти в нужном направлении.
Глава 1 знакомит читателя с Node; в нее также включено краткое описание процедуры установки. Вам предоставится возможность опробовать Node на практике: сначала мы создадим веб-сервер из документации Node, а затем более сложный сервер, код которого приведен в книге. Кроме того, будет затронута тема создания дополнений Node для читателей, программирующих на C/C++. И разве можно представить себе введение в Node без обзора истории развития среды, первой версии которой был присвоен номер 4.0 вместо 1.0?
В главе 2 рассматривается важнейшая функциональность Node: принципы обработки событий, глобальные объекты, необходимые для создания приложений Node, и асинхронный характер Node. Также будет представлен объект буфера — структуры данных, передаваемой многими сетевыми функциями Node.
Глава 3 подробно описывает систему модулей Node, а также содержит подробное описание npm — системы управления модулями Node от независимых разработчиков. В этой главе вы узнаете, как приложение ищет используемые модули Node и как создать собственный модуль Node. Далее для представления более сложных аспектов функциональности Node будет исследована поддержка изолированной среды (sandboxing). Просто для интереса я также представлю три популярных модуля Node от независимых разработчиков: Async, Commander и Underscore.
Интерактивная консоль, входящая в поставку Node и известная под названием REPL, — бесценный учебный инструмент и учебная среда. REPL посвящена отдельная глава 4. Я расскажу о том, как использовать этот инструмент, и о том, как создать вашу собственную, специализированную модификацию REPL.
Разработка приложений Node для Интернета рассматривается в главе 5. В частности, мы гораздо подробнее рассмотрим модули Node, предоставляющие средства для веб-разработки. Вы увидите, что необходимо для создания полнофункционального веб-сервера для статических файлов, и научитесь запускать приложения Node в сочетании с Apache при помощи прокси-сервера Apache.
Глава 7 посвящена сетевой поддержке, а о сетях невозможно говорить без обсуждения проблемы безопасности. Эти две темы всегда идут рука об руку — как арахисовое масло и джем, как шоколад и… что угодно. Я расскажу о поддержке TCP и UDP в Node, а также о том, как реализовать сервер HTTPS (в дополнение к серверу HTTP, создание которого рассматривалось в главе 5). Также будет описана механика, лежащая в основе цифровых сертификатов, принципы работы протокола SSL (Secure Sockets Layer) и его обновленной версии TLS (Transport Layer Security). Глава завершается описанием криптографического модуля Node и работы с хешами паролей.
Одной из наиболее приятных особенностей Node является возможность использования функциональности операционной системы при помощи дочерних процессов. Некоторые из моих любимых приложений Node — небольшие утилиты для работы со сжатыми файлами, популярное графическое приложение ImageMagick и программа для получения экранных снимков на сайтах. Конечно, они не производят впечатления на фоне модных приложений с хитроумными облачными интерфейсами, но прекрасно подходят для изучения работы с дочерними процессами. Дочерние процессы рассматриваются в главе 8.
В большинстве примеров книги используется язык JavaScript, с которым вы работаете уже не первый год. Впрочем, одной из главных причин деления Node.js/io.js и появления нового, объединенного продукта была поддержка новых версий ECMAScript, таких как ES6 (или ECMAScript 2015, если угодно). В главе 9 я расскажу о том, что в настоящее время поддерживается в Node, к каким последствиям ведет новая функциональность, а также когда и как использовать новую функциональность вместо старой. Также будут описаны некоторые тонкости, связанные с использованием новых возможностей JavaScript. Я отклонюсь от описания встроенной функциональности только один раз: когда буду описывать реализацию обещаний (promises) в очень популярном модуле Bluebird.
В главе 10 рассматриваются фреймворки и функциональность, образующие так называемую комплексную разработку Node. Я расскажу об Express — фреймворке, очень часто применяемом при разработке приложений Node. Также вы опробуете на практике MongoDB и Redis и познакомитесь с парой фреймворков, обеспечивающих «комплексность» в концепции комплексной разработки Node: AngularJS and Backbone.js.
После того как вы напишете код приложения Node, он отправится в эксплуатацию. В главе 11 рассматриваются инструменты и приемы разработки приложений Node и обеспечения их функционирования, включая модульное, нагрузочное и эталонное тестирование, основные методы и инструменты отладки. Кроме того, я расскажу о том, как организовать восстановление приложения после сбоя.
Глава 12 — своего рода «десерт». В ней рассматриваются некоторые возможности для переноса ваших новых навыков Node в другие области, включая мир микроконтроллеров/микрокомпьютеров как часть «Интернета вещей», и версия Node, которая не работает на базе V8.
» Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок
Для Хаброжителей скидка 25% по купону — Node
Поделиться с друзьями
Prometheus
А в этой книге тоже безграмотный переводчик?
Вот, что в 5-ом, что в 6-ом издании «JavaScript. Подробное руководство» — везде переведено «брОузер».
Сообщите, наконец, переводчикам и тем, кто проверяет — правильно писать «браузер».
ph_piter
Переводчики разные, но указанная Вами книга не нашего издательства.
Prometheus
Это хорошо, надеюсь в ваших книгах перевод правильный.
Aleksandr_S1
Пока не сталкивался с корявым переводом у «Питера».
TheAlien
Как насчет книги «Release It! Design and Deploy Production-Ready Software» (Michael T. Nygard),
название которой перевели как «Release it! Проектирование и дизайн ПО для тех, кому не все равно»?
Я конечно понимаю, что название адаптировали (зачем?), но вот поставить 2 слова рядом — «Проектирование и дизайн» — это либо тавтология, ведь под дизайном в ПО и подразумевается «проектирование», либо… о каком дизайне речь? Дизайне интерьера?))
По идее, должно быть «проектирование и развертывание(?)»…
Firefoxic
Будто «ваше издательство» — синоним качества. Особенно после эпического фэйла с книгой «Секреты CSS»