изучаем JS с акцентом на практической составляющей / Хабр
aio350Время на прочтение 3 мин
Количество просмотров10K
Разработка веб-сайтов *JavaScript *Программирование *
Доброго времени суток, друзья!
Когда речь заходит об изучении JavaScript, будь то первое знакомство с языком или углубление имеющихся знаний, найти в «интернетах» теоретические материалы не составляет особого труда. Мой топ-5:
- MDN Web Docs
- «Современный учебник JavaScript» Ильи Кантора
- «Вы не знаете JS» Кайла Симпсона
- «JavaScript. Подробное руководство» Дэвида Флэнагана
- «Learning JavaScript Design Patterns» by Addy Osmani
Однако, когда дело касается практических аспектов JavaScript, информацию приходится собирать буквально по крупицам.
Предлагаю вашему вниманию «Тотальный JavaScript».
Вот что вы найдете в этом репозитории:
- Огромное количество сниппетов (утилит, вспомогательных функций), разделенных по типам данных — не могу назвать точного количества (порядка 4000 строк кода без комментариев и пробелов). Следует отметить, что не все функции являются настоящими сниппетами с точки зрения возможности их использования (как есть) в реальных приложениях, некоторые — всего лишь эксперименты, демонстирующие те или иные (безграничные?) возможности языка. Коллекция все время пополняется
- 230 практических вопросов — приводится пример кода, необходимо выполнить его в уме и решить, что будет выведено в консоль. Конечно, на практике мы редко занимается чем-то подобным, ведь гораздо легче и, главное, быстрее «законсолить» кусок «подозрительного» кода. Однако, на мой взгляд, умение решать подобные задачи как нельзя лучше демонстрирует понимание основных принципов и характерных особенностей работы JavaScript. В качестве недостатка этого раздела отмечу почти полное отсутствие вопросов по классам и this. Постараюсь в ближайшем будущем его устранить
- 68 задач разного уровня сложности — подборка задач из учебника Ильи Кантора (большинство), немного адаптированных под нужды реальных приложений. Структура раздела, в основном, следует структуре учебника с небольшими лирическими отступлениями
- Паттерны проектирования — подробное описание и примеры всех паттернов, которые называет Банда Четырех в своей книге «Паттерны объектно-ориентированного программирования», на JavaScript (также в разделе имеются примеры на TypeScript — смотрите исходный код). При подготовке данного раздела многое позаимствовано у Refactoring Guru, за что ему (или им) огромное спасибо
- Что за черт, JavaScript? — список тонких моментов работы JavaScript. Этот раздел не слишком актуален, учитывая возможности современного JS, однако интересен тем, что позволяет узнать, каким был язык раньше, до того, как завоевал мир веб-разработки. Де факто, он остается прежним, но следование простым правилам (например, использование «const» или «let» вместо «var» или «===» вместо «==») позволяет решить большую часть проблем, с которыми сталкивались разработчики в прошлом
Уверен, что каждый найдет для себя что-нибудь интересное.
Также в репозитории имеется ссылка на приложение с вопросами (список и интерективная викторина) и задачами. Оно вполне работоспособное (и даже прогрессивное), но, признаюсь, нуждается в существенной переработке. Займусь этим, когда появится свободное время.
Как всегда, буду рад любой форме обратной связи. При обнаружении опечаток, ошибок, неточностей и, особенно, неработающего кода (код протестирован, но никто не застрахован от ошибок) не стесняйтесь писать в личку и делать «пуллы».
Благодарю за внимание. Всех, кому «дым отечества и сладок, и приятен», с наступающим праздником.
Теги:
- javascript
- snippets
- task
- problem
- utils
- helpers
- patterns
- education
- learning
- задачи
- сниппеты
- утилиты
- изучение
- образование
Хабы:
- Разработка веб-сайтов
- JavaScript
- Программирование
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 3
Igor Agapov @aio350
JavaScript Developer
Изучаем JavaScript с нуля.
С чего начать изучение?JavaScript — популярный мультипарадигменный язык программирования, поддерживающий объектно-ориентированный, функциональный и императивный стили. Сегодня он широко применяется в браузерах в качестве языка сценариев для придания веб-страницам интерактивности. В этой статье мы поговорим о том, как изучить JavaScript и с чего лучше начать.
Несколько советов
Изучать JavaScript можно разными способами. Вы можете записаться на соответствующие платные курсы или приступить к изучению самостоятельно. Курсы позволят изучить язык быстрее, т. к. самостоятельное изучение требует очень высокой мотивации, настойчивости и дисциплинированности. Кроме того, самостоятельное обучение имеет тенденцию длиться долго, если не бесконечно. Тем не менее при наличии желания и возможности такой подход тоже имеет право на жизнь.
Какой бы путь вы не выбрали, помните, что прежде, чем начать изучение, желательно пройти курс или самостоятельно изучить основы HTML и CSS. Считается, что после этого изучать JavaScript будет проще.
Если выбрали самостоятельное изучение, обязательно составьте план. Не приступайте к занятиям в чересчур утомлённом виде, иначе вы станете себя заставлять, а это плохо. Также в процессе обучения используйте современные техники управления временем, например, известный метод помидора (25 минут занимаетесь, 5 минут отдыхаете). Есть и другие методики, позволяющие повысить продуктивность.
Изучаем основы
Всё начинается с основ. Так как язык очень популярен, найти о нём информацию в интернете будет несложно. Но в этом-то и проблема, так как информации настолько много, что в ней легко потеряться. Дабы сократить поле поиска, обычно рекомендуют следующий список ресурсов: 1. MDN’s JavaScript Guide — руководство, охватывающее синтаксис, циклы, типы, циклы, выражения, функции, форматирование и многое другое. 2. You Don’t Know JS — здесь вы найдёте серию книг Кайла Симпсона. В них есть информация, которая поможет изучить язык программирования JavaScript на более глубоком уровне.
К сожалению, все эти ресурсы рассчитаны на тех, кто хорошо знает английский язык. Впрочем, в IT без английского сегодня никуда. Если же вас интересуют бесплатные курсы на русском, неплохой выбор есть на платформе Stepic.org.
Во время получения базовых знаний вы приступите к разработке первых простых программ. Главное — не лениться, и вы быстро почувствуете, что кое-что понимаете в этом языке программирования. Таким образом вы получите дополнительную мотивацию к изучению.
Когда сталкиваетесь с непосильной для вас задачей, изучайте форумы или обращайтесь за помощью на платформу вопросов и ответов StackOverflow. Не стесняйтесь спрашивать, вы ведь учитесь.
Я освоил основы. Что дальше?
Достигнув определённых успехов, нужно продолжать изучение на углубленном уровне. Здесь помогут следующие книги: 1.Effective JavaScript: 68 Specific Ways to Harness the Power of JavaScript. В этой книге рассказано про 68 подходов по написанию кода, причём каждый подход сопровождается примерами. 2. JavaScript — The Good Parts — довольно устаревшая книга. Но несмотря на это, она до сих пор учит писать эффективный и красивый код. 3. JavaScript Design Patters — здесь рассказано о том, как использовать современные шаблоны. Книга написана простым языком. 4. Test-Driven JavaScript Development — пожалуй, одна из лучших работ по обучению тестированию JavaScript-кода.
Книги книгами, но без практики никуда, поэтому нужно учиться и практиковаться одновременно. Обязательно создайте свой аккаунт на GitHub, старайтесь ежедневно писать пусть даже простой код, делитесь проектами, изучайте отзывы.
Если в вашем городе случаются мастер-классы и конференции JavaScript-разработчиков, не пропускайте подобные встречи — они могут быть очень полезны.
Заключение
Изучение JavaScript – дело непростое, особенно если речь идёт о самостоятельном обучении. Но результат того стоит. При этом вам стоит понимать, что даже освоив этот язык программирования и устроившись на высокооплачиваемую работу, учиться вам придётся всегда — это необходимо, чтобы оставаться на плаву, ведь технологии постоянно меняются и обновляются. Как говорится, поток информации бесконечен, поэтому опытный разработчик учится постоянно. А чтобы ничего не пропустить, многие подписываются на специализированные издания типа JSK Daily, JavaScript World, Hashnode Times, Frontend Buzz, JavaScript Weekly.
Кроме того, всегда можно пойти на углубленные курсы для опытных разработчиков и перейти на более высокий профессиональный уровень. Сделать это вам поможет OTUS:
учебных онлайн-курсов по JavaScript | LinkedIn Learning, ранее Lynda.com
- Все темы
Посмотрите наши обучающие видеоролики по JavaScript и научитесь программировать, создавать и создавать массивы и функции JavaScript. Узнайте, как писать код JavaScript для создания сайтов HTML5 и других интерактивных веб-сайтов.
Присоединяйся сейчас
Изучение JavaScript, 3-е издание [Книга]
Перейти к основному содержанию
Описание книги
Это захватывающее время для изучения JavaScript. Теперь, когда последняя спецификация JavaScript — ECMAScript 6.0 (ES6) — завершена, научиться разрабатывать высококачественные приложения на этом языке стало проще и приятнее, чем когда-либо. В этой практической книге программисты (как любители, так и профессионалы) знакомятся с ES6 без излишеств, а также с некоторыми соответствующими инструментами и методами.
Автор Итан Браун ( Веб-разработка с помощью Node и Express ) не только проведет вас через простые и понятные темы (переменные, поток управления, массивы), но также охватит сложные концепции, такие как функциональное и асинхронное программирование. Вы узнаете, как создавать мощные и отзывчивые веб-приложения на клиенте или с помощью Node.js на сервере.
- Используйте ES6 уже сегодня и перекомпилируйте код в портативный ES5
- Преобразуйте данные в формат, который может использовать JavaScript
- Понимание основ использования и механики функций JavaScript
- Изучение объектов и объектно-ориентированного программирования
- Использование новых концепций, таких как итераторы, генераторы и прокси
- Понимание сложностей асинхронного программирования
- Работа с объектной моделью документа для браузерные приложения
- Изучение основ Node. js для разработки серверных приложений
Содержание
- Предисловие
- Краткая история JavaScript
- ES6
- Для кого эта книга
- Чем эта книга не является
- Условные обозначения, используемые в этой книге
- О’Рейли Сафари
- Как с нами связаться
- Благодарности
- 1. Ваше первое приложение
- Когда начать
- Инструменты
- Комментарий к комментариям
- Начиная
- Консоль JavaScript
- Рисование графических примитивов
- Автоматизация повторяющихся задач
- Обработка пользовательского ввода
- Привет, мир
- 2. Разработка JavaScript
- Предпосылки
- Корень вашего проекта
- Что ты пытаешься сделать?
- Узловые приложения
- Установка узла
- Запуск программ JavaScript с Node
- Управление пакетами: npm
- Веб-приложения
- Линтинг
- Заключение
- Предпосылки
- 3. Литералы, переменные, константы и типы данных
- Переменные и константы
- Переменные или константы: что использовать?
- Имена идентификаторов
- Литералы
- Примитивные типы и объекты
- Числа
- Струны
- Побег
- Специальные символы
- Строки шаблона
- Многострочные строки
- Числа как строки
- Булевы значения
- Символы
- нулевой и неопределенный
- Объекты
- Числовые, строковые и логические объекты
- Массивы
- Завершающие запятые в объектах и массивах
- Даты
- Обычные выражения
- Карты и наборы
- Преобразование типа данных
- Преобразование в числа
- Преобразование в строку
- Преобразование в логическое значение
- Заключение
- 4. Управление потоком
- Учебник по управлению потоком
- в то время как циклы
- Блочные операторы
- пробел
- Вспомогательные функции
- оператор if…else
- do…в то время как Цикл
- для цикла
- если Заявление
- Собираем все вместе
- Операторы управления потоком в JavaScript
- Исключения потока управления
- Цепочка операторов if…else
- Метасинтаксис
- Дополнительно для циклических паттернов
- операторы переключения
- для. .. в цикле
- for… цикла
- Полезные шаблоны потока управления
- Использование continue для сокращения условной вложенности
- Использование break или return, чтобы избежать ненужных вычислений
- Использование значения индекса после завершения цикла
- Использование индексов по убыванию при изменении списков
- Заключение
- Учебник по управлению потоком
- 5. Выражения и операторы
- Операторы
- Арифметические операторы
- Приоритет оператора
- Операторы сравнения
- Сравнение чисел
- Конкатенация строк
- Логические операторы
- Истинные и ложные ценности
- И, ИЛИ и НЕ
- Оценка короткого замыкания
- Логические операторы с небулевыми операндами
- Условный оператор
- Оператор запятой
- Оператор группировки
- Побитовые операторы
- оператор typeof
- недействительный оператор
- Операторы присваивания
- Присвоение деструктуризации
- Операторы объектов и массивов
- Выражения в строках шаблона
- Выражения и шаблоны потока управления
- Преобразование операторов if. ..else в условные выражения
- Преобразование операторов if в сокращенные логические выражения ИЛИ
- Заключение
- 6. Функции
- Возвращаемые значения
- Звонок или ссылка
- Аргументы функции
- Делают ли аргументы функцию?
- Разрушающие аргументы
- Аргументы по умолчанию
- Функции как свойства объектов
- это ключевое слово
- Функциональные выражения и анонимные функции
- Обозначение стрелки
- звоните, обращайтесь и связывайтесь
- Заключение
- 7. Объем
- Объем против существования
- Лексическая и динамическая область видимости
- Глобальный охват
- Область блока
- Маскировка переменных
- Функции, замыкания и лексическая область видимости
- Немедленно вызываемые функциональные выражения
- Объем функций и подъем
- Функция подъема
- Временная мертвая зона
- Строгий режим
- Заключение
- 8. Массивы и обработка массивов
- Обзор массивов
- Управление содержимым массива
- Добавление или удаление отдельных элементов в начале или конце
- Добавление нескольких элементов в конце
- Получение подмассива
- Добавление или удаление элементов в любой позиции
- Вырезание и замена в массиве
- Заполнение массива определенным значением
- Реверсирование и сортировка массивов
- Поиск массива
- Основные операции с массивами: карта и фильтр
- Магия массива: уменьшить
- Методы массива и удаленные или никогда не определенные элементы
- Соединение строк
- Заключение
- 9. Объекты и объектно-ориентированное программирование
- Перечисление свойств
- для … в
- Object.keys
- Объектно-ориентированного программирования
- Создание класса и экземпляра
- Динамические свойства
- Классы — это функции
- Прототип
- Статические методы
- Наследование
- Полиморфизм
- Перечисление свойств объекта, новый взгляд
- Строковое представление
- Множественное наследование, миксины и интерфейсы
- Заключение
- Перечисление свойств
- 10. Карты и наборы
- Карты
- Слабые карты
- Наборы
- Слабые сеты
- Отказ от объектной привычки
- 11. Исключения и обработка ошибок
- Объект ошибки
- Обработка исключений с помощью try and catch
- Выбрасывание ошибок
- Обработка исключений и стек вызовов
- попробуй… поймай… наконец
- Пусть исключения будут исключительными
- 12. Итераторы и генераторы
- Протокол итерации
- Генераторы
- Выражения yield и двусторонняя связь
- Генераторы и обратка
- Заключение
- 13. Функции и сила абстрактного мышления
- Функции как подпрограммы
- Функции как подпрограммы, возвращающие значение
- Функции как… Функции
- Ну и что?
- Функции — это объекты
- IIFE и асинхронный код
- Функциональные переменные
- Функции в массиве
- Передать функцию в функцию
- Возврат функции из функции
- Рекурсия
- Заключение
- 14. Асинхронное программирование
- Аналогия
- Обратные вызовы
- setInterval и clearInterval
- Область действия и асинхронное выполнение
- Обратные вызовы с первой ошибкой
- Обратный ад
- Обещания
- Создание обещаний
- Использование промисов
- События
- Цепочка обещаний
- Предотвращение невыполненных обещаний
- Генераторы
- Шаг вперед и два шага назад?
- Не пишите свой собственный генератор запуска
- Обработка исключений в обработчиках генераторов
- Заключение
- 15. Дата и время
- Даты, часовые пояса, временные метки и эпоха Unix
- Создание объектов даты
- Момент.js
- Практический подход к датам в JavaScript
- Даты построения
- Создание дат на сервере
- Создание дат в браузере
- Передача дат
- Отображение дат
- Компоненты даты
- Сравнение дат
- Дата Арифметика
- Удобные относительные даты
- Заключение
- 16. Математика
- Форматирование чисел
- Фиксированные десятичные дроби
- Экспоненциальное обозначение
- Фиксированная точность
- Различные базы
- Расширенное форматирование чисел
- Константы
- Алгебраические функции
- Возведение в степень
- Логарифмические функции
- Разнообразный
- Генерация псевдослучайных чисел
- Тригонометрические функции
- Гиперболические функции
- Форматирование чисел
- 17. Регулярные выражения
- Сопоставление и замена подстроки
- Построение регулярных выражений
- Поиск с помощью регулярных выражений
- Замена регулярными выражениями
- Входное потребление
- Чередование
- Соответствие HTML
- Наборы символов
- Именованные наборы символов
- Повторение
- Метасимвол точки и экранирование
- Настоящий подстановочный знак
- Группировка
- Ленивые совпадения, жадные совпадения
- обратные ссылки
- Замена групп
- Замена функций
- Анкеровка
- Сопоставление границ слов
- Прогнозы
- Динамическое построение регулярных выражений
- Заключение
- 18. JavaScript в браузере
- Объектная модель документа
- Немного терминологии дерева
- DOM «Получить» методы
- Запрос элементов DOM
- Управление элементами DOM
- Создание новых элементов DOM
- Элементы стиля
- Атрибуты данных
- События
- Захват событий и всплытие
- Категории событий
- Аякс
- Заключение
- 19. Узел
- Основы узла
- Модули
- Основные модули, файловые модули и модули npm
- Настройка модулей с помощью функциональных модулей
- Доступ к файловой системе
- Процесс
- Операционная система
- Дочерние процессы
- Потоки
- Веб-серверы
- Заключение
- 20. Конфигурация свойств объекта и прокси
- Свойства аксессора: геттеры и сеттеры
- Атрибуты свойств объекта
- Защита объектов: замораживание, запечатывание и предотвращение расширения
- Прокси
- Заключение
- 21. Дополнительные ресурсы
- Онлайн-документация
- Периодика
- Блоги и учебные пособия
- Переполнение стека
- Участие в проектах с открытым исходным кодом
- Заключение
- А. Терминал
- B.