Search found 545 matches

Author Message

Скачать WYSIWYG

Post 29-Nov-2021 18:35

[Quote]

You Don't Know JS Yet: Scope & Closures / {Вы пока еще не знаете JS} Область видимости и замыкания. 2-е международное издание
Год издания: 2022
Автор: Kyle Simpson / Кайл Симпсон
Переводчик: Матвеев Е. А.
Издательство: Питер
ISBN: 978-5-4461-1875-5
Серия: Библиотека программиста
Язык: Русский
Формат: PDF
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Нет
Количество страниц: 240
Описание:
Вы пока еще не знаете JS. И Кайл Симпсон признается, что тоже его не знает (по крайней мере полностью)… И никто не знает. Но все мы можем начать работать над тем, чтобы узнать его лучше. Сколько бы времени вы ни провели за изучением языка, всегда можно найти что-то еще, что стоит изучить и понять на другом уровне.
Вы уже прочитали «Познакомьтесь, JavaScript»? Тогда откройте вторую книгу серии «Вы пока еще не знаете JS», чтобы познакомиться поближе с первым из трех столпов JavaScript — системой областей видимости и функциональными замыканиями, а также с мощным паттерном проектирования «Модуль».
Пора освоить правила лексических областей видимости для размещения переменных и функций в правильных позициях. И заглянуть на более низкий уровень, ведь магия с хранением состояния модулей базируется на замыканиях, использующих систему лексических областей видимости.

Примеры страниц

Еще книги этого же автора:
Кайл Симпсон - {Вы пока еще не знаете JS} Познакомьтесь, JavaScript. 2-е международное издание [2022, PDF, RUS]
Кайл Симпсон - Вы не знаете JS. Книги «Типы и грамматические конструкции», «Замыкания и объекты», «Асинхронная обработка и оптимизация» [2019, PDF, RUS]

Мои остальные раздачи -

Скачать WYSIWYG

Post 07-Nov-2021 19:45

[Quote]

