دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
ویرایش: نویسندگان: Natan Raylih Aleks Yang, Bredli Mek, Mayk Kantelon, Tim Oksli, Mark Harter, T. Dzh. Golovaychuk سری: ISBN (شابک) : 5496032121, 9785496032124 ناشر: Piter سال نشر: 2018 تعداد صفحات: 432 زبان: Russian فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود) حجم فایل: 14 Mb
در صورت تبدیل فایل کتاب Node.js v deystvii به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب Nodier.ys در عمل نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
نسخه دوم Node.js در اکشن کاملاً بازطراحی شده است تا واقعیتهایی را که اکنون هر توسعهدهنده Node با آن مواجه است منعکس کند. شما با سیستم های فرانت اند و چارچوب های وب محبوب Node آشنا خواهید شد و یاد خواهید گرفت که چگونه برنامه های وب مبتنی بر Express را از ابتدا بسازید. اکنون می توانید نه تنها در مورد Node و جاوا اسکریپت بیاموزید، بلکه می توانید تمام اطلاعات از جمله سیستم های ساختمان جلویی، انتخاب یک چارچوب وب، کار با پایگاه های داده در Node، آزمایش و استقرار برنامه های کاربردی وب را نیز دریافت کنید. فناوری Node به طور فزاینده ای در ارتباط با ابزارهای خط فرمان مبتنی بر الکترون و برنامه های کاربردی دسکتاپ مورد استفاده قرار می گیرد، بنابراین فصل هایی در هر دو زمینه در این کتاب گنجانده شده است.
Второе издание «Node.js в действии» было полностью переработано, чтобы отражать реалии, с которыми теперь сталкивается каждый Node-разработчик. Вы узнаете о системах построения интерфейса и популярных веб-фреймворках Node, а также научитесь строить веб-приложения на базе Express с нуля. Теперь вы сможете узнать не только о Node и JavaScript, но и получить всю информацию, включая системы построения фронтэнда, выбор веб-фреймворка, работу с базами данных в Node, тестирование и развертывание веб-приложений. Технология Node все чаще используется в сочетании с инструментами командной строки и настольными приложениями на базе Electron, поэтому в книгу были включены главы, посвященные обеим областям.
вдеис Node.js in Action ■1 Алекс Янг, Брэдли Мек, Майк Кантелон 2-е издание Краткое содержание Оглавление Предисловие Благодарности О книге Структура Правила оформления и загрузка примеров кода Об авторах Алекс Янг Брэдли Мек Иллюстрация на обложке От издательства Знакомство с Node Знакомство с Node.js 1.1. Типичное веб-приложение Node 1.1.1. Неблокирующий ввод/вывод 1.1.2. Цикл событий 1.2.1. Node и V8 1.2.2. Работа с функциональными группами 1.2.3. График выпуска версий Node 1.3. Установка Node Дополнительная информация об установке Node приведена в приложении А. 1.4. Встроенные средства Node 1.4.2. Базовые модули Файловая система Листинг 1.1. Использование базовых модулей и потоков Сетевые операции Листинг 1.2. Программа «Hello World» с использованием модуля http для Node 1.5. Три основных типа программ Node 1.5.1. Веб-приложения 1.5.2. Средства командной строки и демоны 1.5.3. Настольные приложения 1.5.4. Приложения, хорошо подходящие для Node 1.6. Заключение Основы программирования Node 2.1. Структурирование и повторное использование функциональности Node / / Рис. 2.2. Заполнение свойства module.exports или объекта exports позволяет модулю выбрать, какая информация должна быть доступна приложению 2.2. Создание нового проекта Node 2.2.1. Создание модулей Рис. 2.3. Модули Node могут создаваться либо в виде файлов (пример 1), либо в виде каталогов (пример 2) 2.3. Настройка создания модуля с использованием module.exports Листинг 2.3. Модуль работать не будет 2.4. Повторное использование модулей с папкой node_modules 2.5. Потенциальные проблемы 2.6. Средства асинхронного программирования 2.6. Средства асинхронного программирования 2.7. Обработка одноразовых событий в обратных вызовах Листинг 2.7. Сокращение вложенности за счет определения промежуточных функций 2.8. Обработка повторяющихся событий с генераторами событий 2.8.1. Пример генератора событий 2.8.2. Реакция на событие, которое должно происходить только один раз 2.8.3. Создание генераторов событий: публикация/подписка 2.8.4. Доработка генератора событий: отслеживание содержимого файлов Листинг 2.13. Расширение функциональности генератора событий 2.9. Проблемы с асинхронной разработкой Листинг 2.14. Ошибки, вызванные изменением области видимости Листинг 2.15. Использование анонимной функции для сохранения значения глобальной переменной За дополнительной информацией о замыканиях обращайтесь к документации JavaScript от Mozilla: https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Closures. 2.10. Упорядочение асинхронной логики 2.11. Когда применяется последовательный поток выполнения Листинг 2.16. Организация последовательного выполнения с использованием дополнений, разработанных в сообществе 2.12. Реализация последовательного потока выполнения 2.13. Реализация параллельного потока выполнения 2.14. Средства, разработанные в сообществе 2.15. Заключение Что представляет собой веб-приложение Node? 3.1. Структура веб-приложения Node 3.1.1. Создание нового веб-приложения Добавление зависимости Простой сервер Сценарии npm 3.1.2. Сравнение с другими платформами 3.1.3. Что дальше? 3.2. Построение REST-совместимой веб-службы Листинг 3.1. Пример REST-совместимых маршрутов 3.3. Добавление базы данных 3.3.1. Проектирование собственного API модели Листинг 3.4. Добавление модуля Article к маршрутам HTTP 3.3.2. Преобразование статей в удобочитаемую форму и их сохранение для чтения в будущем 3.4. Добавление пользовательского интерфейса 3.4.1. Поддержка разных форматов 3.4.2. Визуализация шаблонов 3.4.3. Использование npm для зависимостей на стороне клиента Статические файлы Npm и разработка на стороне клиента: новые возможности 3.5. Заключение Веб-разработка с использованием Node Системы построения фронтэнда 4.1. Фронтэнд-разработка с использованием Node 4.2. Использование npm для запуска сценариев 4.2.1. Создание специализированных сценариев npm 4.2.2. Настройка средств построения фронтэнда 4.3. Автоматизация с использованием Gulp 4.3.1. Добавление Gulp в проект 4.3.2. Создание и выполнение задач Gulp 4.3.3. Отслеживание изменений 4.3.4. Использование отдельных файлов в больших проектах Рис. 4.2. Пример вывода gulp-help 4.4. Построение веб-приложений с использованием webpack 4.4.1. Пакеты и плагины 4.4.2. Настройка и запуск webpack Листинг 4.2. Файл webpack.config.js 4.4.3. Использование сервера для разработки webpack 4.4.4. Загрузка модулей и активов CommonJS Использование пакетов NPM с webpack 4.5. Заключение Фреймворки на стороне сервера 5.1. Персонажи 5.1.1. Фил: штатный разработчик 5.1.2. Надин: разработчик открытого кода 5.1.3. Элис: разработчик продукта 5.2. Что такое фреймворк? 5.3. Koa 5.3.1. Настройка 5.3.2. Определение маршрутов 5.3.3. REST API 5.3.4. Сильные стороны 5.3.5. Слабые стороны 5.4. Kraken 5.4.1. Настройка 5.4.2. Определение маршрутов 5.4.3. REST API 5.4.4. Сильные стороны 5.4.5. Слабые стороны 5.5. hapi 5.5.1. Настройка 5.5.2. Определение маршрутов Листинг 5.4. Добавление плагина в hapi 5.5.4. REST API 5.5.5. Сильные стороны 5.5.6. Слабые стороны 5.6. Sails.js 5.6.1. Настройка 5.6.2. Определение маршрутов 5.6.3. REST API 5.6.4. Сильные стороны 5.6.5. Слабые стороны 5.7. DerbyJS 5.7.1. Настройка 5.7.2. Определение маршрутов 5.7.3. REST API 5.7.4. Сильные стороны 5.7.5. Слабые стороны 5.8. Flatiron.js 5.8.1. Настройка 5.8.2. Определение маршрутов 5.8.3. REST API 5.8.4. Сильные стороны 5.8.5. Слабые стороны 5.9. LoopBack 5.9.1. Настройка 5.9.2. Определение маршрутов 5.9.3. REST API 5.9.4. Сильные стороны 5.9.5. Слабые стороны 5.10. Сравнение 5.10.1. Серверы HTTP и маршруты 5.11. Написание модульного кода 5.12. Выбор персонажей 5.13. Заключение Connect и Express 6.1. Connect 6.1.1. Настройка приложения Connect 6.1.2. Как работают промежуточные компоненты Connect 6.1.4. Упорядочение компонентов Листинг 6.2. Ошибка: компонент hello предшествует компоненту logger 6.1.5. Создание настраиваемых промежуточных компонентов 6.1.6. Использование промежуточных компонентов для обработки ошибок Обработчик ошибок Connect по умолчанию Самостоятельная обработка ошибок приложения Использование Node_Env для определения режима работы 6.2. Express 6.2.1. Генерирование заготовки приложения Листинг 6.5. Минимальное приложение Express Установка Express Генерирование приложения Анализ приложения Листинг 6.6. Сгенерированная заготовка приложения Express Рис. 6.7. Приложение Express по умолчанию Планирование приложения Shoutbox 6.2.2. Настройка конфигурации Express и приложения 6.2.3. Визуализация представлений Настройка системы представлений Изменение каталога поиска Ядро шаблонов по умолчанию Кэширование представлений Поиск представлений Методы передачи данных представлениям 6.2.4. Знакомство с маршрутизацией в Express Проверка данных, введенных пользователем Создание модели записи Листинг 6.7. Модель для записей Создание формы для ввода записей Реализация создания записи Добавление списка записей Листинг 6.11. Вывод списка записей Листинг 6.12. Представление entries.ejs Добавление маршрутов для работы с записями Использование специализированных промежуточных компонентов Проверка данных формы с использованием специализированных промежуточных компонентов Листинг 6.13. Две несовершенные попытки создания промежуточных компонентов проверки данных Построение гибких промежуточных компонентов проверки данных Листинг 6.14. Реализация промежуточных компонентов проверки данных 6.2.5. Аутентификация пользователей Сохранение и загрузка записей пользователей Создание модели пользователя Сохранение данных пользователя в Redis Защита паролей Тестирование логики сохранения пользователя Чтение данных пользователя Аутентификация входа пользователя 6.2.6. Регистрация новых пользователей Листинг 6.22. Добавление маршрутов регистрации Создание формы регистрации Организация обратной связи с пользователем Рис. 6.13. Вывод сообщений об ошибках на форме Сохранение временных сообщений в сеансах Регистрация пользователя 6.2.7. Вход для зарегистрированных пользователей Листинг 6.25. Шаблон представления для формы входа Аутентификация попыток входа Создание меню для аутентифицированных и анонимных пользователей Рис. 6.15. Меню входа и регистрации обеспечивает доступ к созданным нами формам 6.2.8. Промежуточный компонент для загрузки пользовательских данных Листинг 6.30. Разметка CSS, добавляемая в файл style.css для оформления меню 6.2.9. Создание открытого REST API Проектирование API Добавление базовой аутентификации Тестирование выборки данных пользователя Удаление конфиденциальной информации пользователя Добавление записей Добавление поддержки списка записей Реализация промежуточного компонента страничного вывода Тестирование маршрута entries 6.2.10. Согласование контента Реализация согласования контента Листинг 6.33. Реализация согласования контента Ответ в формате XML Листинг 6.34. Использование шаблона EJS для генерирования разметки XML 6.3. Заключение Шаблонизация веб-приложений 7.1. Поддержка чистоты кода путем шаблонизации 7.1.1. Шаблонизация в действии Рис. 7.2. Пример вывода приложения блога в браузере Листинг 7.1. Текстовый файл с записями в блоге 7.1.2. Визуализация HTML без шаблона Листинг 7.3 Шаблонизатор отделяет подробности визуализации от программной логики Визуализация HTML с помощью шаблона 7.2. Шаблонизация с EJS 7.2.1. Создание шаблона Экранирование символов 7.2.2. Интеграция шаблонов EJS в приложение Кэширование шаблонов EJS 7.2.3. Использование EJS в клиентских приложениях 7.3. Использование языка Mustache с шаблонизатором Hogan 7.3.1. Создание шаблона 7.3.2. Теги Mustache Вывод простых значений Секции — перебор нескольких значений Инвертированные секции — HTML по умолчанию при отсутствии значений Лямбда-секция — включение в секции нестандартной функциональности Компоненты — использование шаблонов в других шаблонах Листинг 7.9. Использование компонентов в Hogan 7.3.3. Тонкая настройка Hogan 7.4. Шаблоны Pug 7.4.1. Основные сведения о Pug Сокращенная запись тега div Запись атрибутов тегов Запись контента тегов Упорядочение кода путем блочного расширения Включение данных в шаблоны Pug 7.4.2. Программная логика в шаблонах Pug Использование JavaScript-кода в шаблонах Pug Перебор объектов и массивов Условная визуализация в шаблоне Инструкция case 7.4.3. Организация шаблонов Pug Структурирование нескольких шаблонов путем наследования Реализация макетов путем вставки блоков в начало и в конец шаблона Включение шаблонов Примеси и многократное использование программной логики шаблона 7.5. Заключение Хранение данных в приложениях 8.1. Реляционные базы данных 8.2. PostgreSQL 8.2.1. Установка и настройка 8.2.2. Создание базы данных 8.2.3. Подключение к Postgres из Node 8.2.4. Определение таблиц 8.2.5. Вставка данных 8.2.6. Обновление данных 8.2.7. Запросы на выборку данных 8.3.1. jQuery для баз данных 8.3.2. Подключение и выполнение запросов в Knex Листинг 8.6. Использование Knex для подключения и выдачи запросов к sqlite3 Листинг 8.7. Взаимодействие с API на базе Knex 8.3.3. Переход на другую базу данных 8.3.4. Остерегайтесь ненадежных абстракций 8.5. Гарантии ACID 8.5.1. Атомарность 8.5.2. Согласованность 8.5.3. Изоляция 8.5.4. Устойчивость 8.7. Распределенные базы данных 8.8. MongoDB Рис. 8.2. Статистика использования MongoDB 8.8.1. Установка и настройка 8.8.2. Подключение к MongoDB 8.8.3. Вставка документов 8.8.4. Получение информации 8.8.5. Идентификаторы MongoDB 8.8.6. Реплицированные наборы Листинг 8.11. Запуск реплицированного набора 8.8.7. Уровень записи 8.9. Хранилища «ключ-значение» 8.10.1. Установка и настройка 8.10.2. Выполнение инициализации 8.10.3. Работа с парами «ключ-значение» 8.10.4. Работа с ключами 8.10.5. Кодирование и типы данных Массивы с одним и несколькими значениями Буферы с двоичными данными 8.10.6. Работа с хешами 8.10.7. Работа со списками 8.10.8. Работа со множествами 8.10.9. Реализация паттерна «публикация/подписка» на базе каналов 8.10.10. Повышение быстродействия Redis 8.11. Встроенные базы данных 8.12. LevelDB 8.12.1. LevelUP и LevelDOWN 8.12.2. Установка 8.12.3. Обзор API 8.12.4. Инициализация 8.12.5. Кодирование ключей и значений 8.12.6. Чтение и запись пар «ключ-значение» Листинг 8.18. Чтение и запись значений Листинг 8.19. Получение значений с несуществующими ключами Листинг 8.20. Переопределение параметров кодирования для конкретных операций 8.12.7. Заменяемые подсистемы базы данных Листинг 8.21. Использование memdown с LevelUP 8.12.8. Модульная база данных level-http2 aaaristo leveldown-mobile obastemur Рис. 8.6. Примеры сторонних пакетов LevelDB в npm 8.13. Затратные операции сериализации и десериализации Листинг 8.22. Хронометражное тестирование сериализации 8.14. Хранение данных в браузере 8.14.1. Веб-хранилище: localStorage и sessionStorage Сводка API 8.14.2. Чтение и запись значений Листинг 8.23. Хранение JSON в веб-хранилище Листинг 8.24. Перебор всего набора данных в localStorage Листинг 8.25. Ключи, реализующие пространства имен Листинг 8.26. Получение всех элементов в пространстве имен Листинг 8.27. Использование localStorage для мемоизации 8.14.3. localForage Обзор API 8.14.4. Чтение и запись 8.15. Виртуальное хранение S3 не ограничивается хранением графики 8.16. Какую базу данных выбрать? 8.17. Заключение Тестирование приложений Node 9.1. Модульное тестирование 9.1.1. Модуль assert Простой пример Тестирование значения переменной с помощью утверждения equal Выявление возможных проблем с помощью утверждения notEaqual Листинг 9.4. Тестирование добавления элементов в список запланированных дел Использование дополнительной функциональности: strictEqual, notStrictEqual, deepEqual, notDeepEqual Проверка асинхронных значений на истинность с помощью утверждения ok Листинг 9.5. Тестирование передачи значения true при обратном вызове doAsync Тестирование корректности механизма генерирования ошибок Листинг 9.6. Тестирование генерирования ошибки при отсутствии параметра Добавление логики запуска тестов Листинг 9.7. Выполнение тестов и оповещение о завершении тестов 9.1.2. Mocha Тестирование Node-приложений с помощью Mocha Листинг 9.8. Базовая структура тестов Mocha Листинг 9.9. Описание функциональности memdb .save Рис. 9.2. Проваленный тест Mocha Листинг 9.10. Добавление функциональности сохранения Определение логики инициализации и завершения с использованием перехватчиков Mocha Тестирование асинхронной логики 9.1.3. Vows Тестирование логики приложения с помощью Vows 9.1.4. Chai Листинг 9.14. Интерфейс assert в Chai 9.1.5. Библиотека should.js 9.1.6. Шпионы и заглушки в Sinon.JS Листинг 9.17. Класс Database Шпионы Заглушки 9.2. Функциональное тестирование Рис. 9.6. Тестирование средствами автоматизации браузера 9.2.1. Selenium Листинг 9.20. Пример проекта Express Листинг 9.21. Тест WebdriverIO 9.3. Ошибки при прохождении тестов 9.3.1. Получение более подробных журналов Переменная NODE_DEBUG Переменная DEBUG 9.3.2. Получение расширенной трассировки стека 9.4. Заключение Развертывание и обеспечение доступности приложений Node 10.1. Хостинг Node-приложений 10.1.1. Платформа как сервис * $: дешево, $$$$$: дорого Пример: Node в Heroku за 10 минут 10.1.2. Серверы 10.1.3. Контейнеры Пример: запуск приложений Node с Docker 10.2. Основы развертывания 10.2.1. Развертывание из репозитория Git 10.2.2. Поддержание работы Node-приложения t і 10.3. Максимизация времени доступности и производительности приложений 10.3.1. Поддержание доступности приложения с Upstart Upstart и Respawn 10.3.2. Кластерный API 10.3.3. Хостинг статических файлов и представительство Листинг 10.4. Конфигурационный файл для использования сервера Nginx в качестве посредника для Node.js и предоставления статических файлов 10.4. Заключение За пределами веб-разработки Написание приложений командной строки 11.1. Соглашения и философия 11.2. Знакомство с parse-json 11.3. Аргументы командной строки 11.3.1. Разбор аргументов командной строки 11.3.2. Проверка аргументов Листинг 11.1. Использование yargs для разбора аргументов командной строки 11.3.3. Передача stdin в виде файла 11.4. Использование программ командной строки с npm 11.5. Связывание сценариев с каналами 11.5.1. Передача данных parse-json 11.5.2. Ошибки и коды завершения Потоки ошибок 11.5.3. Использование каналов в Node 11.5.4. Каналы и последовательность выполнения команд Перенаправление ввода 11.6. Интерпретация реальных сценариев 11.7. Заключение Разработка настольных приложений с использованием Electron 12.1. Знакомство с Electron 12.1.1. Технологический стек Electron 12.1.2. Проектирование интерфейса 12.2. Создание приложения Electron Листинг 12.1. Простой модуль Node 12.3. Построение полнофункционального настольного приложения 12.3.1. Исходная настройка React и Babel 12.3.2. Установка зависимостей 12.3.3. Настройка webpack 12.4. Приложение React 12.4.1. Определение компонента Request 12.4.2. Определение компонента Response 12.4.3. Взаимодействие между компонентами React 12.5. Построение и распространение 12.5.1. Построение приложений с использованием Electron Packager 12.5.2. Упаковка Рис. 12.6. Содержимое типичного пакета приложения Electron 12.6. Заключение Приложения Установка Node А.1. Установка Node с использованием программы установки А.1.1. Программа установки для macOS А.1.2. Программа установки для Windows A.2. Другие способы установки Node A.2.1. Установка Node из исходного кода A.2.2. Установка Node из менеджера пакетов Автоматизированное извлечение веб-данных Б.1. Извлечение веб-данных Рис. Б.1. Последовательность действий по извлечению и сохранению контента Б.1.1. Применение извлечения веб-данных Рис. Б.2. Octopart предоставляет средства поиска электронных компонентов Б.1.2. Необходимые инструменты Б.2. Простейшее извлечение веб-данных с использованием cheerio Б.3. Обработка динамического контента с jsdom Листинг Б.4. Разбор динамической разметки HTML с использование jsdom Б.4. Обработка «сырых» данных Листинг Б.5. Разбор данных и генерирование CSV Б.5. Заключение Официально поддерживаемые промежуточные компоненты В.1. Разбор cookie, тел запросов и строк информационных запросов В.1.1. cookie-parser: разбор HTTP-cookie Обычные cookie Подписанные cookie Листинг В.2. Разбор подписанных cookie Cookie в формате JSON Настройка исходящих cookie В.1.2. Разбор строк запросов Простой пример использования Листинг В.3. Разбор строк запросов В.1.3. body-parser: разбор тел запросов Формы Листинг В.4. Разбор запросов форм Проверка запросов Листинг В.5. Проверка запросов форм Для чего нужно ограничение? Разбор данных JSON Разбор многосекционных данных