К курсам
AI020 Professional

Элегантный JavaScript: Современное введение в программирование

Полное руководство по современной разработке с использованием JavaScript. Курс охватывает основные принципы программирования, спецификацию языка JavaScript, интеграцию с веб-браузерами и разработку на стороне сервера с помощью Node.js, включая пять приложений из реального мира.

5.0
30.0h
561 учеников
0 лайки
Искусственный интеллект
Начать обучение

Обзор курса

📚 Краткое содержание

Полное руководство по современной программированию на языке JavaScript. В курсе рассматриваются основные принципы программирования, спецификация языка JavaScript, интеграция с веб-браузерами и разработка серверной части с использованием Node.js, включая пять приложений из реальной жизни.

Глубокое и изящное погружение в суть программирования на языке JavaScript.

Автор: Мариан Хавербеке

Благодарности: Поддерживается 454 финансовых спонсорами; иллюстрации от Васифа Хайдера, Макса Сянту, Маргариты Мартинес, Хосе Менора, Джима Тирни, Дайла МакГрегора, Джеффа Авваллоне, Томаса Палефа и Антонио Пердомо Пастора.

🎯 Цели обучения

  1. Определить, что такое программа, и объяснить различные уровни абстракции в языках программирования.
  2. Использовать числа и арифметические операторы в JavaScript для получения значений.
  3. Объявлять и обновлять переменные, соблюдая правила именования и ограничения на зарезервированные слова.
  4. Реализовывать надежный контроль потока с помощью do-циклов, for-циклов и операторов switch, поддерживая чистый код с помощью отступов и комментариев.
  5. Определять и вызывать функции с использованием нескольких нотаций, обрабатывая параметры, необязательные аргументы и вложенные лексические области видимости.
  6. Применять продвинутые функциональные концепции, такие как рекурсия, замыкания и стек вызовов, для решения сложных алгоритмических задач.
  7. Использовать специализированные методы объектов и массивов для управления сложными структурами данных и строками.
  8. Реализовывать функции высшего порядка (filter, map, reduce) для абстрагирования логики и композиции преобразований данных.
  9. Навигировать и манипулировать цепочкой прототипов для создания структурированных, повторно используемых экземпляров объектов и полиморфных интерфейсов.
  10. Реализовывать полиморфные интерфейсы для обработки сложной визуализации данных (таблиц).

🔹 Урок 1: Основы JavaScript и структура программы

Обзор: Этот урок знакомит с фундаментальными понятиями программирования на языке JavaScript, переходя от философского определения программы к практической механике написания кода. Учащиеся исследуют, как данные представляются через типы и биты, как манипулировать значениями с помощью операторов, а также как структурировать программы с помощью переменных, выражений и операторов. Также рассматривается уникальное поведение JavaScript, такое как автоматическое приведение типов и короткое замыкание вычислений.

Результаты обучения:

  • Определить, что такое программа, и объяснить различные уровни абстракции в языках программирования.
  • Использовать числа и арифметические операторы в JavaScript для получения значений.
  • Объявлять и обновлять переменные, соблюдая правила именования и ограничения на зарезервированные слова.

🔹 Урок 2: Функции и сложные структуры данных

Обзор: Этот урок исследует основные строительные блоки структурного программирования, сосредоточившись на продвинутых методах управления потоком, функциональных подходах и организации сложных данных. Учащиеся научатся инкапсулировать логику внутри функций, управлять видимостью переменных через области видимости и замыкания, а также работать с изменяемыми объектами для анализа реальных данных, таких как статистические корреляции.

Результаты обучения:

  • Реализовывать надежный контроль потока с помощью do-циклов, for-циклов и операторов switch, поддерживая чистый код с помощью отступов и комментариев.
  • Определять и вызывать функции с использованием нескольких нотаций, обрабатывая параметры, необязательные аргументы и вложенные лексические области видимости.
  • Применять продвинутые функциональные концепции, такие как рекурсия, замыкания и стек вызовов, для решения сложных алгоритмических задач.

🔹 Урок 3: Функции высшего порядка и прототипы

Обзор: Этот урок исследует переход от базовой манипуляции данными к продвинутым функциональным и объектно-ориентированным паттернам в JavaScript. Рассматриваются эффективные методы хранения данных с помощью Map и глобальных объектов, мощь функций высшего порядка для абстрагирования действий (фильтрация, трансформация, свёртка), а также внутренняя механика системы объектов в JavaScript, включая прототипы, конструкторы и полиморфизм.

Результаты обучения:

  • Использовать специализированные методы объектов и массивов для управления сложными структурами данных и строками.
  • Реализовывать функции высшего порядка (filter, map, reduce) для абстрагирования логики и композиции преобразований данных.
  • Навигировать и манипулировать цепочкой прототипов для создания структурированных, повторно используемых экземпляров объектов и полиморфных интерфейсов.

🔹 Урок 4: Объектно-ориентированное программирование и управление ошибками

Обзор: Этот урок исследует продвинутые объектно-ориентированные паттерны в JavaScript, сосредоточившись на полиморфизме через интерфейсы таблицы и проектировании имитационной экосистемы ("Электронная жизнь"). Затем переходит к вопросам надежности программного обеспечения, охватывая "Строгий режим", техники отладки и важность структурированного тестирования для минимизации типичных ошибок программистов.

Результаты обучения:

  • Реализовывать полиморфные интерфейсы для обработки сложной визуализации данных (таблиц).
  • Сравнивать наследование и композицию для построения расширяемых структур объектов.
  • Управлять контекстом выполнения (this) внутри функций высшего порядка и методов объектов.