PHP и MySQL. 25 уроков для начинающих
Год издания: 2021
Автор: Владимир Дронов
Издательство: БХВ-Петербурr
ISBN: 978-5-9775-665 l-3
Серия: Для начинающих
Язык: Русский
Формат: PDF
Качество: Отсканированные страницы + слой распознанного текста
Интерактивное оглавление: Да
Количество страниц: 432
Описание:
В книге 25 иллюстрированных уроков и более 30 практических упражнений. В доступной и наглядной форме, на сквозном примере рассказано о программировании динамических веб-сайтов на языке PHP с применением СУБД MySQL и MariaDB. Описывается программное генерирование веб-страниц, получение данных от пользователей и проверка их на корректность, работа с файлами, программное рисование графики, обработка cookie и сессий, отправка электронной почты. Рассмотрена архитектура «модель-шаблон-контроллер» и структурирование кода для дальнейшего сопровождения сайта. Рассказано о мерах защиты сайта: разграничение доступа, перевод на безопасный протокол HTTPS, защита от атак, шифрование данных. Дан краткий курс программирования веб-служб REST.
Сквозной пример разработки веб-сайта фотогалереи и PHP-фреймворка поможет при построении собственных сайтов. Электронное приложение-архив на сайте издательства содержит коды всех примеров.
Код доступен по адресу [url=ftp://ftp.bhv.ru/9785977566513.zip]ftp://ftp.bhv.ru/9785977566513.zip[/url]

Примеры страниц

Мои остальные раздачи -

Скачать WYSIWYG

Post 07-Nov-2021 17:25

[Quote]

You Don't Know JS Yet: Get Started. Get to know JS / {Вы пока еще не знаете JS} Познакомьтесь, JavaScript. 2-е международное издание
Год издания: 2022
Автор: Kyle Simpson / Кайл Симпсон
Переводчик: Матвеев Е. А.
Издательство: Питер
ISBN: 978-5-4461-1875-5
Серия: Библиотека программиста
Язык: Русский
Формат: PDF
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Да
Количество страниц: 192
Описание:
Вы пока еще не знаете JS. И Кайл Симпсон признается, что тоже его не знает (по крайней мере полностью)… И никто не знает. Но все мы можем начать работать над тем, чтобы узнать его лучше. Сколько бы времени вы ни провели за изучением языка, всегда можно найти что-то еще, что стоит изучить и понять на другом уровне.Учтите, что, хотя книга и называется «Познакомьтесь, JavaScript», она не для новичков. У нее другая задача: дать обзор тем, в которых необходимо разобраться на начальном этапе изучения JS. Даже если вы уже написали достаточно кода JS, эту книгу не стоит пропускать, возможно, в ваших знаниях есть пробелы, которые необходимо заполнить перед углубленным изучением сложных тем. Пора начать изучение JS!

Примеры страниц

Еще книги этого же автора - Кайл Симпсон - Вы не знаете JS. Книги «Типы и грамматические конструкции», «Замыкания и объекты», «Асинхронная обработка и оптимизация» [2019, PDF, RUS]
Мои остальные раздачи -

Скачать WYSIWYG

Post 22-Oct-2021 18:35

[Quote]

Python, Django и PyCharm для начинающих
Год издания: 2021
Автор: Постолит Анатолий
Издательство: БХВ-Петербург
ISBN: 978-5-9775-6779-4
Серия: Для начинающих
Язык: Русский
Формат: PDF
Качество: Отсканированные страницы + слой распознанного текста
Интерактивное оглавление: Да
Количество страниц: 464
Описание: Книга посвящена вопросам разработки веб-приложений с использованием языка Python, фреймворка Django и интерактивной среды разработки PyCharm. Рассмотрены основные технологии и рабочие инструменты создания приложений, даны основы языка Python. Описаны фреймворк Django и структура создаваемых в нем веб-приложений. На простых примерах показаны обработка и маршрутизация запросов пользователей, формирование ответных веб-страниц. Рассмотрено создание шаблонов веб-страниц и форм для пользователей. Показано взаимодействие пользователей с различными типами баз данных через модели. Описана работа с базами данных через встроенные в Django классы без использования SQL-запросов. Приведен пошаговый пример создания сайта от формирования шаблона до его администрирования и развертывания в сети Интернет. Электронный архив на сайте издательства содержит коды всех примеров.
Для программистов.

Примеры страниц

Оглавление

Глава 1. Веб-технологии и инструментальные средства для разработки веб-приложений
Глава 2. Основы языка программирования Python
Глава 3. Знакомимся с веб-фреймворком Django
Глава 4. Представления и маршрутизация
Глава 5. Шаблоны
Глава 6. Формы
Глава 7. Модели данных Django
Глава 8. Пример создания веб-сайта на Django
Глава 9. Пример создания веб-интерфейса для пользователей сайта "Мир Книг"
Глава 10. Расширение возможностей для администрирования сайта "Мир Книг" и создание пользовательских форм
Глава 11. Публикация сайта в сети Интернет

Скачать WYSIWYG

Post 21-Oct-2021 18:40

[Quote]

Веб-разработка с применением Node и Express
Год издания: 2021
Автор: Браун И.
Издательство: Питер
ISBN: 978-5-4461-0590-8
Серия: Бестселлеры O’Reilly
Язык: Русский
Формат: PDF
Качество: Отсканированные страницы + слой распознанного текста
Интерактивное оглавление: Да
Количество страниц: 336
Описание: Создавайте динамические веб-приложения с применением Express — ключевого компонента из стека разработки Node/jаvascript. Итан Браун описывает работу с Express 5 на примере создания полноценного приложения. В книге рассматриваются все этапы и компоненты — от серверного рендеринга до разработки API для работы с одностраничными приложениями (SPA).
Express является золотой серединой между устоявшимся фреймворком и отсутствием фреймворка вообще, поэтому он оставляет вам определенную свободу при архитектурном выборе. Эта книга предоставит лучшие решения для фронтенд- и бэкенд-разработчиков, использующих Express. Научитесь смотреть на веб-разработку под новым углом!

Примеры страниц

Оглавление

Введение 16
Благодарности 21
Об авторе 23
Глава 1. Знакомство с Express 24
Глава 2. Первые шаги с Node 33
Глава 3. Экономия времени благодаря Express 44
Глава 4. Наводим порядок 55
Глава 5. Обеспечение качества 65
Глава 6. Объекты запроса и ответа 84
Глава 7. Шаблонизация с помощью Handlebars 98
Глава 8. Обработка форм 115
Глава 9. Cookie-файлы и сеансы 128
Глава 10. Промежуточное ПО 139
Глава 11. Отправка электронной почты 148
Глава 12. Промышленная эксплуатация 160
Глава 13. Персистентность данных 174
Глава 14. Маршрутизация 202
Глава 15. REST API и JSON 214
Глава 16. Одностраничные приложения 223
Глава 17. Статический контент 244
Глава 18. Безопасность 252
Глава 19. Интеграция со сторонними API 280
Глава 20. Отладка 296
Глава 21. Ввод в эксплуатацию 307
Глава 22. Поддержка 319
Глава 23. Дополнительные ресурсы 329
Об иллюстрации на обложке 335

Скачать WYSIWYG

Post 17-Oct-2021 23:20

[Quote]

Professional JavaScript for Web Developers, 4th Edition / JavaScript для профессиональных веб-разработчиков, 4-е межд. издание
Год издания: 2022
Автор: Frisbie Matt / Фрисби Мэтт
Переводчик: А. Павлов
Издательство: Питер
ISBN: 978-5-4461-1740-6
Серия: Для профессионалов
Язык: Русский
Формат: PDF
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Да
Количество страниц: 1219
Описание: Самое полное руководство по современному JavaScript. Как максимально прокачать свои навыки и стать топовым JS-программистом? Четвертое издание «JаvaScript для профессиональных веб-разработчиков» идеально подойдет тем, кто уже имеет базовые знания и опыт разработки на jаvascript. Автор сразу переходит к техническим деталям, которые сделают ваш код чистым и переведут вас с уровня рядового кодера на высоту продвинутого разработчика. Рост мобильного трафика увеличивает потребность в адаптивном динамическом веб-дизайне, а изменения в JS-движках происходят постоянно, так что каждый веб-разработчик должен постоянно обновлять свои навыки работы с JаvaScript.
Исходный код: https://media.wiley.com/product_ancillary/45/11193664/DOWNLOAD/Full%20Code%20Download.zip

Примеры страниц

Оглавление

1. Что такое JavaScript? Эта глава содержит общие сведения о JavaScript: вы
узнаете, как появился этот язык, как он развивался и что представляет собой
сегодня. Мы обсудим, как JavaScript соотносится с ECMAScript, объектной
моделью документа (DOM) и объектной моделью браузера (BOM). Кроме
того, вы ознакомитесь с соответствующими стандартами от Европейской ас-
социации производителей вычислительной техники (ECMA) и консорциума
World Wide Web (W3C).
2. JavaScript в HTML. Описано применение JavaScript в сочетании с HTML для
создания динамических веб-страниц. Также рассмотрены различные способы
внедрения JS-кода в страницу, типы JavaScript-контента и их использование
с элементом .
3. Основы языка. Рассмотрены базовые концепции языка, в том числе его син-
таксис и управляющие инструкции. Указаны сходства и различия JavaScript
и других C-подобных языков, а также описано приведение типов в связи со
встроенными операторами. Охватывает все языковые примитивы, включая
тип Symbol.
4. Переменные, область видимости и память. Здесь рассказано о переменных,
которые в JavaScript являются слабо типизированными. Глава содержит
сведения о различиях между примитивными и ссылочными значениями
и контексте выполнения в связи с переменными. Вы также узнаете о том,
как работает сборщик мусора и как память возвращается среде, когда пере-
менные покидают область видимости.
5. Ссылочные типы. Эта глава посвящена встроенным в JavaScript ссылочным
типам, таким как Date, Regexp, примитивы и оболочки примитивов. Для каж-
дого ссылочного типа, определенного в ECMA-262, приведены как теорети-
ческие сведения, так и подробности его реализации в браузерах.
6. Ссылочные типы коллекций. Продолжает рассмотрение встроенных ссылоч-
ных типов с Object, Array, Map, WeakMap, Set и WeakSet.
7. Итераторы и генераторы. Представляет две новые фундаментальные
концепции из недавней версии ECMAScript: итераторы и генераторы.
Каждая из них обсуждается как относительно ее фундаментального по-
ведения, так и относительно ее использования в существующих языковых
конструкциях.
8. Объекты, классы и объектно-ориентированное программирование. В этой
главе рассмотрены приемы использования классов и объектно-ориентиро-
ванного программирования на JavaScript. Она начинается с углубленного
изучения типа Object JavaScript и продолжается рассмотрением прототипного
наследования. Далее следует полное объяснение классов ES6 и того, почему
они являются близкими родственниками прототипного наследования.
9. Прокси и Reflect. Данная глава представляет две тесно связанные между
собой концепции: Proxy и Reflect API. Они могут использоваться для
перехвата и добавления дополнительного поведения в основные операции
в языке.
10. Функции. Функции-выражения относятся к наиболее мощным аспектам при-
менения JavaScript. В этой главе описываются замыкания, подробности функцио-
нирования объекта this, паттерн Модуль, создание закрытых членов объектов,
стрелочные функции, параметры по умолчанию и операторы расширения.
11. Промисы и асинхронное программирование. В этой главе рассмотрены
две новые тесно связанные конструкции асинхронного программирования:
тип Promise и async/await. Глава начинается с обсуждения парадигмы асин-
хронного JavaScript и продолжается обзором использования промисов и их
отношений к асинхронным функциям.
12. Объектная модель браузера. В этой главе описана объектная модель браузера
(BOM), которая предоставляет объекты для взаимодействия с браузером. Вы
ознакомитесь со всеми BOM-объектами, включая window, document, location,
navigator и screen.
13. Распознавание клиента. В этой главе рассмотрены способы распознавания
клиентского браузера и поддерживаемых им функциональных возможностей.
Вы узнаете о распознавании возможностей, анализе строки пользовательского
агента, о достоинствах и недостатках каждого подхода и о том, какой подход
оптимален в той или иной ситуации.
14. Объектная модель документа. В этой главе описаны объекты, определенные
в спецификации DOM Level 1. После ознакомления с XML в контексте DOM
вы сможете подробно изучить модель DOM и предоставляемые ею возмож-
ности по манипулированию содержимым страницы.
15. Расширения DOM. Глава содержит сведения о том, как API и сами браузеры
расширяют функционал DOM. В число рассматриваемых тем входят Selectors,
Element Traversal API и расширения HTML5.
16. DOM Level 2 и 3. В этой главе, основанной на двух предыдущих главах,
рассказано о том, как спецификации DOM Level 2 и 3 расширяют DOM
дополнительными свойствами, методами и объектами. Включает охват до-
полнений DOM4, таких как наблюдатели за изменениями.
17. События. Из этой главы вы узнаете о природе JavaScript-событий, их гене-
рировании и о том, как события переопределены в DOM.
18. Анимация и рисование на холсте. Эта глава посвящена тегу и его
использованию для динамичного создания графики. Рассмотрены двумер-
ный контекст и контекст WebGL (трехмерный), что поможет приступить
к созданию анимаций и игр. Включает обзор WebGL1 и WebGL2.
19. Работа с формами. В этой главе рассказывается, как с помощью JavaScript
улучшить взаимодействие с формами и обойти ограничения браузера. Особое
внимание уделено работе с элементами форм, такими как текстовые поля
и списки, а также проверке и обработке данных.
20. API в JavaScript. Рассматривает широкий ассортимент JavaScript API,
включая Atomics, Encoding, File, Blob, Notifications, Streams, Timing, Web
Components и Web Cryptography.
21. Обработка ошибок и отладка. В этой главе рассмотрены способы обработки
ошибок в JS-коде. Также описаны инструменты и приемы отладки для каж-
дого браузера и приведены рекомендации по упрощению процесса отладки.
22. XML в JavaScript. В этой главе рассмотрены возможности JavaScript, ис-
пользуемые для чтения XML-данных и манипулирования ими. Описаны раз-
личия возможностей и объектов в разных веб-браузерах и приведены советы
по написанию кроссбраузерного кода. Также в главе приведены сведения об
использовании XSLT-преобразований для трансформации XML-данных на
клиентских системах.
23. JSON. В этой главе представлен формат JSON — альтернатива XML. Описаны
возможности синтаксического анализа и сериализации JSON и приведены
сведения о том, как обеспечить безопасность при использовании JSON.
24. Сетевые запросы и удаленные ресурсы. Данная глава исследует все наиболее
распространенные способы запроса данных и ресурсов браузером. Включает
в себя рассмотрение унаследованного объекта XMLHttpRequest, а также со-
временного Fetch API.
25. Клиентское хранилище. В этой главе рассказано о том, как определить, что
приложение работает в автономном режиме, и описаны различные методики
сохранения данных на клиентском компьютере. В главе рассмотрены как
традиционные файлы cookie, так и более новые возможности, такие как веб-
хранилище и база данных IndexedDB.
26. Модули. Здесь обсуждается шаблон Модуль и его влияние на кодовые базы.
Затем рассматриваются загрузчики модулей до ES6, такие как CommonJS,
AMD и UMD, заканчивается глава подробным описанием нового шабло-
на ES6 — Модуль — и его правильного использования.
27. Рабочие потоки. Эта глава в целом охватывает выделенные рабочие потоки,
общие рабочие потоки и рабочие потоки служб. Включает обсуждение того,
как рабочие потоки ведут себя на уровне операционной системы и на уровне
браузера, а также стратегии оптимального использования различных типов
потоков.
28. Лучшие практики. Эта глава посвящена использованию JavaScript в корпо-
ративной среде. В ней описаны приемы обслуживания кода, в том числе мето-
дики написания и форматирования кода и общие приемы программирования.
Также приведены советы по оптимизации и повышению быстродействия
кода. Наконец, рассмотрены вопросы развертывания приложений, включая
реализацию процесса сборки.

Скачать WYSIWYG

Post 12-Oct-2021 20:55

[Quote]

Design for How People Think / Дизайн пользовательского опыта. Как создать продукт, который ждут
Год издания: 2021
Автор: John Whalen / Джон Уэлен
Переводчик: Эльвира Кондукова
Издательство: Манн, Иванов и Фербер
ISBN: 978-5-00169-440-3
Серия: Серия O’Reilly
Язык: Русский
Формат: PDF/EPUB
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Да
Количество страниц: 272
Описание:
Пользовательский опыт рождается не на экране, а в умах людей, которые взаимодействуют с продуктом. Наши чувства многомерны и мультисенсорны. Эта практическая книга поможет получить представление о том, как думают клиенты, чтобы создавать продукты или услуги с нужными им свойствами.
Автор Джон Уэлен покажет, как любой член вашей команды может генерировать новые идеи на базе пользовательского опыта. Затем вы поймете, как применить эти знания для ваших продуктов, а также узнаете:
• о шести образах мышления и о том, как каждый из них способствует получению уникального пользовательского опыта;
• как ваша команда — без какой-либо специальной подготовки в области психологии — может выяснить сознательные и бессознательные потребности ваших клиентов;
• как немедленно применить полученные знания для улучшения своих продуктов и услуг.
Для кого эта книга
Для владельцев бизнеса, менеджеров продукта, дизайнеров, специалистов по пользовательскому опыту и разработчиков.
От автора
«Психолог разрабатывает дизайн продуктов и услуг? Как интересно...»
Когда я представляюсь психологом, который разрабатывает дизайн продуктов и услуг, то чаще всего вижу на лице собеседника удивление: «Как, разве это работа не для дизайнера? Да уж, вы наверняка умеете залезть в голову потребителя! Вы анализируете меня прямо сейчас? Без комментариев!» Люди часто бывают заинтригованы, но не понимают, как знания о когнитивных процессах и эмоциях можно применить к дизайну цифровых продуктов и услуг. И это обычное дело.
Задача этой книги — помочь вам понять и использовать знания о человеческой психологии, чтобы разложить пользовательский опыт на составляющие и выяснить, как сделать продукт идеальным для потребителя. И сейчас для этого самое подходящее время. Научные исследования в области когнитивной психологии стремительно развиваются: уже известно о настоящих прорывах в сфере психологии, нейробиологии, бихевиористской экономики и человеко-машинного взаимодействия, благодаря которым мы получили новые данные о функциях мозга и процессах обработки информации, формирующих пользовательский опыт.
Об авторе
Джон Уэлен — обладатель ученой степени по когнитивным наукам. Более 15 лет он работает в области человекоориентированного дизайна. Используя свои уникальные знания о психологии, дизайн-мышлении, а также концепции «Лин-стартап», он выявляет нестандартные возможности и предлагает нетипичные решения в области пользовательского опыта для компаний из рейтинга Fortune 100, а также некоммерческих организаций и стартапов. Джон — топ-менеджер компании 10Pearls, в которой он возглавляет команду отдела инноваций, стратегии и дизайна. Перед тем как перейти в 10Pearls, он создал исследовательскую компанию Brilliant Experience, а также занимал должность профессора психологии. Джон Уэлен часто выступает на конференциях, а в недавнем прошлом работал президентом Ассоциации специалистов по пользовательскому опыту в Вашингтоне, округ Колумбия. В настоящее время в центре его интересов — когнитивный дизайн, то есть наука и искусство применения когнитивной психологии для понимания пользователей, получения необходимых при разработке дизайна сведений и создания привлекательного продукта или услуги.

Примеры страниц

Мои остальные раздачи -

Скачать WYSIWYG

Post 12-Oct-2021 04:05

[Quote]

Building Web Apps with Word Press. WordPress as an Application Framework / Разработка веб-приложений на WordPress. 2-е издание
Год издания: 2021
Автор: Brian Messenlehner, Jason Coleman / Брайан Мессенленер, Джейсон Коулман
Издательство: БХВ-Петербург
ISBN: 978-5-9775-6753-4
Язык: Русский
Формат: PDF
Качество: Отсканированные страницы + слой распознанного текста
Интерактивное оглавление: Да
Количество страниц: 528
Описание:
Подробно рассматривается создание веб-приложений на платформе WordPress, в том числе для мобильных устройств, принципы работы таких приложений. Описана структура каталогов и базы данных, приведены типы записей, метаданных и таксономий, перечислены основные классы и функции. Уделено внимание разработке собственной темы оформления с адаптивным дизайном. Рассказывается о типах пользователей и их ролях в архитектуре WordPress. Отдельная глава посвящена работе с API-интерфейсами, объектами и вспомогательными функциями, рассматриваются вопросы безопасности веб-приложений, принципы написания безопасного кода. Изучается REST API в WordPress, JavaScript-фреймворки, способы локализации приложений. Описаны принципы построения многосайтовых сетей, оптимизации и масштабирования. Рассматривается проект Gutenberg и его возможности.
Во втором издании авторы рассматривают новые функции и возможности актуальных версий WordPress. Все примеры кода из книги доступны на веб-сервисе GitHub - https://github.com/bwawwp
• Сравните WordPress с традиционными средами разработки приложений
• Используйте темы для настройки внешнего вида и плагины для обеспечения функциональности бэкенда
• Получите советы по выбору и созданию плагинов WordPress
• Регистрируйте собственные типы записей (CPT) и таксономии
• Управляйте учетными записями, ролями пользователей и доступом к данным
• Настраивайте асинхронное поведение с помощью jQuery
• Используйте WordPress для разработки мобильных приложений для iOS и Android
• Интегрируйте библиотеки PHP, внешние API и плагины веб-сервисов
• Получайте платежи с помощью плагинов eCommerce и membership
• Узнайте, как ускорить и масштабировать приложение WordPress
• Расширьте WordPress REST API и создайте собственные конечные точки (custom endpoints)
• Узнайте о разработке блоков WordPress Gutenberg
Для кого эта книга
Эта книга будет наиболее полезна разработчикам WordPress, которые хотят работать над более сложными приложениями, и разработчикам PHP, имеющим некоторый опыт работы с WordPress, которые ищут фреймворк для приложений на основе PHP.
Разработчики коммерческих плагинов и тем, а также все, кто работает над крупными распределенными проектами WordPress, также сочтут полезными концепции и методы этой книги.
Мы предполагаем, что читатели имеют представление о программировании на языке PHP. Вы также должны иметь базовые знания HTML и CSS и знакомы с запросами MySQL и SQL. Базовое понимание программирования на JavaScript и jQuery поможет вам при прочтении главы 9.
Кому не предназначена эта книга
Эта книга не для людей, которые хотят научиться использовать WordPress в качестве конечного пользователя. Будут кратко представлены стандартные функции WordPress, но мы предполагаем, что вы уже знакомы с WordPress с точки зрения пользователя.
Эта книга не предназначена для непрограммистов. Хотя можно создавать очень функциональные веб-приложения, просто комбинируя и настраивая многие плагины, доступные для WordPress, эта книга написана для разработчиков, создающих свои собственные плагины и темы для работы с новыми веб-приложениями.
Эта книга научит вас не программированию, а скорее тому, как программировать «в стиле WordPress».
Об авторах:
Джейсон Коулман помог запустить несколько стартапов, используя WordPress в качестве фреймворка для приложений. В настоящее время возглавляет разработку Paid Memberships Pro, коммерческого плагина для организации платной подписки.
Брайан Мессенленер — соучредитель нескольких веб-компаний, специализирующихся на разработке пользовательских и мобильных приложений на базе WordPress. Он создавал решения на базе WordPress для таких клиентов, как журнал TIME, компании NBC, Microsoft и Uber.

Примеры страниц

Мои остальные раздачи -

Скачать WYSIWYG

Post 30-Sep-2021 11:40

[Quote]

Fullstack React: The Complete Guide to ReactJS and Friends (Revision 42)
Год издания: 2021
Автор: Accomazzo A., Murray N., Lerner A. et al.
Издательство: \newline (Fullstack.io)
ISBN: 978-0991344626
Язык: Английский
Формат: PDF/ePub/MOBI
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Да
Количество страниц: 1030
Описание: Update 2021-09-13
Revision 42 – Supports React 16.12.0 (2021-09-13)
Stop wasting your time learning React with incomplete and confusing tutorials.
There are so many incorrect, confusing, and out-of-date blog articles
One tutorial says one thing and another says something completely different.
There are too many options
There are fifty different boilerplates and a dozen different Flux implementations. Which one is best?
What if you could master the entire framework in less time, with solid foundations, without beating your head against the wall? Imagine how quickly you can get all of your work done with the right tools and best practices.
Seriously, let’s stop wasting time scouring Google, searching through incorrect, out-of-date, blog posts and get everything you need to be productive in one, well-organized place, complete with both simple and complex examples to get your app up and running.
You’ll learn what you need to know to work professionally and build solid, well-tested, optimized apps with ReactJS. This book is your definitive guide.

Примеры страниц

Оглавление

Part I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Your first React Web Application . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Building Product Hunt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Setting up your development environment . . . . . . . . . . . . . . . . . . . 9
Code editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Node.js and npm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Install Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Special instruction for Windows users . . . . . . . . . . . . . . . . . . . . . . 11
Ensure IIS is installed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
JavaScript ES6/ES7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Getting started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Sample Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Previewing the application . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Prepare the app . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
What’s a component? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Our first component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
JSX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
The developer console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Babel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
ReactDOM.render() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Building Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Making Product data-driven . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
The data model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Using props . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Rendering multiple products . . . . . . . . . . . . . . . . . . . . . . . . . 39
React the vote (your app’s first interaction) . . . . . . . . . . . . . . . . . . . 44
Propagating the event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Binding custom component methods . . . . . . . . . . . . . . . . . . . . 48
Using state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Setting state with this.setState() . . . . . . . . . . . . . . . . . . . . . 54
Updating state and immutability . . . . . . . . . . . . . . . . . . . . . . . . . 56
Refactoring with the Babel plugin transform-class-properties . . . . . . 63
Babel plugins and presets . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Property initializers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Refactoring Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Refactoring ProductList . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Congratulations! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
A time-logging app . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Getting started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Previewing the app . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Prepare the app . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Breaking the app into components . . . . . . . . . . . . . . . . . . . . . . . . 77
The steps for building React apps from scratch . . . . . . . . . . . . . . . . . 85
Step 2: Build a static version of the app . . . . . . . . . . . . . . . . . . . . . 87
TimersDashboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
EditableTimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
TimerForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
ToggleableTimerForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Render the app . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Try it out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Step 3: Determine what should be stateful . . . . . . . . . . . . . . . . . . . . 96
State criteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Applying the criteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Step 4: Determine in which component each piece of state should live . . 98
The list of timers and properties of each timer . . . . . . . . . . . . . . 99
Whether or not the edit form of a timer is open . . . . . . . . . . . . . 99
Visibility of the create form . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Step 5: Hard-code initial states . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Adding state to TimersDashboard . . . . . . . . . . . . . . . . . . . . . . 100
Receiving props in EditableTimerList . . . . . . . . . . . . . . . . . . . 102
Props vs. state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Adding state to EditableTimer . . . . . . . . . . . . . . . . . . . . . . . . 104
Timer remains stateless . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Adding state to ToggleableTimerForm . . . . . . . . . . . . . . . . . . . 105
Adding state to TimerForm . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Step 6: Add inverse data flow . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
TimerForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
ToggleableTimerForm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
TimersDashboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Updating timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Adding editability to Timer . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Updating EditableTimer . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Updating EditableTimerList . . . . . . . . . . . . . . . . . . . . . . . . . 120
Defining onEditFormSubmit() in TimersDashboard . . . . . . . . . . . 121
Deleting timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Adding the event handler to Timer . . . . . . . . . . . . . . . . . . . . . 124
Routing through EditableTimer . . . . . . . . . . . . . . . . . . . . . . . 125
Routing through EditableTimerList . . . . . . . . . . . . . . . . . . . . 126
Implementing the delete function in TimersDashboard . . . . . . . . . 127
Adding timing functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Adding a forceUpdate() interval to Timer . . . . . . . . . . . . . . . . . 129
Try it out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Add start and stop functionality . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Add timer action events to Timer . . . . . . . . . . . . . . . . . . . . . . 131
Create TimerActionButton . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Run the events through EditableTimer and EditableTimerList . . . 134
Try it out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Methodology review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Components & Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
server.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
The Server API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
text/html endpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
JSON endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Playing with the API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Loading state from the server . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Try it out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Fetch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Sending starts and stops to the server . . . . . . . . . . . . . . . . . . . . . . 156
Sending creates, updates, and deletes to the server . . . . . . . . . . . . . . . 159
Give it a spin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Next up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
JSX and the Virtual DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
React Uses a Virtual DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Why Not Modify the Actual DOM? . . . . . . . . . . . . . . . . . . . . . . . . 162
What is a Virtual DOM? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Virtual DOM Pieces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
ReactElement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Experimenting with ReactElement . . . . . . . . . . . . . . . . . . . . . 165
Rendering Our ReactElement . . . . . . . . . . . . . . . . . . . . . . . . . 167
Adding Text (with children) . . . . . . . . . . . . . . . . . . . . . . . . . 169
ReactDOM.render() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
JSX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
JSX Creates Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
JSX Attribute Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
JSX Conditional Child Expressions . . . . . . . . . . . . . . . . . . . . . 175
JSX Boolean Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
JSX Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
JSX Spread Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
JSX Gotchas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
JSX Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Advanced Component Configuration with props, state, and children . . . 183
Intro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
How to use this chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Creating Components - ES6 Classes or Functional Components . . . . 185
render() Returns a ReactElement Tree . . . . . . . . . . . . . . . . . . . 186
Getting Data into render() . . . . . . . . . . . . . . . . . . . . . . . . . . 187
props are the parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
PropTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Default props with getDefaultProps() . . . . . . . . . . . . . . . . . . . . . 191
Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Default value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Multiple contexts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Using state: Building a Custom Radio Button . . . . . . . . . . . . . . 197
Stateful components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
State updates that depend on the current state . . . . . . . . . . . . . . 206
Thinking About State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Stateless Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Switching to Stateless . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Stateless Encourages Reuse . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Talking to Children Components with props.children . . . . . . . . . . . . 213
React.Children.map() & React.Children.forEach() . . . . . . . . . 216
React.Children.toArray() . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Forms 101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
The Basic Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Events and Event Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Back to the Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Text Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Accessing User Input With refs . . . . . . . . . . . . . . . . . . . . . . . 228
Using User Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Uncontrolled vs. Controlled Components . . . . . . . . . . . . . . . . . 234
Accessing User Input With state . . . . . . . . . . . . . . . . . . . . . . 235
Multiple Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
On Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Adding Validation to Our App . . . . . . . . . . . . . . . . . . . . . . . . 244
Creating the Field Component . . . . . . . . . . . . . . . . . . . . . . . . 249
Using our new Field Component . . . . . . . . . . . . . . . . . . . . . . . 253
Remote Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Building the Custom Component . . . . . . . . . . . . . . . . . . . . . . 261
Adding CourseSelect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Separation of View and State . . . . . . . . . . . . . . . . . . . . . . . . . 271
Async Persistence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Redux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Form Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Connect the Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
Form Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
formsy-react . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
react-input-enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . 295
tcomb-form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
winterfell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
react-redux-form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Using Webpack with Create React App . . . . . . . . . . . . . . . . . . . . . . . 297
JavaScript modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
Create React App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Exploring Create React App . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
public/index.html . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
package.json . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
src/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
index.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Booting the app . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Webpack basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Making modifications to the sample app . . . . . . . . . . . . . . . . . . . . . 320
Hot reloading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
Auto-reloading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
Creating a production build . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Ejecting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Buckle up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
Using Create React App with an API server . . . . . . . . . . . . . . . . . . . 330
The completed app . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
How the app is organized . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
The server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Concurrently . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Using the Webpack development proxy . . . . . . . . . . . . . . . . . . 343
Webpack at large . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
When to use Webpack/Create React App . . . . . . . . . . . . . . . . . 345
Unit Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Writing tests without a framework . . . . . . . . . . . . . . . . . . . . . . . . 347
Preparing Modash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Writing the first spec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
The assertEqual() function . . . . . . . . . . . . . . . . . . . . . . . . . 354
What is Jest? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Using Jest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
expect() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
The first Jest test for Modash . . . . . . . . . . . . . . . . . . . . . . . . . 363
The other truncate() spec . . . . . . . . . . . . . . . . . . . . . . . . . . 365
The rest of the specs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
Testing strategies for React applications . . . . . . . . . . . . . . . . . . . . . 368
Integration vs Unit Testing . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Shallow rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Enzyme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
Testing a basic React component with Enzyme . . . . . . . . . . . . . . . . . 371
Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
The App component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
The first spec for App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
More assertions for App . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
Using beforeEach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
Simulating a change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Clearing the input field . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
Simulating a form submission . . . . . . . . . . . . . . . . . . . . . . . . 398
Writing tests for the food lookup app . . . . . . . . . . . . . . . . . . . . . . . 407
FoodSearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
Exploring FoodSearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
Writing FoodSearch.test.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
In initial state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
A user has typed a value into the search field . . . . . . . . . . . . . . . 423
Mocking with Jest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
Mocking Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
The API returns results . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
The user clicks on a food item . . . . . . . . . . . . . . . . . . . . . . . . 443
The API returns empty result set . . . . . . . . . . . . . . . . . . . . . . 449
Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
What’s in a URL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
React Router’s core components . . . . . . . . . . . . . . . . . . . . . . . 460
Building the components of react-router . . . . . . . . . . . . . . . . . . . 461
The completed app . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Building Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Building Link . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
Building Router . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
Building Redirect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
Using react-router . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
More Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
Using Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
Dynamic routing with React Router . . . . . . . . . . . . . . . . . . . . . . . 498
The completed app . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
The server’s API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
Starting point of the app . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
Using URL params . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
Propagating pathnames as props . . . . . . . . . . . . . . . . . . . . . . . 519
Dynamic menu items with NavLink . . . . . . . . . . . . . . . . . . . . . 525
Supporting authenticated routes . . . . . . . . . . . . . . . . . . . . . . . . . . 529
The Client library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
Implementing login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
PrivateRoute, a higher-order component . . . . . . . . . . . . . . . . . 539
Redirect state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
Recap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
Further Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
Part II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
Intro to Flux and Redux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
Why Flux? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
Flux is a Design Pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
Flux overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
Flux implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
Redux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
Redux’s key ideas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
Building a counter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
Preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
The counter’s actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554
Incrementing the counter . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
Decrementing the counter . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
Supporting additional parameters on actions . . . . . . . . . . . . . . . 558
Building the store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
Try it out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
The core of Redux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
Next up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
The beginnings of a chat app . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
Previewing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
Building the reducer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
Initializing state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
Handling the ADD_MESSAGE action . . . . . . . . . . . . . . . . . . . . . . 571
Handling the DELETE_MESSAGE action . . . . . . . . . . . . . . . . . . . . 575
Subscribing to the store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
createStore() in full . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
Connecting Redux to React . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
Using store.getState() . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
Using store.subscribe() . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
Using store.dispatch() . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
The app’s components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
Preparing App.js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
The App component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
The MessageInput component . . . . . . . . . . . . . . . . . . . . . . . . 588
The MessageView component . . . . . . . . . . . . . . . . . . . . . . . . . 590
Next up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
Intermediate Redux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
Preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
Using createStore() from the redux library . . . . . . . . . . . . . . . . . . 596
Try it out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
Representing messages as objects in state . . . . . . . . . . . . . . . . . . . . 597
Updating ADD_MESSAGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598
Updating DELETE_MESSAGE . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
Updating the React components . . . . . . . . . . . . . . . . . . . . . . . 602
Introducing threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
Supporting threads in initialState . . . . . . . . . . . . . . . . . . . . 606
Supporting threads in the React components . . . . . . . . . . . . . . . 608
Modifying App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
Turning MessageView into Thread . . . . . . . . . . . . . . . . . . . . . . 610
Try it out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
Adding the ThreadTabs component . . . . . . . . . . . . . . . . . . . . . . . . 612
Updating App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
Creating ThreadTabs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
Try it out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
Supporting threads in the reducer . . . . . . . . . . . . . . . . . . . . . . . . . 615
Updating ADD_MESSAGE in the reducer . . . . . . . . . . . . . . . . . . . . 615
Updating the MessageInput component . . . . . . . . . . . . . . . . . . 622
Try it out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
Updating DELETE_MESSAGE in the reducer . . . . . . . . . . . . . . . . . . 624
Try it out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
Adding the action OPEN_THREAD . . . . . . . . . . . . . . . . . . . . . . . . . . 628
The action object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
Modifying the reducer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
Dispatching from ThreadTabs . . . . . . . . . . . . . . . . . . . . . . . . 630
Try it out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
Breaking up the reducer function . . . . . . . . . . . . . . . . . . . . . . . . . 632
A new reducer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
Updating threadsReducer() . . . . . . . . . . . . . . . . . . . . . . . . . 635
Try it out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
Adding messagesReducer() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
Modifying the ADD_MESSAGE action handler . . . . . . . . . . . . . . . . 641
Creating messagesReducer() . . . . . . . . . . . . . . . . . . . . . . . . . 642
Modifying the DELETE_MESSAGE action handler . . . . . . . . . . . . . . 643
Adding DELETE_MESSAGE to messagesReducer() . . . . . . . . . . . . . . 647
Defining the initial state in the reducers . . . . . . . . . . . . . . . . . . . . . 649
Initial state in reducer() . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
Adding initial state to activeThreadIdReducer() . . . . . . . . . . . . 650
Adding initial state to threadsReducer() . . . . . . . . . . . . . . . . . 651
Try it out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
Using combineReducers() from redux . . . . . . . . . . . . . . . . . . . . . . 653
Next up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654
Using Presentational and Container Components with Redux . . . . . . . . 656
Presentational and container components . . . . . . . . . . . . . . . . . 656
Splitting up ThreadTabs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
Splitting up Thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
Removing store from App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
Try it out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
Generating containers with react-redux . . . . . . . . . . . . . . . . . . . . 674
The Provider component . . . . . . . . . . . . . . . . . . . . . . . . . . . 674
Wrapping App in Provider . . . . . . . . . . . . . . . . . . . . . . . . . . 675
Using connect() to generate ThreadTabs . . . . . . . . . . . . . . . . . . 676
Using connect() to generate ThreadDisplay . . . . . . . . . . . . . . . 680
Action creators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
Asynchronicity and server communication . . . . . . . . . . . . . . . . 692
Using GraphQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
Your First GraphQL Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
GraphQL Benefits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
GraphQL vs. REST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
GraphQL vs. SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
Relay and GraphQL Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . 699
Chapter Preview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
Consuming GraphQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
Exploring With GraphiQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
GraphQL Syntax 101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706
Complex Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711
Unions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712
Fragments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714
Exploring a Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715
Graph Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718
Viewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720
Graph Connections and Edges . . . . . . . . . . . . . . . . . . . . . . . . . . . 722
Mutations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726
Subscriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727
GraphQL With JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
GraphQL With React . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732
GraphQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
Writing a GraphQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
Special setup for Windows users . . . . . . . . . . . . . . . . . . . . . . . . . 733
Game Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735
Express HTTP Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735
Adding First GraphQL Types . . . . . . . . . . . . . . . . . . . . . . . . . 738
Adding GraphiQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741
Introspection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743
Mutation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
Rich Schemas and SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748
Setting Up The Database . . . . . . . . . . . . . . . . . . . . . . . . . . . 749
Schema Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
Object and Scalar Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
Performance: Look-Ahead Optimizations . . . . . . . . . . . . . . . . . 766
Lists Continued . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772
Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782
Authorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784
Rich Mutations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789
Relay and GraphQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793
Performance: N+1 Queries . . . . . . . . . . . . . . . . . . . . . . . . . . 795
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800
Relay Classic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801
What We’re Going to Cover . . . . . . . . . . . . . . . . . . . . . . . . . 802
What We’re Building . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803
Guide to the Code Structure . . . . . . . . . . . . . . . . . . . . . . . . . 807
Relay is a Data Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
Relay GraphQL Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810
Exploring Relay Conventions in GraphQL . . . . . . . . . . . . . . . . . 811
Fetching Objects By ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811
Walking Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816
Changing Data with Mutations . . . . . . . . . . . . . . . . . . . . . . . 821
Relay GraphQL Queries Summary . . . . . . . . . . . . . . . . . . . . . 823
Adding Relay to Our App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823
Quick Look at the Goal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823
A Preview of the Author Page . . . . . . . . . . . . . . . . . . . . . . . . 826
Containers, Queries, and Fragments . . . . . . . . . . . . . . . . . . . . 827
Validating Our Relay Queries at Compile Time . . . . . . . . . . . . . . 828
Setting Up Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835
Adding Relay to Our Routes . . . . . . . . . . . . . . . . . . . . . . . . . 837
App Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838
AuthorQueries Component . . . . . . . . . . . . . . . . . . . . . . . . . . 840
AuthorPage Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841
Try It Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842
AuthorPage with Styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845
BooksPage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847
BooksPage Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848
BooksPage Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849
BooksPage render() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 852
BookItem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853
BookItem Fragment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855
Fragment Value Masking . . . . . . . . . . . . . . . . . . . . . . . . . . . 855
Improving the AuthorPage . . . . . . . . . . . . . . . . . . . . . . . . . . 858
Changing Data With Mutations . . . . . . . . . . . . . . . . . . . . . . . . . . 861
Building a Book’s Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862
Book Page Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 866
Mutations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869
Defining a Mutation Object . . . . . . . . . . . . . . . . . . . . . . . . . . 870
Inline Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877
Where to Go From Here . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878
React Native . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 879
Init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 880
Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886
renderScene() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887
configureScene() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 890
Web components vs. Native components . . . . . . . . . . . . . . . . . . . . 893
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 895
, , and . . . . . . . . . . . . . . . . . . . . . . . 895
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 896
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
Styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907
StyleSheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 908
Flexbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 910
HTTP requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932
What is a promise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932
Enter Promises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935
Single-use guarantee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937
Creating a promise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937
Debugging with React Native . . . . . . . . . . . . . . . . . . . . . . . . . . . 939
Where to go from here . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 941
Appendix A: PropTypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943
Validators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945
string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945
number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946
boolean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947
function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948
object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949
object shape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 950
multiple types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 951
instanceOf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 952
array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953
array of type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954
node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 955
element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 956
any type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 958
Optional & required props . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 958
custom validator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959
Appendix B: ES6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 962
Prefer const and let over var . . . . . . . . . . . . . . . . . . . . . . . . 962
Arrow functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963
Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966
Object.assign() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 969
Template literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970
The spread operator (...) . . . . . . . . . . . . . . . . . . . . . . . . . . . 971
Enhanced object literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . 971
Default arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 972
Destructuring assignments . . . . . . . . . . . . . . . . . . . . . . . . . . 973
Appendix C: React Hooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976
Motivation behind Hooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976
How Hooks Map to Component Classes . . . . . . . . . . . . . . . . . . . . . 977
Using Hooks Requires react "next" . . . . . . . . . . . . . . . . . . . . . . . 977
useState() Hook Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977
Our Component is a Function . . . . . . . . . . . . . . . . . . . . . . . . 981
Reading and Writing State . . . . . . . . . . . . . . . . . . . . . . . . . . 981
React Tracks the State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 982
Multiple States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 982
useEffect() Hook Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983
Fetch Data and Update State . . . . . . . . . . . . . . . . . . . . . . . . . 984
Performance Concerns When Using Effects . . . . . . . . . . . . . . . . 985
useContext() Hook Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 986
The Point of Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 986
useContext() makes context easier to use . . . . . . . . . . . . . . . . . 986
Getting a Reference to the Context in a Larger App . . . . . . . . . . . 987
useRef() Hook Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 988
useRef() and forms with input . . . . . . . . . . . . . . . . . . . . . . . 988
Using Custom Hooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 990
Writing Tests for React Hooks . . . . . . . . . . . . . . . . . . . . . . . . . . . 992
Writing tests for useState() Hook . . . . . . . . . . . . . . . . . . . . . . 993
Writing tests for useEffect() Hook . . . . . . . . . . . . . . . . . . . . . 994
Writing tests for useRef() Hook . . . . . . . . . . . . . . . . . . . . . . . 996
Community Reaction to Hooks . . . . . . . . . . . . . . . . . . . . . . . . . . 997
References to the Different types of Hooks . . . . . . . . . . . . . . . . . . . 998
Future of Hooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 999
More Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1000
Changelog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1001
Revision 41 - 2020-07-06 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1001
Revision 40 - 2020-01-13 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1001
Revision 39 - 2019-01-10 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1001
Revision 38 - 2018-12-20 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1001
Revision 37 - 2018-12-19 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1001
Revision 36 - 2018-10-01 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1002
Revision 35 - 2018-04-02 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1002
Revision 34 - 2017-10-17 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1002
Revision 33 - 2017-08-31 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1002
Revision 32 - 2017-06-14 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1002
Revision 31 - 2017-05-18 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1002
Revision 30 - 2017-04-20 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003
Revision 29 - 2017-04-13 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003
Revision 28 - 2017-04-10 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003
Revision 27 - 2017-03-16 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003
Revision 26 - 2017-02-22 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003
Revision 25 - 2017-02-17 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003
Revision 24 - 2017-02-08 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004
Revision 23 - 2017-02-06 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004
Revision 22 - 2017-02-01 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004
Revision 21 - 2017-01-27 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004
Revision 20 - 2017-01-10 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004
Revision 19 - 2016-12-20 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004
Revision 18 - 2016-11-22 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005
Revision 17 - 2016-11-04 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005
Revision 16 - 2016-10-12 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005
Revision 15 - 2016-10-05 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005
Revision 14 - 2016-08-26 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005
Revision 13 - 2016-08-02 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005
Revision 12 - 2016-07-26 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005
Revision 11 - 2016-07-08 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006
Revision 10 - 2016-06-24 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006
Revision 9 - 2016-06-21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006
Revision 8 - 2016-06-02 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006
Revision 7 - 2016-05-13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006
Revision 6 - 2016-05-13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006
Revision 5 - 2016-04-25 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006
Revision 4 - 2016-04-22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006
Revision 3 - 2016-04-08 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1007
Revision 2 - 2016-03-16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1007
Revision 1 - 2016-02-14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1007

Скачать WYSIWYG

Post 20-Sep-2021 22:05

[Quote]

PHP and MySQL Web Development, 5th Edition / Разработка веб-приложений с помощью РНР и MySQL, 5-е издание
Год издания: 2017
Автор: Welling Luke, Thomson Laura / Веллинг Люк, Томсон Лора
Издательство: Диалектика
ISBN: 978-5-9908911-9-7
Язык: Русский
Формат: PDF
Качество: Отсканированные страницы + слой распознанного текста
Интерактивное оглавление: Да
Количество страниц: 768
Описание: Овладейте современным передовым опытом разработки веб-приложений, взаимодействующих с базами данных, с помощью PHP 7 и MySQL 5.7!
В этом новом 5-м издании книги, признанной наиболее ясным, удобным и практичным руководством по разработке с использованием PHP и MySQL, полностью отражены возможности последних версий PHP и MySQL. В первой части содержится ускоренный курс по PHP, в котором описано хранение/извлечение данных, массивы, строки, регулярные выражения, повторное использование кода, объекты и обработка ошибок исключений.
Во второй части раскрывается проектирование, создание, доступ и программирование для баз данных MySQL.
Третья часть посвящена безопасности веб-приложений; в ней добавлена новая информация по угрозам веб-безопасности, приведены инструкции по построению защищенных веб-приложений, а также рассмотрена реализация аутентификации в PHP и MySQL.
Отдельная часть по расширенным приемам PHP охватывает все темы, начиная с работы в сети и взаимодействия с файловой системой и заканчивая интернационализацией и локализацией, генерированием изображений, а также инфраструктурами и компонентами PHP.
Книга завершается демонстрацией нескольких реальных проектов, в числе которых реализация аутентификации и персонализации пользователей, создание службы веб-почты, интеграция с социальной сетью и построение корзины для покупок.
PHP и MySQL являются популярными технологиями с открытым кодом, которые идеальны для быстрой разработки веб-приложений, взаимодействующих с базами данных.

Примеры страниц

Оглавление

Введение 26
Часть I. Использование PHP 35
Глава 1. Ускоренный курс по PHP 36
Глава 2. Хранение и извлечение данных 77
Глава 3. Использование массивов 99
Глава 4. Манипулирование строками и регулярные выражения 125
Глава 5. Повторное использование кода и написание функций 155
Глава 6. Объектно-ориентированная разработка с помощью PHP 183
Глава 7. Обработка ошибок и исключений 223
Часть II. Использование MySQL 233
Глава 8. Проектирование базы данных для веб-приложения 234
Глава 9. Создание базы данных для веб-приложения 247
Глава 10. Работа с базой данных MySQL 273
Глава 11. Доступ к базе данных MySQL из веб-приложения с помощью РНР 297
Глава 12. Расширенное администрирование в MySQL 315
Глава 13. Расширенное программирование в MySQL 339
Часть III. Безопасность веб-приложения 355
Глава 14. Угрозы безопасности веб-приложения 356
Глава 15. Построение защищенного веб-приложения 367
Глава 16. Реализация методов аутентификации с помощью PHP 393
Часть IV. Расширенные приемы в PHP 407
Глава 17. Взаимодействие с файловой системой и сервером 408
Глава 18. Использование функций для работы с сетью и протоколами 431
Глава 19. Работа с датой и временем 449
Глава 20. Интернационализация и локализация 463
Глава 21. Генерация изображений 475
Глава 22. Управление сеансами в PHP 499
Глава 23. Интеграция JavaScript и PHP 515
Глава 24. Другие полезные средства 539
Часть V. Разработка практических проектов на PHP и MySQL 549
Глава 25. Использование PHP и MySQL в крупных проектах 550
Глава 26. Отладка и ведение журналов 567
Глава 27. Реализация аутентификации и персонализации пользователей 585
Глава 28. Построение клиента веб-почты с помощью
инфраструктуры Laravel, часть I 619
Глава 29. Построение клиента веб-почты с помощью
инфраструктуры Laravel, часть II 641
Глава 30. Интеграция с социальными сетями и аутентификация 689
Глава 31. Построение корзины для покупок 705
Приложение А. Установка Apache, PHP и MySQL 744
Предметный указатель 760
Доп. информация: http://archive.williamspublishing.com/cgi-bin/materials.cgi?isbn=978-5-9908911-9-7

Скачать WYSIWYG

Post 16-Sep-2021 10:25

[Quote]

React: современные шаблоны для разработки приложений
Год издания: 2022
Автор: Бэнкс Алекс, Порселло Ева
Издательство: Питер
ISBN: 978-5-4461-1492-4
Серия: Бестселлеры O’Reilly
Язык: Русский
Формат: PDF/ePub
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Нет
Количество страниц: 320
Описание: Хотите создавать эффективные приложения с помощью React? Тогда эта книга написана для вас. Познакомьтесь лучшими практиками и шаблонами создания современного кода. Вам не потребуются глубокие знания React или функционала jаvascript — достаточно знакомства с принципами работы jаvascript, CSS и HTML.
Алекс Бэнкс и Ева Порселло научат вас создавать пользовательские интерфейсы, которые будут динамически отображать изменения без необходимости перезагрузки страницы даже на крупномасштабных сайтах, работающих с огромными массивами данных.

Примеры страниц

Оглавление

Предисловие 11
Глава 1. Добро пожаловать в React 14
Глава 2. JavaScript для React 21
Глава 3. Функциональное программирование с использованием JavaScript 47
Глава 4. Как работает React 75
Глава 5. React и JSX 89
Глава 6. Управление состояниями 116
Глава 7. Улучшение компонентов с помощью хуков 149
Глава 8. Включение данных 177
Глава 9. Suspense 223
Глава 10. Тестирование в React 247
Глава 11. React Router 281
Глава 12. React и сервер 297
Об авторах 316
Об обложке 317

Скачать WYSIWYG

Post 26-Aug-2021 23:05

[Quote]

Learning PHP, MySQL, and JavaScript: A Step-by-Step Guide to Creating Dynamic Websites (6th Edition)
Год издания: 2021
Автор: Nixon Robin
Издательство: O'Reilly
ISBN: 978-1-492-09382-4
Язык: Английский
Формат: PDF/ePub
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Да
Количество страниц: 826
Описание: Build interactive, data-driven websites with the potent combination of open source technologies and web standards, even if you have only basic HTML knowledge. With the latest edition of this popular hands-on guide, you'll tackle dynamic web programming using the most recent versions of today's core technologies: PHP, MySQL, JavaScript, CSS, HTML5, jQuery, and the powerful React library.
Web designers will learn how to use these technologies together while picking up valuable web programming practices along the way — including how to optimize websites for mobile devices. You'll put everything together to build a fully functional social networking site suitable for both desktop and mobile browsers.
  • Explore MySQL from database structure to complex queries
  • Use the MySQL PDO extension, PHP's improved MySQL interface
  • Create dynamic PHP web pages that tailor themselves to the user
  • Manage cookies and sessions and maintain a high level of security
  • Enhance JavaScript with the React library
  • Use Ajax calls for background browser-server communication
  • Style your web pages by acquiring CSS skills
  • Implement HTML5 features, including geolocation, audio, video, and the canvas element
  • Reformat your websites into mobile web apps

Примеры страниц

Оглавление

Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii
1. Introduction to Dynamic Web Content. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
HTTP and HTML: Berners-Lee’s Basics 2
The Request/Response Procedure 2
The Benefits of PHP, MySQL, JavaScript, CSS, and HTML5 5
MariaDB: The MySQL Clone 6
Using PHP 6
Using MySQL 7
Using JavaScript 8
Using CSS 10
And Then There’s HTML5 10
The Apache Web Server 11
Handling Mobile Devices 12
About Open Source 12
Bringing It All Together 13
Questions 15
2. Setting Up a Development Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
What Is a WAMP, MAMP, or LAMP? 18
Installing AMPPS on Windows 18
Testing the Installation 23
Accessing the Document Root (Windows) 25
Alternative WAMPs 26
Installing AMPPS on macOS 27
Accessing the Document Root (macOS) 28
Installing a LAMP on Linux 29
Working Remotely 29
Logging In 30
Using SFTP or FTPS 30
Using a Code Editor 31
Using an IDE 32
Questions 34
3. Introduction to PHP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Incorporating PHP Within HTML 35
This Book’s Examples 37
The Structure of PHP 37
Using Comments 37
Basic Syntax 38
Variables 39
Operators 44
Variable Assignment 48
Multiline Commands 50
Variable Typing 52
Constants 53
Predefined Constants 54
The Difference Between the echo and print Commands 55
Functions 55
Variable Scope 56
Questions 62
4. Expressions and Control Flow in PHP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Expressions 63
TRUE or FALSE? 64
Literals and Variables 65
Operators 66
Operator Precedence 67
Associativity 69
Relational Operators 70
Conditionals 74
The if Statement 75
The else Statement 76
The elseif Statement 78
The switch Statement 79
The ? (or ternary) Operator 82
Looping 83
while Loops 84
do...while Loops 86
for Loops 86
Breaking Out of a Loop 88
The continue Statement 89
Implicit and Explicit Casting 90
PHP Dynamic Linking 91
Dynamic Linking in Action 92
Questions 93
5. PHP Functions and Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
PHP Functions 96
Defining a Function 97
Returning a Value 98
Returning an Array 99
Passing Arguments by Reference 100
Returning Global Variables 102
Recap of Variable Scope 102
Including and Requiring Files 103
The include Statement 103
Using include_once 103
Using require and require_once 104
PHP Version Compatibility 104
PHP Objects 105
Terminology 106
Declaring a Class 107
Creating an Object 108
Accessing Objects 108
Cloning Objects 110
Constructors 111
Destructors 111
Writing Methods 112
Declaring Properties 113
Declaring Constants 114
Property and Method Scope 114
Static Methods 115
Static Properties 116
Inheritance 117
Questions 121
6. PHP Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Basic Access 123
Numerically Indexed Arrays 123
Associative Arrays 125
Assignment Using the array Keyword 126
The foreach...as Loop 127
Multidimensional Arrays 129
Using Array Functions 132
is_array 132
count 133
sort 133
shuffle 133
explode 134
extract 135
compact 135
reset 137
end 137
Questions 137
7. Practical PHP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Using printf 139
Precision Setting 140
String Padding 142
Using sprintf 143
Date and Time Functions 143
Date Constants 146
Using checkdate 146
File Handling 147
Checking Whether a File Exists 147
Creating a File 147
Reading from Files 149
Copying Files 150
Moving a File 150
Deleting a File 151
Updating Files 151
Locking Files for Multiple Accesses 152
Reading an Entire File 154
Uploading Files 155
System Calls 160
XHTML or HTML5? 162
Questions 163
8. Introduction to MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
MySQL Basics 165
Summary of Database Terms 166
Accessing MySQL via the Command Line 166
Starting the Command-Line Interface 167
Using the Command-Line Interface 171
MySQL Commands 172
Data Types 177
Indexes 187
Creating an Index 187
Querying a MySQL Database 193
Joining Tables Together 203
Using Logical Operators 205
MySQL Functions 206
Accessing MySQL via phpMyAdmin 206
Questions 207
9. Mastering MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Database Design 209
Primary Keys: The Keys to Relational Databases 210
Normalization 211
First Normal Form 212
Second Normal Form 214
Third Normal Form 216
When Not to Use Normalization 218
Relationships 219
One-to-One 219
One-to-Many 220
Many-to-Many 221
Databases and Anonymity 222
Transactions 223
Transaction Storage Engines 223
Using BEGIN 224
Using COMMIT 225
Using ROLLBACK 225
Using EXPLAIN 226
Backing Up and Restoring 227
Using mysqldump 227
Creating a Backup File 229
Restoring from a Backup File 231
Dumping Data in CSV Format 231
Planning Your Backups 232
Questions 232
10. What’s New in PHP 8 and MySQL 8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
About This Chapter 235
PHP 8 236
Named Parameters 236
Attributes 237
Constructor Properties 237
Just-In-Time Compilation 238
Union Types 238
Null-safe Operator 238
match Expressions 238
New Functions 239
MySQL 8 243
Updates to SQL 243
JSON (JavaScript Object Notation) 244
Geography Support 244
Reliability 244
Speed and Performance 244
Management 245
Security 245
Questions 246
11. Accessing MySQL Using PHP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Querying a MySQL Database with PHP 247
The Process 247
Creating a Login File 248
Connecting to a MySQL Database 249
A Practical Example 254
The $_POST Array 257
Deleting a Record 258
Displaying the Form 258
Querying the Database 259
Running the Program 260
Practical MySQL 261
Creating a Table 262
Describing a Table 263
Dropping a Table 264
Adding Data 264
Retrieving Data 265
Updating Data 266
Deleting Data 267
Using AUTO_INCREMENT 267
Performing Additional Queries 269
Preventing Hacking Attempts 270
Steps You Can Take 271
Using Placeholders 273
Preventing JavaScript Injection into HTML 275
Questions 277
12. Form Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Building Forms 279
Retrieving Submitted Data 281
Default Values 282
Input Types 283
Sanitizing Input 290
An Example Program 292
HTML5 Enhancements 294
The autocomplete Attribute 295
The autofocus Attribute 295
The placeholder Attribute 295
The required Attribute 296
Override Attributes 296
The width and height Attributes 296
The min and max Attributes 296
The step Attribute 296
The form Attribute 297
The list Attribute 297
The color Input Type 297
The number and range Input Types 297
Date and Time Pickers 298
Questions 298
13. Cookies, Sessions, and Authentication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Using Cookies in PHP 299
Setting a Cookie 301
Accessing a Cookie 302
Destroying a Cookie 302
HTTP Authentication 302
Storing Usernames and Passwords 306
An Example Program 308
Using Sessions 311
Starting a Session 312
Ending a Session 315
Setting a Timeout 316
Session Security 317
Questions 320
14. Exploring JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
JavaScript and HTML Text 322
Using Scripts Within a Document Head 323
Older and Nonstandard Browsers 324
Including JavaScript Files 324
Debugging JavaScript Errors 325
Using Comments 325
Semicolons 326
Variables 326
String Variables 327
Numeric Variables 327
Arrays 327
Operators 328
Arithmetic Operators 328
Assignment Operators 329
Comparison Operators 329
Logical Operators 330
Incrementing, Decrementing, and Shorthand Assignment 330
String Concatenation 330
Escape Characters 331
Variable Typing 331
Functions 333
Global Variables 333
Local Variables 333
Using let and const 334
The Document Object Model 337
Another Use for the $ Symbol 339
Using the DOM 340
About document.write 341
Using console.log 341
Using alert 341
Writing into Elements 341
Using document.write 341
Questions 342
15. Expressions and Control Flow in JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
Expressions 343
Literals and Variables 344
Operators 345
Operator Precedence 346
Associativity 346
Relational Operators 347
The with Statement 350
Using onerror 351
Using try...catch 352
Conditionals 353
The if Statement 353
The else Statement 353
The switch Statement 354
The ? Operator 356
Looping 357
while Loops 357
do...while Loops 357
for Loops 358
Breaking Out of a Loop 359
The continue Statement 359
Explicit Casting 360
Questions 361
16. JavaScript Functions, Objects, and Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
JavaScript Functions 363
Defining a Function 363
Returning a Value 365
Returning an Array 367
JavaScript Objects 368
Declaring a Class 368
Creating an Object 370
Accessing Objects 370
The prototype Keyword 370
JavaScript Arrays 373
Numeric Arrays 374
Associative Arrays 375
Multidimensional Arrays 376
Using Array Methods 377
Questions 382
17. JavaScript and PHP Validation and Error Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
Validating User Input with JavaScript 385
The validate.html Document (Part 1) 386
The validate.html Document (Part 2) 388
Regular Expressions 391
Matching Through Metacharacters 392
Fuzzy Character Matching 392
Grouping Through Parentheses 393
Character Classes 394
Indicating a Range 394
Negation 394
Some More Complicated Examples 395
Summary of Metacharacters 398
General Modifiers 399
Using Regular Expressions in JavaScript 400
Using Regular Expressions in PHP 400
Redisplaying a Form After PHP Validation 401
Questions 407
18. Using Asynchronous Communication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
What Is Asynchronous Communication? 410
Using XMLHttpRequest 410
Your First Asynchronous Program 411
Using GET Instead of POST 415
Sending XML Requests 417
Using Frameworks for Asynchronous Communication 421
Questions 421
19. Introduction to CSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Importing a Stylesheet 424
Importing CSS from Within HTML 424
Embedded Style Settings 425
Using IDs 425
Using Classes 425
Using Semicolons 426
CSS Rules 426
Multiple Assignments 426
Using Comments 427
Style Types 428
Default Styles 428
User Styles 428
External Stylesheets 429
Internal Styles 429
Inline Styles 430
CSS Selectors 430
The Type Selector 430
The Descendant Selector 430
The Child Selector 431
The ID Selector 432
The Class Selector 433
The Attribute Selector 434
The Universal Selector 434
Selecting by Group 435
The CSS Cascade 436
Stylesheet Creators 436
Stylesheet Methods 436
Stylesheet Selectors 437
The Difference Between div and span Elements 439
Measurements 441
Fonts and Typography 443
font-family 443
font-style 444
font-size 444
font-weight 445
Managing Text Styles 445
Decoration 446
Spacing 446
Alignment 447
Transformation 447
Indenting 447
CSS Colors 448
Short Color Strings 448
Gradients 449
Positioning Elements 450
Absolute Positioning 450
Relative Positioning 451
Fixed Positioning 451
Pseudoclasses 453
Shorthand Rules 455
The Box Model and Layout 456
Setting Margins 456
Applying Borders 458
Adjusting Padding 459
Object Contents 461
Questions 461
20. Advanced CSS with CSS3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Attribute Selectors 464
Matching Parts of Strings 464
The box-sizing Property 465
CSS3 Backgrounds 466
The background-clip Property 466
The background-origin Property 468
The background-size Property 468
Using the auto Value 469
Multiple Backgrounds 469
CSS3 Borders 471
The border-color Property 471
The border-radius Property 471
Box Shadows 474
Element Overflow 475
Multicolumn Layout 475
Colors and Opacity 477
HSL Colors 477
HSLA Colors 478
RGB Colors 478
RGBA Colors 479
The opacity Property 479
Text Effects 479
The text-shadow Property 479
The text-overflow Property 479
The word-wrap Property 480
Web Fonts 481
Google Web Fonts 482
Transformations 483
3D Transformations 484
Transitions 485
Properties to Transition 485
Transition Duration 486
Transition Delay 486
Transition Timing 486
Shorthand Syntax 487
Questions 488
21. Accessing CSS from JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
Revisiting the getElementById Function 491
The O Function 491
The S Function 492
The C Function 493
Including the Functions 494
Accessing CSS Properties from JavaScript 494
Some Common Properties 495
Other Properties 496
Inline JavaScript 498
The this Keyword 498
Attaching Events to Objects in a Script 499
Attaching to Other Events 499
Adding New Elements 500
Removing Elements 502
Alternatives to Adding and Removing Elements 502
Using Interrupts 503
Using setTimeout 504
Canceling a Timeout 505
Using setInterval 505
Using Interrupts for Animation 507
Questions 509
22. Introduction to jQuery. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
Why jQuery? 512
Including jQuery 512
Choosing the Right Version 513
Downloading 514
Using a Content Delivery Network 514
Customizing jQuery 515
jQuery Syntax 515
A Simple Example 516
Avoiding Library Conflicts 517
Selectors 517
The css Method 517
The Element Selector 518
The ID Selector 519
The Class Selector 519
Combining Selectors 519
Handling Events 520
Waiting Until the Document Is Ready 521
Event Functions and Properties 522
The blur and focus Events 523
The this Keyword 524
The click and dblclick Events 524
The keypress Event 525
Considerate Programming 527
The mousemove Event 527
Other Mouse Events 530
Alternative Mouse Methods 531
The submit Event 532
Special Effects 533
Hiding and Showing 534
The toggle Method 535
Fading In and Out 536
Sliding Elements Up and Down 537
Animations 538
Stopping Animations 541
Manipulating the DOM 542
The Difference Between the text and html Methods 543
The val and attr Methods 543
Adding and Removing Elements 545
Dynamically Applying Classes 547
Modifying Dimensions 547
The width and height Methods 548
The innerWidth and innerHeight Methods 550
The outerWidth and outerHeight Methods 550
DOM Traversal 551
Parent Elements 551
Child Elements 555
Sibling Elements 555
Selecting the Next and Previous Elements 557
Traversing jQuery Selections 559
The is Method 560
Using jQuery Without Selectors 562
The $.each Method 562
The $.map Method 563
Using Asynchronous Communication 563
Using the POST Method 564
Using the GET Method 564
Plug-ins 565
jQuery User Interface 565
Other Plug-ins 566
Questions 566
23. Introduction to jQuery Mobile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
Including jQuery Mobile 570
Getting Started 571
Linking Pages 573
Linking Synchronously 574
Linking Within a Multipage Document 574
Page Transitions 575
Styling Buttons 580
List Handling 582
Filterable Lists 583
List Dividers 585
What Next? 588
Questions 588
24. Introduction to React. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591
What Is the Point of React Anyway? 592
Accessing the React Files 593
Including babel.js 594
Our First React Project 595
Using a Function Instead of a Class 596
Pure and Impure Code: A Golden Rule 598
Using Both a Class and a Function 598
Props and Components 599
The Differences Between Using a Class and a Function 600
React State and Life Cycle 601
Using Hooks (if You Use Node.js) 604
Events in React 604
Inline JSX Conditional Statements 606
Using Lists and Keys 607
Unique Keys 608
Handling Forms 609
Using Text Input 610
Using textarea 612
Using select 613
React Native 615
Creating React Native Apps 615
Further Reading 615
Taking React to the Next Level 616
Questions 616
25. Introduction to HTML5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
The Canvas 619
Geolocation 621
Audio and Video 623
Forms 624
Local Storage 624
Web Workers 624
Questions 625
26. The HTML5 Canvas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
Creating and Accessing a Canvas 627
The toDataURL Function 629
Specifying an Image Type 631
The fillRect Method 631
The clearRect Method 631
The strokeRect Method 632
Combining These Commands 632
The createLinearGradient Method 633
The addColorStop Method in Detail 635
The createRadialGradient Method 636
Using Patterns for Fills 638
Writing Text to the Canvas 640
The strokeText Method 640
The textBaseline Property 641
The font Property 641
The textAlign Property 641
The fillText Method 642
The measureText Method 643
Drawing Lines 643
The lineWidth Property 644
The lineCap and lineJoin Properties 644
The miterLimit Property 646
Using Paths 646
The moveTo and lineTo Methods 647
The stroke Method 647
The rect Method 648
Filling Areas 648
The clip Method 650
The isPointInPath Method 653
Working with Curves 654
The arc Method 654
The arcTo Method 657
The quadraticCurveTo Method 658
The bezierCurveTo Method 659
Manipulating Images 660
The drawImage Method 660
Resizing an Image 661
Selecting an Image Area 661
Copying from a Canvas 663
Adding Shadows 663
Editing at the Pixel Level 665
The getImageData Method 665
The putImageData Method 668
The createImageData Method 668
Advanced Graphical Effects 669
The globalCompositeOperation Property 669
The globalAlpha Property 672
Transformations 672
The scale Method 673
The save and restore Methods 674
The rotate Method 674
The translate Method 675
The transform Method 676
The setTransform Method 678
Questions 679
27. HTML5 Audio and Video. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
About Codecs 682
The Element 683
The Element 685
The Video Codecs 686
Questions 689
28. Other HTML5 Features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
Geolocation and the GPS Service 691
Other Location Methods 692
Geolocation and HTML5 693
Local Storage 696
Using Local Storage 696
The localStorage Object 697
Web Workers 699
Drag and Drop 702
Cross-Document Messaging 704
Other HTML5 Tags 708
Questions 708
29. Bringing It All Together. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709
Designing a Social Networking App 710
On the Website 710
functions.php 710
The Functions 711
header.php 713
setup.php 716
index.php 718
signup.php 719
Checking for Username Availability 719
Logging In 720
checkuser.php 723
login.php 724
profile.php 726
Adding the “About Me” Text 727
Adding a Profile Image 727
Processing the Image 727
Displaying the Current Profile 728
members.php 731
Viewing a User’s Profile 732
Adding and Dropping Friends 732
Listing All Members 732
friends.php 735
messages.php 738
logout.php 741
styles.css 743
javascript.js 745
Questions 746
A. Solutions to the Chapter Questions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771

Скачать WYSIWYG

Post 26-Aug-2021 23:05

[Quote]

JavaScript Cookbook, 3rd Edition
Год издания: 2021
Автор: Scott A.D., MacDonald M., Powers S.
Издательство: O'Reilly
ISBN: 978-1-492-05575-4
Язык: Английский
Формат: PDF/ePub
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Да
Количество страниц: 538
Описание: Why reinvent the wheel every time you run into a problem with JavaScript? This cookbook is chock-full of code recipes for common programming tasks, along with techniques for building apps that work in any browser. You'll get adaptable code samples that you can add to almost any project--and you'll learn more about JavaScript in the process.
The recipes in this book take advantage of the latest features in ECMAScript 2020 and beyond and use modern JavaScript coding standards.
You'll learn how to:
  • Set up a productive development environment with a code editor, linter, and test server
  • Work with JavaScript data types, such as strings, arrays, and BigInts
  • Improve your understanding of JavaScript functions, including arrow functions, closures, and generators
  • Apply object-oriented programming concepts like classes and inheritance
  • Work with rich media in JavaScript, including audio, video, and SVGs
  • Manipulate HTML markup and CSS styles
  • Use JavaScript anywhere with Node.js
  • Access and manipulate remote data with REST, GraphQL, and Fetch
  • Get started with the popular Express application-building framework
  • Perform asynchronous operations with Promises, async/await, and web workers

Примеры страниц

Оглавление

Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
Part I. The JavaScript Language
1. Setting Up a Development Environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 Choosing a Code Editor 2
1.2 Using the Developer Console in Your Browser 3
1.3 Running Blocks of Code in the Developer Console 7
1.4 Using Strict Mode to Catch Common Mistakes 9
1.5 Filling in HTML Boilerplate with Emmet Shortcuts 11
1.6 Installing the npm Package Manager (with Node.js) 13
1.7 Downloading a Package with npm 16
1.8 Updating a Package with npm 20
1.9 Setting Up a Local Test Server 21
1.10 Enforcing Code Standards with a Linter 24
1.11 Styling Code Consistently with a Formatter 28
1.12 Experimenting in a JavaScript Playground 31
2. Strings and Regular Expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.1 Checking for an Existing, Nonempty String 35
2.2 Converting a Numeric Value to a Formatted String 38
2.3 Inserting Special Characters 40
2.4 Inserting Emojis 42
2.5 Using Template Literals for Clearer String Concatenation 43
2.6 Performing a Case-Insensitive String Comparison 45
2.7 Checking If a String Contains a Specific Substring 46
2.8 Replacing All Occurrences of a String 47
2.9 Replacing HTML Tags with Named Entities 48
2.10 Using a Regular Expression to Replace Patterns in a String 49
2.11 Extracting a List from a String 52
2.12 Finding All Instances of a Pattern 54
2.13 Removing Whitespace from the Beginning and End of a String 57
2.14 Converting the First Letter of a String to Uppercase 58
2.15 Validating an Email Address 59
3. Numbers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.1 Generating Random Numbers 61
3.2 Generating Cryptographically Secure Random Numbers 63
3.3 Rounding to a Specific Decimal Place 65
3.4 Preserving Accuracy in Decimal Values 66
3.5 Converting a String to a Number 68
3.6 Converting a Decimal to a Hexadecimal Value 70
3.7 Converting Between Degrees and Radians 71
3.8 Calculating the Length of a Circular Arc 71
3.9 Manipulating Very Large Numbers with BigInt 72
4. Dates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.1 Getting the Current Date and Time 75
4.2 Converting a String to a Date 77
4.3 Adding Days to a Date 79
4.4 Comparing Dates and Testing Dates for Equality 80
4.5 Calculating the Time Elapsed Between Two Dates 82
4.6 Formatting a Date Value as a String 84
5. Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.1 Checking If an Object Is an Array 88
5.2 Iterating Over All the Elements in an Array 88
5.3 Checking If Two Arrays Are Equal 90
5.4 Breaking Down an Array into Separate Variables 93
5.5 Passing an Array to a Function That Expects a List of Values 94
5.6 Cloning an Array 95
5.7 Merging Two Arrays 97
5.8 Copying a Portion of an Array by Position 98
5.9 Extracting Array Items That Meet Specific Criteria 100
5.10 Emptying an Array 101
5.11 Removing Duplicate Values 102
5.12 Flattening a Two-Dimensional Array 103
5.13 Searching Through an Array for Exact Matches 104
5.14 Searching Through an Array for Items That Meet Specific Criteria 105
5.15 Removing or Replacing Array Elements 107
5.16 Sorting an Array of Objects by a Property Value 108
5.17 Transforming Every Element of an Array 109
5.18 Combining an Array’s Values in a Single Calculation 110
5.19 Validating Array Contents 112
5.20 Creating a Collection of Nonduplicated Values 113
5.21 Creating a Key-Indexed Collection of Items 114
6. Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
6.1 Passing a Function as an Argument to Another Function 117
6.2 Using Arrow Functions 121
6.3 Providing a Default Parameter Value 124
6.4 Creating a Function That Accepts Unlimited Arguments 125
6.5 Using Named Function Parameters 126
6.6 Creating a Function That Stores its State with a Closure 129
6.7 Creating a Generator Function That Yields Multiple Values 131
6.8 Reducing Redundancy by Using Partial Application 135
6.9 Fixing this with Function Binding 138
6.10 Implementing a Recursive Algorithm 141
7. Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
7.1 Checking if an Object Is a Certain Type 145
7.2 Using an Object Literal to Bundle Data 147
7.3 Checking If an Object Has a Property 150
7.4 Iterating Over All the Properties of an Object 152
7.5 Testing for an Empty Object 154
7.6 Merging the Properties of Two Objects 155
7.7 Customizing the Way a Property Is Defined 156
7.8 Preventing Any Changes to an Object 159
7.9 Intercepting and Changing Actions on an Object with a Proxy 161
7.10 Cloning an Object 164
7.11 Making a Deep Copy of an Object 166
7.12 Creating Absolutely Unique Object Property Keys 168
7.13 Creating Enums with Symbol 170
8. Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
8.1 Creating a Reusable Class 173
8.2 Adding Properties to a Class 177
8.3 Giving a Class a Better String Representation 182
8.4 Using the Constructor Pattern to Make a Custom Class 183
8.5 Supporting Method Chaining in Your Class 186
8.6 Adding Static Methods to a Class 188
8.7 Using a Static Method to Create Objects 190
8.8 Inheriting Functionality from Another Class 192
8.9 Organizing Your JavaScript Classes with Modules 197
9. Asynchronous Programming. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
9.1 Updating the Page During a Loop 202
9.2 Using a Function That Returns a Promise 204
9.3 Promisifying an Asynchronous Function That Uses a Callback 208
9.4 Executing Multiple Promises Concurrently 211
9.5 Waiting for a Promise to Finish with Await and Async 214
9.6 Creating an Asynchronous Generator Function 218
9.7 Using a Web Worker to Perform a Background Task 220
9.8 Adding Progress Support to a Web Worker 224
10. Errors and Testing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
10.1 Catching and Neutralizing an Error 227
10.2 Catching Different Types of Errors 230
10.3 Catching Asynchronous Errors 232
10.4 Detecting Unhandled Errors 233
10.5 Throwing a Standard Error 237
10.6 Throwing a Custom Error 239
10.7 Writing Unit Tests for Your Code 241
10.8 Tracking Test Code Coverage 247
Part II. JavaScript in the Browser
11. Browser Tools. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
11.1 Debugging JavaScript 253
11.2 Analyzing Runtime Performance 255
11.3 Identifying Unused JavaScript 257
11.4 Using Lighthouse to Measure Best Practices 259
12. Working with HTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
12.1 Accessing a Given Element and Finding Its Parent and Child Elements 263
12.2 Traversing the Results from querySelectorAll() with forEach() 266
12.3 Adding Click Functionality to an Element 267
12.4 Finding All Elements That Share an Attribute 269
12.5 Accessing All Elements of a Specific Type 269
12.6 Discovering Child Elements Using the Selectors API 272
12.7 Changing an Element’s Class Value 273
12.8 Setting an Element’s Style Attribute 274
12.9 Adding Text to a New Paragraph 276
12.10 Inserting a New Element in a Specific DOM Location 278
12.11 Checking If a Checkbox Is Checked 279
12.12 Adding Up Values in an HTML Table 280
12.13 Deleting Rows from an HTML Table 283
12.14 Hiding Page Sections 285
12.15 Creating Hover-Based Pop-Up Info Windows 287
12.16 Validating Form Data 289
12.17 Highlighting Form Errors and Accessibility 292
12.18 Creating an Accessible Automatically Updated Region 298
13. Fetching Remote Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
13.1 Requesting Remote Data with Fetch 301
13.2 Using XMLHttpRequest 305
13.3 Submitting a Form 306
13.4 Populating a Selection List from the Server 310
13.5 Parsing Returned JSON 314
13.6 Fetching and Parsing XML 316
13.7 Sending Binary Data and Loading into an Image 318
13.8 Sharing HTTP Cookies Across Domains 319
13.9 Using Websockets to Establish a Two-Way Communication Between
Client and Server 320
13.10 Long Polling a Remote Data Source 322
14. Data Persistence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
14.1 Persisting Information with Cookies 325
14.2 Using sessionStorage for Client-Side Storage 328
14.3 Creating a localStorage Client-Side Data Storage Item 334
14.4 Persisting Larger Chunks of Data on the Client Using IndexedDB 338
14.5 Simplifying IndexedDB with a Library 341
15. Working with Media. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
15.1 Adding JavaScript to SVG 345
15.2 Accessing SVG from a Web Page Script 348
15.3 Creating an SVG Bar Chart with D3 350
15.4 Integrating SVG and the Canvas Element in HTML 354
15.5 Running a Routine When an Audio File Begins Playing 356
15.6 Controlling Video from JavaScript with the video Element 357
16. Writing Web Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
16.1 Bundling JavaScript 361
16.2 JavaScript and the Mobile Web 363
16.3 Writing a Progressive Web Application 366
16.4 Testing and Profiling a Progressive Web Application 373
16.5 Getting the Value of the Current URL 377
16.6 Redirecting a URL 379
16.7 Copying Text to a User’s Clipboard 380
16.8 Enabling a Mobile-Like Notification in the Desktop Browser 382
16.9 Loading a File Locally in the Browser 385
16.10 Extending the Possible with Web Components 388
16.11 Choosing a Front-End Framework 391
Part III. Node.js
17. Node Basics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
17.1 Managing Node Versions with Node Version Manager 397
17.2 Responding to a Simple Browser Request 400
17.3 Interactively Trying Out Node Code Snippets with REPL 402
17.4 Reading and Writing File Data 405
17.5 Getting Input from the Terminal 410
17.6 Getting the Path to the Current Script 412
17.7 Working with Node Timers and Understanding the Node Event Loop 413
18. Node Modules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
18.1 Searching for a Specific Node Module via npm 420
18.2 Converting Your Library into a Node Module 421
18.3 Taking Your Code Across Module Environments 422
18.4 Creating an Installable Node Module 425
18.5 Writing Multiplatform Libraries 431
18.6 Unit Testing Your Modules 435
19. Managing Node. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
19.1 Using Environment Variables 439
19.2 Managing Callback Hell 441
19.3 Accessing Command-Line Functionality Within a Node Application 444
19.4 Passing Command-Line Arguments 447
19.5 Creating a Command-Line Utility with Help from Commander 448
19.6 Keeping a Node Instance Up and Running 450
19.7 Monitoring Application Changes and Restarting During Local
Development 452
19.8 Scheduling Repeat Tasks 453
19.9 Testing the Performance and Capability of Your WebSockets Application 455
20. Remote Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
20.1 Fetching Remote Data 457
20.2 Screen Scraping 459
20.3 Accessing JSON-Formatted Data via a RESTful API 461
21. Building Web Applications with Express. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
21.1 Using Express to Respond to Requests 465
21.2 Using the Express-Generator 469
21.3 Routing 474
21.4 Working with OAuth 476
21.5 OAuth 2 User Authentication with Passport.js 486
21.6 Serving Up Formatted Data 491
21.7 Building a RESTful API 492
21.8 Building a GraphQL API 496
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501

Скачать WYSIWYG

Post 20-Aug-2021 16:15

[Quote]

Deep Learning with JavaScript: Neural networks in TensorFlow.js / JаvaScript для глубокого обучения: TensorFlow.js
Год издания: 2021
Автор: Cai Sh., Bileschi S., Nielsen E.D., Chollet F. / Шолле Ф., Нильсон Э., Байлесчи С., Цэй Ш.
Издательство: Питер
ISBN: 978-5-4461-1697-3
Серия: Библиотека программиста
Язык: Русский
Формат: PDF
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Да
Количество страниц: 576
Описание: Пора научиться использовать TensorFlow.js для построения моделей глубокого обучения, работающих непосредственно в браузере! Умные веб-приложения захватили мир, а реализовать их в браузере или серверной части позволяет TensorFlow.js. Данная библиотека блестяще портируется, ее модели работают везде, где работает JаvaScript. Специалисты из Google Brain создали книгу, которая поможет решать реальные прикладные задачи. Вы не будете скучать над теорией, а сразу освоите базу глубокого обучения и познакомитесь с продвинутыми концепциями ИИ на примерах анализа текста, обработки речи, распознавания образов и самообучающегося игрового искусственного интеллекта.

Примеры страниц

Оглавление

Предисловие ................................................................................................................. 13
Введение ...................................................................................................................... 15
Часть I. Актуальность и основные понятия
Глава 1. Глубокое обучение и JavaScript ...................................................................... 26
Часть II. Введение в TensorFlow.js
Глава 2. Приступим: простая линейная регрессия в TensorFlow.js ................................ 62
Глава 3. Вводим нелинейность: теперь не только взвешенные суммы ....................... 107
Глава 4. Распознавание изображений и звуковых сигналов с помощью
сверточных сетей ........................................................................................ 149
Глава 5. Перенос обучения: переиспользование предобученных нейронных сетей ... 187
Часть III. Продвинутые возможности глубокого обучения
с TensorFlow.js
Глава 6. Работа с данными ........................................................................................ 238
Глава 7. Визуализация данных и моделей ................................................................. 287
Глава 8. Недообучение, переобучение и универсальный технологический процесс
машинного обучения ................................................................................... 318
Глава 9. Глубокое обучение для последовательностей и текста ................................ 339
Глава 10. Генеративное глубокое обучение .............................................................. 384
Глава 11. Основы глубокого обучения с подкреплением ........................................... 427
Часть IV. Резюме и заключительное слово
Глава 12. Тестирование, оптимизация и развертывание моделей ............................. 476
Глава 13. Резюме, заключительные слова и дальнейшие источники информации ..... 517
Приложения
Приложение A. Установка библиотеки tfjs-node-gpu и ее зависимостей ................... 544
Приложение Б. Краткое руководство по тензорам и операциям над ними
в TensorFlow.js ................................................................................. 549
Доп. информация: https://github.com/tensorflow/tfjs-examples

Скачать WYSIWYG

Post 17-Aug-2021 19:40

[Quote]

ASP.NET Core in Action, 2nd Edition
Год издания: 2021
Автор: Lock Andrew
Издательство: Manning
ISBN: 9781617298301
Язык: Английский
Формат: PDF
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Да
Количество страниц: 832
Описание: ASP.NET Core in Action, Second Edition is a comprehensive guide to creating web applications with ASP.NET Core 5.0. Go from basic HTTP concepts to advanced framework customization. Illustrations and annotated code make learning visual and easy. Master logins, dependency injection, security, and more. This updated edition covers the latest features, including Razor Pages and the new hosting paradigm.
what's inside:
  • Developing apps for Windows and non-Windows servers
  • Configuring applications
  • Building custom components
  • Logging, testing, and security
about the reader:
For intermediate C# developers.
about the author:
Andrew Lock is a Microsoft MVP who has worked with ASP.NET Core since before its first release.

Примеры страниц

Оглавление

PART 1 GETTING STARTED WITH ASP.NET CORE . ....................1
1 ■ Getting started with ASP.NET Core 3
2 ■ Your first application 25
3 ■ Handling requests with the middleware pipeline 58
4 ■ Creating a website with Razor Pages 91
5 ■ Mapping URLs to Razor Pages using routing 122
6 ■ The binding model: Retrieving and validating user input 156
7 ■ Rendering HTML using Razor views 188
8 ■ Building forms with Tag Helpers 223
9 ■ Creating a Web API for mobile and client
applications using MVC 255
PART 2 BUILDING COMPLETE APPLICATIONS ..........................289
10 ■ Service configuration with dependency injection 291
11 ■ Configuring an ASP.NET Core application 330
12 ■ Saving data with Entity Framework Core 364
13 ■ The MVC and Razor Pages filter pipeline 398
14 ■ Authentication: Adding users to your
application with Identity 436
15 ■ Authorization: Securing your application 470
16 ■ Publishing and deploying your application 503
PART 3 EXTENDING YOUR APPLICATIONS ...............................537
17 ■ Monitoring and troubleshooting errors with logging 539
18 ■ Improving your application’s security 572
19 ■ Building custom components 609
20 ■ Building custom MVC and Razor Pages components 640
21 ■ Calling remote APIs with IHttpClientFactory 667
22 ■ Building background tasks and services 689
23 ■ Testing your application 714
Code: https://www.manning.com/downloads/2155 (or https://github.com/andrewlock/asp-dot-net-core-in-action-2e )
Errata: https://www.manning.com/downloads/2318
 

The time now is: Today 17:09

All times are GMT + 4 Hours