🔹 Урок 5: Сопоставление шаблонов и модульность

Обзор: Этот урок рассматривает двойную потребность современного программирования: обработку сложных строковых данных и организацию кода в удобные для поддержки структуры. Учащиеся узнают, как использовать регулярные выражения для описания и манипулирования текстовыми шаблонами, а затем изучают модульность для изоляции кода, управления пространствами имён и облегчения повторного использования.

Результаты обучения:

  • Создавать и тестировать регулярные выражения с использованием литеральной и конструкторской нотации.
  • Реализовывать продвинутые техники сопоставления шаблонов, включая группировку, обратный откат и нежадное повторение.
  • Применять принципы модульного проектирования для предотвращения загрязнения пространства имён и отделения компонентов программы.

🔹 Урок 6: Проектирование языков и среда веба

Обзор: Этот урок исследует переход от структурированного проектирования программного обеспечения к созданию пользовательского языка программирования под названием "Яйцо". Он также связывает эти концепции со средой веба, подробно описывая, как сети, HTML и модель документа (DOM) создают программный интерфейс для браузеров. Учащиеся научатся управлять сложностью кода с помощью модульности и манипулировать живыми веб-документами с помощью JavaScript.

Результаты обучения:

  • Реализовывать надёжные системы модулей с использованием функции define и управлять сложными зависимостями.
  • Создавать функциональный парсер и интерпретатор для доменного языка, включая управление областями видимости и поддержку функций.
  • Объяснять архитектуру веба, включая протоколы TCP/IP, структуру HTML и безопасность браузерной песочницы.

🔹 Урок 7: События и интерактивные платформы

Обзор: Этот урок исследует синергию между манипулированием моделью документа (DOM), стилизацией с помощью CSS и сложной обработкой событий для создания интерактивных веб-приложений и игр. Учащиеся научатся управлять макетом и анимацией, управлять асинхронной природой пользовательских вводов, оптимизировать производительность с помощью временных техник и архитектурой платформенной игры на основе сетки с применением объектно-ориентальных принципов.

Результаты обучения:

  • Манипулировать макетом и стилями DOM: использовать JavaScript для чтения размеров элементов, применения каскадных стилей и анимации элементов с помощью позиционирования по CSS и тригонометрии.
  • Освоить управление событиями: реализовать продвинутую обработку событий, включая контроль распространения, предотвращение действия по умолчанию и управление специализированными событиями (клавиатура, мышь, прокрутка, фокус).
  • Оптимизировать выполнение скриптов: применять веб-воркеры для фоновой обработки и использовать отложенную обработку/ограничение частоты для управления высокочастотными событиями.

🔹 Урок 8: Графика на холсте и сетевые протоколы

Обзор: Этот урок исследует переход от рендеринга игр на основе DOM к высокопроизводительному API HTML5 Canvas, а также основные механизмы физики 2D-платформеров. Учащиеся научатся реализовывать сложную игровую логику, включая гравитацию и обнаружение столкновений, одновременно осваивая императивные техники рисования. Кроме того, урок знакомит с протоколом HTTP и объектом XMLHttpRequest для обработки клиент-серверного взаимодействия.

Результаты обучения:

  • Реализовывать детектирование столкновений на основе сетки и движение под действием гравитации в игровой среде.
  • Использовать API HTML5 Canvas для рендеринга путей, кривых, изображений и анимированных спрайтов.
  • Применять координатные преобразования (масштабирование, поворот, отражение) и управлять состоянием контекста с помощью save и restore.

🔹 Урок 9: Расширенные формы и постоянные приложения

Обзор: Этот урок исследует продвинутые методы веб-разработки, сосредоточившись на асинхронной коммуникации через XMLHttpRequest и Promises, глубокой интеграции с полями форм HTML и сохранении данных на стороне клиента. Учащиеся научатся управлять сетевыми запросами с помощью кастомных заголовков и обрабатывать ошибки в асинхронных потоках, создавая модульное приложение для рисования и инструмент для заметок с сохранением состояния.

Результаты обучения:

  • Настроить и выполнить асинхронные сетевые запросы с использованием XMLHttpRequest и цепочек на основе Promise.
  • Манипулировать сложными поведениями форм, включая управление фокусом, отключение полей и работу с файлами.
  • Реализовывать хранение данных на стороне клиента с помощью localStorage и sessionStorage для поддержания состояния приложения.

🔹 Урок 10: Разработка на сервере с использованием Node.js

Обзор: Этот урок закрывает пробел между продвинутой клиентской интерактивностью и серверной логикой. Учащиеся сначала освоят сложные инструменты манипулирования холстом и ограничения безопасности браузера, а затем перейдут в среду Node.js для создания асинхронных файловых серверов и реальных веб-приложений в реальном времени с использованием долгого опроса и маршрутизации по протоколу REST.

Результаты обучения:

  • Реализовывать продвинутые инструменты рисования (Линия, Стирание, Брызги, Заливка) и управлять безопасностью холста (загрязнение).
  • Выполнять серверные скрипты с использованием Node.js, управлять зависимостями через NPM и обрабатывать асинхронный ввод-вывод с помощью колбэков и Promise.
  • Создавать функциональный HTTP-сервер, способный выполнять манипуляции с файлами, обрабатывать запросы в формате JSON и обеспечивать обновления в реальном времени через долгий опрос.