Основы JavaScript
JavaScript – это язык программирования, который добавляет интерактивность на ваш веб-сайт (например: игры, отклик при нажатии кнопок или при вводе данных в формы, динамические стили, анимация). Эта статья поможет вам начать работать с этим захватывающим языком и даст вам представление о том, на что он способен.
Что такое JavaScript на самом деле?
JavaScript («JS» для краткости) — это полноценный динамический язык программирования, который применяется к HTML документу, и может обеспечить динамическую интерактивность на веб-сайтах. Его разработал Brendan Eich, сооснователь проекта Mozilla, Mozilla Foundation и Mozilla Corporation.
JavaScript невероятно универсален и дружелюбен к новичкам. Обладая большим опытом, вы сможете создавать игры, анимированную 2D и 3D графику, полномасштабные приложения с базами данных и многое другое!
JavaScript сам по себе довольно компактный, но очень гибкий. Разработчиками написано большое количество инструментов поверх основного языка JavaScript, которые разблокируют огромное количество дополнительных функций с очень небольшим усилием. К ним относятся:
- Программные интерфейсы приложения (API), встроенные в браузеры, обеспечивающие различные функциональные возможности, такие как динамическое создание HTML и установку CSS стилей, захват и манипуляция видеопотоком, работа с веб-камерой пользователя или генерация 3D графики и аудио сэмплов.
- Сторонние API позволяют разработчикам внедрять функциональность в свои сайты от других разработчиков, таких как Twitter или Facebook.
- Также вы можете применить к вашему HTML сторонние фреймворки и библиотеки, что позволит вам ускорить создание сайтов и приложений.
Поскольку эта статья должна быть только лёгким введением в JavaScript, мы не собираемся путать вас на этом этапе, подробно рассказывая о том, какая разница между основным языком JavaScript и различными инструментами, перечисленными выше. Вы можете подробно изучить все это позже, в нашей учебной области JavaScript и в остальной части MDN.
Ниже мы познакомим вас с некоторыми аспектами основного языка, и вы также будете играть с несколькими функциями API браузера. Веселитесь!
Пример «hello world»
Предыдущий раздел звучит очень многообещающе, и это на самом деле так — JavaScript является одной из самых перспективных веб-технологий, и когда вы освоитесь и начнёте использовать его, ваши веб-сайты перейдут в новое измерение мощи и креативности.
Тем не менее, с JavaScript немного более сложно освоиться, чем с HTML и CSS. Вам придётся начать с малого, продолжая изучение небольшими шагами. Для начала мы покажем вам, как добавить некоторые основы JavaScript на вашу страницу, чтобы создать «hello world!» пример (стандарт в начальных примерах программирования).
Предупреждение: Важно: Если вы не следили за остальным нашим курсом, скачайте этот пример кода и используйте его в качестве стартовой точки.
- Для начала перейдите на ваш тестовый сайт и создайте папку с именем ‘scripts’ (без кавычек). Затем, в новой папке скриптов, которую вы только что создали, создайте новый файл с именем main.js . Сохраните его в вашей папке scripts .
- Далее перейдите в ваш index.html файл и введите следующий элемент на новой строке прямо перед закрывающим тегом </body> :
Примечание: Причиной, по которой мы поставили элемент <script> в нижней части HTML файла, является то, что HTML-элементы загружаются браузером в том порядке, в котором они расположены в файле. Поэтому, если JavaScript загружается первым и ему нужно взаимодействовать с HTML ниже его, он не сможет работать, так как JavaScript будет загружен раньше, чем HTML, с которым нужно работать. Поэтому, располагать JavaScript в нижней части HTML страницы считается лучшей стратегией.
Что произошло?
Итак, ваш заголовок текста был изменён на «Hello world!» с помощью JavaScript. Мы сделали это с помощью вызова функции querySelector() , захватив ссылку на наш заголовок и сохранив её в переменной, названной myHeading . Это очень похоже на то, что мы делали в CSS с помощью селекторов. Если вы хотите что-то сделать с элементом, то для начала вам нужно его выбрать.
После этого, вы устанавливаете значение переменной myHeading в textContent свойство (которое представляет собой контент заголовка) «Hello world!».
Ускоренный курс по основам языка
Давайте познакомимся с некоторыми основными возможностями языка JavaScript, чтобы дать вам больше понимания, как это всё работает. Более того, эти возможности являются общими для всех языков программирования. Если вы сможете понять эти основы, вы будете в состоянии начать программировать, как ни в чём не бывало!
Предупреждение: Важно: В этой статье попробуйте вводить примеры строк кода в вашей JavaScript консоли, чтобы увидеть, что происходит. Для более подробной информации о JavaScript консоли смотрите статью Откройте для себя браузерные инструменты разработчика.
Переменные
Переменные — это контейнеры, внутри которых вы можете хранить значения. Вы начинаете с того, что объявляете переменную с помощью ключевого слова var (не рекомендуется, продолжайте читать, чтобы получить объяснения) или let , за которым следует любое имя, которым вы захотите её назвать:
Примечание: Точка с запятой в конце строки указывает, где заканчивается оператор. Точку с запятой нужно обязательно использовать для разеделения операторов, располагающихся на одной строке. Однако некоторые люди считают, что хорошая практика — указывать её в конце каждого оператора. Существуют и другие правила, когда нужно ставить точку с запятой, а когда нет. Смотрите более подробно в статье ваше руководство по точкам с запятой в JavaScript.
Примечание: вы можете назвать переменную практически как угодно, но есть некоторые ограничения для её имени (смотрите в правилах именования переменных). Если вы не уверены, вы можете проверить имя вашей переменной, чтобы увидеть корректно ли оно.
Примечание: JavaScript чувствителен к регистру — myVariable отличается от переменной myvariable . Если у вас возникают проблемы в вашем коде, проверьте регистр!
**Примечание:**Для получения более подробной информации о разнице между var и let, смотрите: Разница между var и let.
После объявления переменной вы можете присвоить ей значение:
Вы можете сделать обе эти операции на одной и той же строке, если вы захотите:
Вы можете получить значение, просто вызвав переменную по имени:
После установки значения переменной вы можете изменить его позже:
Обратите внимание, что переменные имеют разные типы данных:
| Переменная | Пояснение | Пример |
|---|---|---|
| String | Последовательность текста, называемая строкой. Чтобы указать, что это значение является строкой, вы должны заключить его в кавычки. | var myVariable = ‘Bob’; |
| Number | Числа. Числа не имеют кавычек вокруг них. | var myVariable = 10; |
| Boolean | Значение True(Правда)/False(Ложь). Слова true и false специальные ключевые слова в JS, и не нуждаются в кавычках. | var myVariable = true; |
| Array | Массив, который позволяет хранить несколько значений в одной ссылке. | var myVariable = [1,’Bob’,’Steve’,10]; Обратиться к каждому элементу массива можно так: myVariable[0] , myVariable[1] , и т.д. |
| Object | В принципе, что угодно. Все в JavaScript является объектом, и может храниться в переменной. Имейте это в виду, пока вы учитесь. | var myVariable = document.querySelector(‘h1’); Все это из вышеприведённых примеров. |
Так для чего нам нужны переменные? Что ж, переменные должны были сделать что-нибудь интересное в программировании. Если значения не могли бы изменяться, то вы не могли бы ничего сделать динамическим, например, персонализировать приветственное сообщение или сменить изображение, отображаемое в галерее изображений.
Комментарии
Комментарии — это, по сути, короткие фрагменты текста, которые могут быть добавлены в код, и которые игнорируются браузером. Вы можете поместить комментарии в JavaScript-код, так же как вы делали это в CSS:
Если ваш комментарий не содержит переноса строк, то зачастую легче поставить две косые черты, как тут:
Операторы
operator (en-US) — это математический символ, который производит результат, основанный на двух значениях (или переменных). В приведённой ниже таблице вы можете увидеть некоторые из наиболее простых операторов, наряду с некоторыми примерами, которые опробуете в JavaScript консоли.
| Оператор | Пояснение | Символ(ы) | Пример |
|---|---|---|---|
| Сложение (Конкатенация) | Используется для сложения двух чисел или склеивания двух строк вместе. | + | 6 + 9; «Hello » + «world!»; |
| Вычитание, Умножение, Деление | Они делают то, чего вы от них ожидаете в математике. | — , * , / | 9 — 3; 8 * 2; // умножение в JS это звёздочка 9 / 3; |
| Присваивание | Вы уже это видели: он присваивает значение переменной. | = | var myVariable = ‘Bob’; |
| Равенство (Тождество) | Делает проверку, если увидит, что два значения равны друг другу, то возвращает результат true / false (Boolean). | === | var myVariable = 3; myVariable === 4; |
| Отрицание (Неравенство) | Возвращает логически противоположное значение, которое ему предшествует; превращает true в false , и т.д. Когда используется вместе с оператором равенства, оператор отрицания проверяет, являются ли два значения не равными. | ! , !== | Основное выражение true , но сравнение возвращает false , потому что мы отрицаем его: var myVariable = 3; !(myVariable === 3); Здесь мы проверяем » myVariable НЕ равно 3″. Это возвращает false , потому что myVariable равно 3. var myVariable = 3; myVariable !== 3; |
Существует намного больше операторов для изучения, но этих пока хватит. Смотрите их полный список в разделе выражения и операторы.
Примечание: Смешивание типов данных может привести к некоторым неожиданным результатам при выполнении вычислений, поэтому будьте осторожны, правильно ссылайтесь на ваши переменные, чтобы получать ожидаемые результаты. Например, введите «35» + «25» в вашу консоль. Почему вы не получили результат, который вы ожидали? Потому, что кавычки превратили числа в строки, так что у вас в итоге получилась конкатенация строк, а не сложение чисел. Если вы введёте, 35 + 25 , то получите правильный результат.
Условия
Условия — это конструкции в коде, которые позволяют проверить истинность или ложность выражения и выполнить другой код в зависимости от полученного результата. Самая распространённая форма условия — инструкция if . else . Например:
Выражение внутри if ( . ) — это проверка, которая использует тождественный оператор (как описано выше), чтобы сравнить переменную iceCream со строкой chocolate и увидеть равны ли они. Если это сравнение возвращает true , выполнится первый блок кода. Если нет, этот код пропустится и выполнится второй блок кода, после инструкции else .
Функции
Функции — способ упаковки функциональности, которую вы хотите использовать повторно. Всякий раз, когда вам нужна определённая процедура, вы можете просто вызвать функцию по её имени, а не переписывать весь код каждый раз. Вы уже видели некоторые функции, описанные выше, например:
Эти функции, document.querySelector и alert , встроены в браузер для того, чтобы вы использовали их всякий раз, когда вам это необходимо.
Если вы видите что-то, что выглядит как имя переменной, но имеет после него скобки — () , скорее всего, это функция. Функции часто принимают аргументы — биты данных, которые им необходимы для выполнения своей работы. Они находятся в скобках, и разделяются запятыми, если присутствует более одного аргумента.
Например, функция alert() вызывает всплывающий блок, появляющийся в окне браузера, но мы должны дать ему строку в качестве аргумента, чтобы сказать функции, что писать во всплывающем блоке.
Хорошая новость заключается в том, что вы можете определить свои собственные функции — в следующем примере мы напишем простую функцию, которая принимает два числа в качестве аргументов и умножает их:
Попробуйте запустить вышеупомянутую функцию в консоли, затем попробуйте изменить аргументы, например:
Примечание: Инструкция return сообщает браузеру, что нужно вернуть переменную result из функции, которую можно будет использовать. Это необходимо потому, что переменные, определённые внутри функций, доступны только внутри этих функций. Это называется областью видимости (en-US) переменной. (Читайте больше об области видимости переменных.)
События
Для создания действительной интерактивности на веб-сайте вам необходимы события. События — это структура, которая следит за тем, что происходит в браузере, а затем позволяет вам запускать код в ответ на это. Наиболее очевидным является событие клика (en-US) , которое вызывается браузером, когда мы щёлкаем по чему-то мышью. Для демонстрации этого события введите следующую команду в вашу консоль, а затем щёлкните по текущей веб-странице:
Существуют множество способов прикрепить событие к элементу. Здесь мы выбираем <html> элемент и устанавливаем ему обработчик свойства onclick (en-US) анонимной функцией (т.е. безымянной) которая содержит код, который мы хотим запустить для события клика.
Обратите внимание, что
Просто так короче.
Прокачаем пример нашего веб-сайта
Теперь, когда мы прошли некоторые основы JavaScript, давайте добавим несколько крутых несложных функций в пример нашего сайта, чтобы дать вам некоторое представление о принципах работы.
Добавление смены изображения
В этом разделе мы добавим ещё одно изображение на наш сайт и добавим некоторый простой JavaScript для переключения между двумя изображениями, когда по ним щёлкнули.
- В первую очередь найдите другое изображение, которые вы хотели бы показать на вашем сайте. Убедитесь что оно такого же размера, как ваше первое изображение или максимально близкое к нему.
- Сохраните изображение в вашу папку images .
- Переименуйте это изображение в ‘firefox2.png’ (без кавычек).
- Перейдите в ваш файл main.js и введите следующий JavaScript. (Если ваш «hello world» JavaScript по-прежнему существует, удалите его.)
Итак, мы сохраняем ссылку на наш элемент <img> в переменной myImage . Далее, мы создаём этой переменной обработчик события onclick с анонимной функцией. Теперь, каждый раз, когда на этот элемент изображения щёлкнут:
- Мы получаем значение из атрибута src изображения.
- Мы используем условие для проверки значения src, равен ли путь к исходному изображению:
- Если это так, мы меняем значение src на путь ко 2-му изображению, заставляя другое изображение загружаться внутри элемента <image> .
- Если это не так (значит, оно должно было уже измениться), мы меняем значение src , возвращаясь к первоначальному пути изображения, каким он был изначально.
Добавление персонального приветственного сообщения
Далее мы добавим немного другого кода, чтобы изменить заголовок страницы на персонализированное приветственное сообщение, когда пользователь впервые зайдёт на сайт. Это приветственное сообщение будет сохраняться, когда пользователь покинет сайт, а позже вернётся — мы сохраним его с помощью Web Storage API. Мы также включим возможность изменить пользователя и, следовательно, приветственное сообщение, в любое время, когда это будет необходимо.
-
В index.html , добавьте следующую строку перед элементом <script> :
Теперь, когда вы впервые заходите на сайт, он попросит вас указать имя пользователя, а затем предоставит вам персональное сообщение. Вы можете изменить имя в любое время, нажав на кнопку. В качестве дополнительного бонуса, поскольку имя хранится внутри localStorage, оно сохраняется после закрытия сайта, сохраняя при этом персонализированное сообщение при следующем открытии сайта!
Заключение
Если вы следовали всем инструкциям в этой статье, в конечном итоге вы должны получить страницу, которая выглядит примерно так (вы также можете посмотреть нашу версию здесь):

Если вы застряли, вы всегда можете сравнить свою работу с нашим готовым примером кода на Github.
Здесь мы узнали только самую поверхность JavaScript. Если вам понравился этот язык и вы хотите изучить его поглубже, перейдите к нашему разделу изучение JavaScript.
Инструменты в повседневной работе JavaScript-разработчика
Основные инструменты, без которых сложно представить будни JavaScript-разработчика: от IDE до браузера.
VS Code

VS Code — это универсальная IDE (Integrated Development Environment), которая уже стала стандартом для многих разработчиков. Основной задачей инструмента является предоставление удобной и эффективной среды для работы с программным кодом. VS Code позиционируется как легковесный редактор кода, позволяющий расширить функционал при помощи плагинов, что делает его максимально конфигурируемым под задачи и предпочтения каждого разработчика индивидуально.
Ключевые «фишки» редактора:
- Возможность расширения и конфигурации редактора при помощи огромного количества плагинов, позволяющих добавить практически любой необходимый для разработки функционал.
- IntelliSense — умная подсветка и автодополнение кода, основывающиеся на типах переменных, описании функций и методов, импортируемых модулях.
- Встроенный отладчик, позволяющий анализировать выполнение кода непосредственно в редакторе, не прибегая к выводу состояния переменных и среды исполнения.
- Удобная интеграция с командами Git и другими системами контроля версий делает рутинную работу легче и эффективнее.
Для разработки на JavaScript в VS Code я использую следующий набор плагинов:
- One Dark Pro — известная One Dark тема, одна из наиболее популярных среди пользователей VS Code.
- Prettier — инструмент, позволяющий автоматически форматировать код JavaScript в соответствии с общепринятыми стандартами.
- ESLint — статический анализатор JavaScript кода, задачей которого является выявление нарушений правил и соглашений по написанию и оформлению кода.
- JavaScript Snippets — плагин, расширяющий функционал автодополнения, предоставляющий возможность удобно вставлять готовые стандартные JavaScript выражения и конструкции.
- VSCodeVim — плагин, позволяющий переключиться в режим модального редактора Vim.
- JestRunner — предоставляет возможность запускать и отлаживать Jest тесты прямо из редактора путем нажатия на всплывающие кнопки.
- Git File History — визуализация истории изменений файла, основанная на системе управления версиями Git.
Node.js
Node.js или как ее еще называют «нода» — это среда исполнения JavaScript, основанная на движке V8. В отличие от браузера, Node.js предоставляет возможность исполнять код на стороне сервера, позволяя подключаться к базам данных, «слушать» сетевые подключения, используя разного рода протоколы, или работать в режиме командной строки. При построении бэкенд-сервисов Node.js — неотъемлемый инструмент повседневной работы.
Менеджер пакетов Node.js — это инструмент, который предоставляет набор команд для установки, удаления, версионирования, запуска и многих других операций над JavaScript пакетами как для серверных приложений на Node.js, так и для клиентских, предназначенных для браузера.
Пакет — это полноценная программа или набор функций, которые могут быть переиспользованы при разработке другой программы. Ярким примером может быть React или Lodash. Потенциально программа, написанная на JavaScript под Node.js, может не использовать сторонних зависимостей. Но на большинстве проектов для ускорения разработки и переиспользования логики и функционала npm используется как один из основных инструментов.
Набор npm пакетов варьируется от проекта к проекту и разделяется на пакеты, входящие в конечную программу, и на пакеты, необходимые для процесса разработки, сборки, отладки, размещения и других операций над конечной программой.
Менеджер версий Node.js — используется для быстрого переключения между версиями «ноды» на одной машине. Чаще всего необходим в одновременной работе над разными проектами, когда каждый из них зависит от конкретной версии.
Prettier
Инструмент, позволяющий автоматически форматировать JavaScript код в соответствии с общепринятыми стандартами. Форматирование кода в соответствии с набором правил необходимо для поддержания чистоты и строго детерминированной структуры. Код читается и воспринимается гораздо легче, когда его оформление стандартизировано.
В некоторых языках есть встроенные инструменты для форматирования кода, например, в Go это fmt, без соблюдения правил которого код не скомпилируется. Для JavaScript долгое время не было инструмента, строго описывающего и исполняющего правила форматирования. Prettier занял свою нишу достаточно скоро после выхода и сейчас уже является обязательным npm-пакетом практически на каждом проекте.
ESLint
Статический анализатор JavaScript кода, задачей которого является выявление нарушений правил и соглашений по написанию и оформлению кода. В отличие от правил форматирования, ESLint применяет правила написания выражений, конструкций и операторов. В результате ESLint «следит» за качеством кода, выявляя потенциальные проблемы и ошибки в синтаксисе. Так же, как и Prettier, этот инструмент считается практически обязательным для каждого проекта.
Google Chrome
Работа в браузере занимает чуть ли не большую часть рабочего дня. Но самое главное, что браузер предоставляет не только возможность работать с ресурсами интернета, но и достаточно широкий набор инструментов разработчика. В основном они необходимы для отладки, анализа, оптимизации фронтенд приложений.
Основные инструменты разработчика в Google Chrome:
- Elements — просмотр HTML-элементов, их свойств, параметров и CSS-стилей. Кроме этого в Elements можно редактировать HTML и CSS прямо на лету, что дает удобную возможность экспериментировать с версткой прямо в браузере.
- Network — таблица HTTP-запросов и ответов, предоставляющая о них полную информацию.
- Console — среда исполнения JavaScript в контексте скрипта страницы. Позволяет не только выполнять код построчно, но и выводит логи JavaScript-приложения.
- Sources — открывает исходный код JavaScript-приложения, является полноценным отладчиком кода, где можно установить точки останова и просмотреть состояние приложения и среды исполнения в необходимый момент.
- Performance — анализ производительности приложения, включающий не только данные об исполнении JavaScript-кода, но и ресурсы, затраченные на отрисовку HTML, анимацию CSS и другие составляющие в разрезе промежутка времени, записанного во время анализа.
- Application — доступ к разным типам хранилища браузера, а также к сервисам, исполняемым в фоновом режиме.
- Sensors — инструмент, позволяющий подменить данные сенсоров, такие как геолокация, положение в пространстве и другие.
Естественно, это лишь основные или базовые инструменты, без которых сложно представить будни JavaScript-разработчика. Существует масса других, не менее важных и популярных инструментов и приложений, которыми в принципе пользуется каждый разработчик программного обеспечения вне зависимости от языка программирования или стека.
Экосистема фронтенд-разработчика на JavaScript: полезный инструментарий для начинающих

Если вы начинающий JS-разработчик, вам лучше иметь под рукой краткий список самых необходимых и полезных в работе инструментов. В этой статье собран такой список в виде краткой шпаргалки, которая поможет вам не потеряться на начальном этапе карьеры.
Меня зовут Александр Дудукало, я курирую направление «Веб-разработка» в Skillbox. Мои выпускники, посвятившие себя фронтенд-разработке, часто рассказывают о том, что им бывает очень непросто сориентироваться в обилии существующих технологий, особенно поначалу. Человек приходит в новую компанию, ему дают какой-то проект, включают в рабочую группу в корпоративном чате, и он остается один на один с поставленной тим-лидом задачей. Обычно в подобной ситуации джун испытывает растерянность, поскольку не знает, за что хвататься в первую очередь, какой софт ему нужен для работы, где черпать полезную информацию. Эта статья — своего рода шпаргалка по экосистеме фронтенд-разработчика на JS, которая поможет начинающему программисту почувствовать себя более комфортно в процессе погружения в свой первый самостоятельный проект.
Сообщества, полезные любым IT-специалистам
Что ни говори, а человек — существо коллективное, поэтому без поддержки и помощи себе подобных ему никак не обойтись. JS-разработчик тоже человек, и ему очень пригодятся знания, которыми готовы делиться с коллегами окружающие. К счастью, у нас под рукой есть интернет, хранящий терабайты ценной информации, важно лишь выбрать в нем наиболее адекватные и актуальные ресурсы.
Пожалуй, основным источником информации для любого программиста является GitHub — крупнейший веб-сервис для хостинга IT-проектов и их совместной разработки. На гитхабе можно отыскать не только исходники различных проектов, но также всевозможную техническую документацию, которая поможет вам в реализации сложных задач и подскажет ответы на самые насущные вопросы. И, конечно, каждый уважающий себя разработчик должен завести собственную страничку на GitHub. Это может быть публичная страница, которая позволит продемонстрировать собственный код потенциальному работодателю и вести совместные проекты с другими разработчиками, или закрытая страница, предназначенная только для личного использования.

GitHub — отличная альтернатива коммерческому хостингу: портал позволяет не просто создать собственный репозиторий кода, но также писать документацию с вики- markdown- или html-разметкой, осуществлять контроль версий, собрать собственную команду или вступить в уже существующую, задавать вопросы и оставлять комментарии. Иными словами, это целая социальная сеть с уклоном в программирование.
Кроме GitHub, следует отметить портал Stack Overflow. Это, пожалуй, самый большой форум в интернете, содержащий информацию и обсуждения по всем языкам программирования, не только по JavaScript. Если у вас возникло какое-либо затруднение или появился кажущийся нерешаемым вопрос, будьте уверены, что ответ вы найдете на Stack Overflow. Ссылки именно на этот портал обычно появляются в выдаче первыми, когда мы ищем информацию по программированию в Google. Пользователи этого ресурса общаются на английском языке, но в разделе форумов есть ветки на русском. Кроме того, при необходимости всегда можно воспользоваться онлайн-переводчиком.

Из русскоязычных источников информации следует, безусловно, упомянуть сайт Tproger, на котором собрано очень много полезной информации по JavaScript, и полезный учебник https://learn.javascript.ru, в котором собраны уроки по JavaScript/DOM начиная с самых основ. Имеет смысл взять на вооружение тематические каналы в Тelegram: список самых полезных из них был не так давно опубликован на портале Tproger, еще один перечень можно найти на сайте Techrocks. И конечно же, «Хабр» — здесь можно почерпнуть полезные лайфхаки, научиться новым приемам программирования и почитать лонгриды о полезном инструментарии.
Кроме того, разработчик, тем более начинающий, не должен пропускать отраслевые мероприятия и связанные с его профессией ивенты. На тех же порталах, которые я упоминал выше, регулярно публикуются анонсы предстоящих конференций, митапов и вебинаров, выходящих подкастов. Часть мероприятий проводится в очном формате, часть — в режиме онлайн. Рост экспертности и опыта невозможен без общения с коллегами, поэтому крайне важно находиться в этой среде, обсуждать проблемы, задавать вопросы, принимать участие в дискуссиях. Не пренебрегайте этой возможностью.
Платформа Node.js
Очевидно, что самый простой способ запустить программу на JavaScript — использовать браузер. Обычно он и применяется в процессе разработки фронтенда. Но часто возникает необходимость запускать JS-приложения вне браузера, например при написании и тестировании каких-либо серверных приложений, для которых не требуются браузерные функции и компоненты. Благодаря появлению программной платформы Node.js JavaScript-код можно запускать на устройствах с операционными системами Windows, Linux и macOS без использования браузера.
Node.js пользовалась популярностью прежде всего потому, что она позволяла добиться одинакового отображения сайтов и веб-приложений в разных браузерах. До определенного момента внешний вид элементов, созданных с использованием JavaScript, различался в разных браузерах. Происходило это потому, что между их производителями отсутствовала договоренность по синтаксису языка и визуальному представлению. С помощью Node.js эта проблема успешно решалась. Кроме того, библиотека имела дополнительный функционал, который помогал работать с запросами на сервер, создавать анимацию, использовать элементы навигации. Иными словами, это был очень полезный подключаемый инструмент, который заметно облегчал жизнь разработчика. Но JavaScript активно развивается, и теперь интерпретатор этого языка во всех браузерах практически одинаков, поэтому от использования Node.js сегодня понемногу отказываются. Зачем нагружать код дополнительным подключаемым файлом, если без этого можно обойтись?
Инструменты разработки
Для написания кода нужен простой, удобный и по возможности бесплатный редактор. Одним из самых популярных является Visual Studio Code (VS Code), разработанный корпорацией Microsoft, — он поддерживает синтаксис многих языков программирования, в том числе JavaScript. В нем уже «из коробки» имеется множество полезных функций — встроенный отладчик и средства для рефакторинга, а недостающие возможности без труда добавляются в редактор установкой плагинов. При этом дополнений для VS Code существует множество — их можно добавлять как с помощью встроенного инструментария самого редактора, так и с сайта Microsoft, где над их разработкой и поддержкой трудится целое сообщество программистов. В других редакторах расширения подключаются из командной строки, что не слишком удобно.

Еще один текстовый редактор, специально созданный для разработки кода, носит наименование Sublime Text. Он поддерживает подсветку синтаксиса многих языков, включая JavaScript, и позволяет подключать плагины. Так же, как и WebStorm, он платный.
К инструментам разработки можно отнести и полезные плагины — о некоторых мы уже подробно рассказывали в предыдущей статье. Помимо них, следует упомянуть набор плагинов Emmet — они значительно облегчают и упрощают написание кода не только на JavaScript, но также на HTML, XML, XSL и других языках. Плагины Emmet сами написаны на JavaScript, они уже встроены в VS Code, а к другим редакторам подключаются в виде надстроек и распространяются бесплатно на основе открытой лицензии. Этот минимально необходимый инструментарий, который следует освоить любому разработчику.
Инструменты для автоматизированного и юнит-тестирования
Прежде чем мы перейдем к перечислению этого инструментария, необходимо отметить, что само по себе тестирование бывает разным: тестирование кода или тестирование приложения, когда специалист эмулирует действия пользователя с целью вызвать сбой или ошибку программы. Для этого применяются различные средства автоматизации, которые позволяют в сжатые сроки проверить работу приложения и при необходимости внести в код необходимые коррективы.
Наиболее популярной системой тестирования в стеке фронтенд-разработки на JavaScript является Jest. Это среда тестирования JavaScript, созданная на основе среды тестирования JavaScript с открытым исходным кодом Jasmine. Она позволяет тестировать программы, написанные с использованием Babel, TypeScript, Node, React, Angular, Vue и других фреймворков. Пожалуй, самое большое достоинство Jest состоит в том, что для большинства проектов на JavaScript этот инструмент может работать без дополнительных настроек. Для Jest имеется развернутая документация на русском языке, и кроме того, есть обширное русскоязычное сообщество.
Языки, компилируемые в JavaScript
Языки, компилируемые в JavaScript — это тоже часть экосистемы разработчика. Основным среди них является TypeScript, созданный корпорацией Microsoft. TypeScript расширяет возможности JS в вопросах типизации: в этом языке переменная может менять свой тип в зависимости от ситуации. Однако эта медаль, как водится, имеет две стороны: хотя удобство разработки и повышается, но возможность явного статического назначения типов переменных и использование полноценных классов создают предпосылки для ошибок в коде.
Код на TypeScript компилируется в JavaScript. Для решения простых задач TypeScript не нужен, но тем не менее сегодня этот язык стал стандартом де-факто и занимает значительную часть рынка. Он поддерживается многими фреймворками, например, Angular — созданной Google открытой платформы для разработки веб-приложений. Сама эта платформа написана на TypeScript. Поэтому, если вы планируете использовать Angular, вам придется освоить этот язык.
Компонентные фреймворки
Фреймворки включают набор функций, элементов, модулей, которые позволяют нам быстро создавать компоненты для приложений и соединять их вместе. Обычно фреймворки обладают возможностью работать с сервером, то есть они решают ту часть задач, которая обычно выпадает на долю разработчика. Фактически они позволяют не изобретать собственный велосипед всякий раз, когда вам нужно куда-то доехать. Самые известные из JS-фреймворков — это React, Vue.js и Angular.

React — пожалуй, самый популярный и универсальный JS-фреймворк. Изначально он был создан Джорданом Валке, разработчиком программного обеспечения из Facebook, в виде JavaScript-библиотеки с открытым исходным кодом для сборки пользовательских интерфейсов. Чаще всего React применяют для создания простых одностраничных приложений, но фактически с его помощью можно реализовать проекты любой сложности. Пожалуй, главное его достоинство — большое сообщество, а это означает возможность получить ответы практически на любые ваши вопросы. Этой технологии посвящено множество форумов, где можно отыскать ценную информацию. На основе React создано много дополнительных библиотек, упрощающих разработку приложений на JavaScript.
Платформу Angular я уже кратко упоминал выше — это популярный фреймворк для создания веб-приложений, разрабатываемый совместно командой из компании Google и независимым сообществом программистов. С помощью Angular можно строить довольно сложные веб-приложения, и лучше всего этот фреймворк подходит для разработки больших проектов с жесткой структурой. У Angular имеется уникальная возможность обеспечивать обратную взаимосвязь данных. То есть можно изменить данные на стороне фронтенда, а на сервере соответствующие изменения произойдут автоматически. Этот же принцип работает и в обратном направлении: такую синхронизацию обеспечивает Angular. Но этот фреймворк сложнее в изучении и использовании, поскольку требует обязательного знания TypeScript.
Vue.js — JavaScript-фреймворк с открытым исходным кодом для создания пользовательских интерфейсов. Недавно состоялся релиз третьей версии этого фреймворка, значительно расширивший его возможности, и сейчас Vue.js активно развивается. Лично мне он нравится тем, что у Vue.js имеется очень хорошая документация на русском языке, содержащая множество наглядных примеров. Иными словами, если вы не поленитесь прочитать документацию, у вас не останется шанса не понять Vue.
Этот фреймворк очень прост, но при этом Vue — мощный инструмент, который позволяет создавать полноценные приложения. У него также есть дополнительные подключаемые модули, библиотеки, которые дают возможность создавать полноценные мобильные приложения. Чаще всего Vue используется, когда имеется большой проект, построенный без применения каких-либо дополнительных инструментов, и необходимо перейти к использованию фреймворка. Он дает такую возможность. Вы можете постепенно выделять или создавать отдельные компоненты и шаг за шагом переводить сайт или веб-приложение на Vue.js. У Vue есть отличная система анимации, с помощью которой можно анимировать все что угодно, используя транзишены — эффекты плавного анимированного перехода от одного состояния к другому. Они создают ощущение отзывчивости интерфейса, пример такой анимации — сдвигающееся меню, переворачивающиеся страницы на сайте. Для начинающих разработчиков, на мой взгляд, это идеальный фреймворк.
Инструменты автоматизации сборки
Если JavaScript используется исключительно для верстки веб-страниц, то для автоматизации сборки обычно применяется Gulp. Если речь идет о разработке фронтенда приложения, лучше всего подойдет Parcel — это один из самых простых сборщиков. А для более серьезных и масштабных проектов лучше выбрать Webpack — он предоставляет удобный способ сконфигурировать настройки нашего сборщика. Для расширения возможностей этого инструмента можно подключить к нему дополнительные библиотеки, модули, инструменты и плагины.
Многие фреймворки работают с собственными сборщиками — например, Webpack используется в Vue.js. Лично я для сложных задач выбираю именно его, а для простых сайтов, лендингов или одностраничных веб-приложений применяю Parcel.
Безусловно, в этой статье я перечислил далеко не все существующие сегодня инструменты, входящие в экосистему JS-разработчика. Например, вопрос оптимизации JS-приложений стоит очень остро: в частности, для оценки производительности веб-приложений используется инструментарий Chrome Dev Tools. Если у вас есть любимые библиотеки или полезные приложения, о которых я не упомянул, обязательно поделитесь ими в комментариях.
Детальный список инструментов для JavaScript
Перед началом статьи хочу сказать, что еще больше полезной и нужной информации вы найдете в нашем Телеграм-канале по ссылке: https://t.me/metsolution (Огромная просьба подписаться, ведь именно Телеграм-канал является моей мотивацией <3)
В январе 2017 года сообщество Stack Overflow провело опрос, в котором приняли участие 64 000 разработчиков из разных стран мира. Результаты для первого места остаются без изменений в течение пяти последних лет. JavaScript остаётся несменяемым лидером в гонке популярности языков программирования.
На изображении представлены результаты опроса на Stack Overflow
JavaScript служит мощной и стабильной основой для многих продвинутых современных веб-приложений и веб-сайтов. В умелых руках опытного разработчика с помощью JavaScript можно продвинуть UX приложения на новый уровень и добавить богатый набор функций и разные высоко функциональные компоненты. В программной экосистеме JavaScript существует множество инструментов. Иногда может показаться, что новые библиотеки и фреймворки «атакуют» сообщество разработчиков своим огромным количеством. В этой статье вам будут представлены наиболее удобные инструменты работы с JavaScript.
Можно выбирать инструменты, основываясь на рейтинге и популярности. Если инструмент популярен и имеет хорошие отзывы и большое сообщество, то повышается вероятность того, что вы столкнётесь с меньшим количеством проблем во время работы с ним. Вы можете также посмотреть на лучшие фреймворки и библиотеки для JavaScript, по мнению некоторых программистов. Также при выборе инструмента нужно со всех сторон изучить свой проект, чтобы не было проблем с масштабируемостью и совместимостью с разными браузерами и их версиями.
Инструменты сборки для кросс-платформенных языков вроде .Net или Java — обычное дело. Но что насчёт JavaScript? Когда разработчики начали использовать этот язык программирования для крупномасштабных проектов, то они столкнулись с проблемами масштабируемости, безопасности, производительности и обслуживания. Поэтому пришло время использовать инструменты сборки для работы с JavaScript.
-
— одна из последних новинок в мире фронтенда. Он представляет собой модульный упаковщик, который создаёт граф зависимостей со всеми модулями для приложения на JavaScript. Webpack упаковывает модули в один или несколько маленьких пакетов для загрузки браузером. Кроме того, Webpack может использоваться в качестве средства запуска задач, так как он анализирует зависимости между модулями и образовывает ресурсы (ассеты). — таск раннер, предназначенный для автоматизации повторяющихся и трудоёмких задач, которые отнимают много времени. В его программной экосистеме существует огромное количество плагинов (более 6000). — не очередной диспетчер запуска задач, а инструмент с интересным подходом: он определяет задачи в JavaScript как функции, также GUl автоматизирует «болезненные» задачи, предлагая обширную программную экосистему (более 2700 плагинов), также он обеспечивает лучшую прозрачность и контроль над процессом. позволяет разработчикам программного обеспечения использовать модули стиля NodeJS в браузерах. Вы определяете зависимости, а Broweserify упаковывает всё это в аккуратный JS-файл. — инструмент, основными идеями которого являются скорость и простота. Он поставляется с простой конфигурацией и подробной документацией для быстрого запуска. Brunch автоматически создаёт карту JS-файлов вместе с таблицами стилей CSS, что упрощает процесс отладки на стороне клиента. — универсальный инструмент, который может использоваться с почти любым языком программирования (JavaScript, Python, C#, Java и прочие). Эта базовая система кодогенерации с богатой программной экосистемой (более 6200 плагинов) служит для разработки веб-приложений. Благодаря Yeoman вы можете быстро создавать новые проекты, не забывая об обслуживании и улучшении уже существующих.
-
— мощная IDE для продвинутой разработки веб-приложений на JavaScript. Она предлагает поддержку различных фреймворков и языков стилевого оформления. WebStorm может быть легко интегрирован с дополнительными инструментами вроде тестеров, средств контроля качества кода, сборщиков и т. д. В IDE также встроены такие функции, как автоматическое завершение кода, немедленное обнаружение ошибок, навигация, встроенный терминал, богатый набор плагинов и многое другое. — бесплатный продукт от GitHub и выбор №1 для многих разработчиков. Он представляет собой легко настраиваемый редактор кода, который поставляется с некоторыми интересными функциями «прямо из коробки». В Atom имеется встроенный менеджер пакетов, интеллектуальное автоматическое завершение кода и прочие полезные функции. Также Atom является кросс-платформенным редактором кода. — поддерживается компанией Microsoft и полностью поддерживает TypeScript «прямо из коробки». В Visual Studio Code есть интеллектуальное завершение кода и подсветка синтаксиса с помощью технологии автодополнения IntelliSense, также есть встроенный инструмент отладки, встроенная поддержка команд Git, контроль версий и многое другое. Более того, вы можете расширить функциональность редактора путём подключения широкого спектра расширений — это лёгкий редактор кода с открытым исходным кодом. В основном он ориентирован на визуальные инструменты и поддержку процессора для упрощения работы в браузере. Brackets поставляется с удобной функцией предварительного просмотра в реальном времени.
Документирование кода превращает ваше приложение в «стеклянную коробку», показывая, как работает тот или иной фрагмент кода. Инструменты автоматического документирования кода описывают функции и их назначения, что позволяет экономить время на анализе и понимании кода в будущем.
-
— это набор правил и инструментов для описания API. Инструмент представляет собой языково-независимую утилиту. Это значит, что Swagger создаёт чёткую документацию, которая читается одинаково хорошо как человеком, так и машиной, позволяя автоматизировать процессы зависящие от API. — набор инструментов, автоматически создающий многостраничную текстовую документацию (HTML, JSON, XML и т. д.) из комментариев из исходного кода на JavaScript. Это приложение может пригодиться для управления крупномасштабными проектами. (jGD) — это гибкий инструмент с открытым исходным кодом, который позволяет разработчикам генерировать API из комментариев из исходного кода на JavaScript. jGD документирует не только переменные и функции, но и пространства имён, интерфейсы, пакеты и некоторые другие элементы. — приложение, написанное на NodeJS. Оно использует синтаксис, подобный тому, который применяется в Javadoc и Doxygen. Также инструмент может похвастаться поддержкой предварительного просмотра в реальном времени, расширенной поддержкой языка и продвинутой разметку. — бесплатный инструмент для документации, написанный на «литературном» CoffeeScript. Он создаёт HTML-документ для отображения ваших комментариев, чередующихся с кодом. Следует отметить, что инструмент поддерживает не только JavaScript, но и другие языки. Например, Python, Ruby, Clojure и прочие.
Инструменты тестирования для JavaScript созданы для обнаружения ошибок на этапе производства, чтобы избежать в будущем ошибок у пользователей. С ростом сложности пользовательских приложений автоматические тесты не только повышают производительность приложения, но и помогают компаниям сохранить бюджет.
-
— BDD-фреймворк (Behavior-driven Development — разработка на основе поведений) служит для тестирования JS-кода. У него нет внешних зависимостей, и он не требует запуска DOM. Jasmine имеет чистый и понятный синтаксис, что позволяет ускорять и упрощать тестирование. Также фреймворк может использоваться для тестирования кода NodeJS, Python, Ruby. — это функциональная тестовая среда, работающая на Node.js в браузере. Она проводит тесты последовательно для обеспечения гибкой и точной отчётности, делая асинхронные тесты весёлыми и лёгкими. Mocha часто используется вместе с Chai для проверки результатов теста. часто используется для интерфейсных тестов и юнит-тестов. Учитывая то, что это что-то вроде «безголового» WebKit, скрипты выполняются намного быстрее. Также он включает в себя встроенную поддержку различных веб-стандартов. Например, JSON, Canvas, обработку DOM, SVG и селекторы CSS. — это сквозной тестовый фреймворк, написанный на Node.js для тестирования приложений на AngularJS и Angular. Он был создан на основе WebDriverJS и проверяет приложения подобно конечному пользователю, используя специальные драйвера и встроенные события.
Отладка кода — довольно трудоёмкий и поглощающий время процесс для JavaScript-разработчиков. Инструменты для отладки кода будут особенно полезны при работе с тысячами строк кода. Многие из инструментов отладки обеспечивают довольно точные результаты.
-
— инструмент от сообщества разработчиков Mozilla (MDN), который может быть использован как автономное веб-приложение для отладки кода в разных браузерах и коде на NodeJS. Firefox предлагает локальные и удалённые функциональные возможности, а также возможность отладки кода на Android-устройстве с помощью Firefox для Android. — набор инструментов, включающий в себя несколько утилит для отладки кода JavaScript, редактирования CSS и тестирования производительности приложений. — кросс-браузерное расширение, которое призвано помочь разработчикам с написанием, пониманием и отладкой приложений на AngularJS. Утилита поставляется с обновлениями в реальном времени, подсветкой DOM, прямым доступом к областям, моделям и прочим элементам приложения. — расширение для браузера Google Chrome и отладки приложений на Angular 2. Оно позволяет разработчикам приложений на Angular 2 напрямую анализировать структуру приложения и рабочие характеристики, а также позволяет обнаружить изменения.
-
— коммерческий инструмент для обнаружения, исправления и предотвращения известных уязвимостей в приложениях на JavaScript, Java и Ruby. Служба имеет собственную базу данных уязвимостей и берёт данные из NSP и NIST NVD. Патчи и обновления, которые предлагает компания, позволяют разработчикам предупредить риски, связанные с безопасностью. предлагает полезные инструменты для сканирования зависимостей и обнаружения уязвимостей. NSP использует свою собственную базу данных, построенную на сканировании модулей npm, а также данные из общих баз данных, таких как NIST NVD (National Vulnerability Database). Кроме того, NSP обеспечивает интеграцию с программным обеспечением GitHub Pull Request и CI. Также имеется проверка в реальном времени, предупреждения и рекомендации по устранению уязвимостей в приложениях на NodeJS. — это средство проверки зависимостей с открытым исходным кодом. Включает в себя различные компоненты, такие как сканер командной строки, плагин Grunt, расширения Firefox и Chrome, плагины Burp и OWASP ZAP. Retirejs собирает информацию об уязвимостях из NIST NVD и других источников, таких как системы отслеживания ошибок, блоги и списки рассылки. — это коммерческий инструмент с бесплатной пробной версией. Он поддерживает различные технологии и пакеты, включая Ruby, PHP, Bower (JavaScript), Python и npm (JavaScript). Инструмент безопасности Gemnasium поставляется с полезными функциями, такими как автоматическое обновление, оповещения в реальном времени, уведомления о безопасности и интеграция с сервисом Slack. поддерживает различные экосистемы (Java, JavaScript и .NET / C #) и множество платформ, таких как NuGet, npm, Bower, Chocolatey, Maven, Composer, Drupal и MSI. Он собирает информацию об уязвимостях из Национальной базы данных уязвимостей (NVD) и отзывов. Также он обрабатывает информацию от членов сообщества.
Для проверки качества кода обычно обращаются к функциональному тестированию и юнит-тестированию. Однако существует еще один подход, который позволяет разработчикам проверять качество кода и его соответствие стандартам кодирования, а именно статический анализ кода.
В настоящее время в современном программном обеспечении объединяются инструменты анализа статического кода во время разработки, чтобы исключить попадание некачественного кода в продакшен.
-
— это аналитический веб-инструмент для проверки качества кода JavaScript. Как только он обнаруживает проблему в источнике, он возвращает сообщение с описанием проблемы и приблизительным местоположением в коде. JSLint способен анализировать некоторые нормы стиля и раскрывать синтаксические ошибки и структурные проблемы. — гибкий инструмент, развивающийся сообществом, для обнаружения ошибок и потенциальных проблем в вашем JS-коде, кроме того, JSHint — форк от JSLint. Основная цель этого инструмента статического анализа кода — помощь разработчикам JavaScript, работающим над сложными программами. Он способен обнаруживать ошибки синтаксиса, неявное преобразование типов данных или отсутствие переменной. Однако он не может определить скорость и правильность работы вашего приложения, как и не сможет определить проблемы с памятью в вашем приложении. JSHint — форк от JSLint. – это линтер с открытым исходным кодом для веб-приложений JSX и JavaScript. Он помогает обнаруживать сомнительные шаблоны или находить код, который не соответствует конкретным стилям. Это позволяет разработчикам обнаруживать ошибки в JS-коде без его выполнения, тем самым экономя время. Будучи написанным на NodeJS, инструмент предлагает оперативную среду выполнения и плавную установку через npm. — статический контролёр кода для JavaScript, разработанный компанией Facebook. Он использует аннотации статического типа для проверки кода на предмет ошибок. Типы — параметры, установленные разработчиками, а Flow проверяет ваше программное обеспечение на соответствие требованиям.
Системы управления версиями JavaScript необходимы для плавного взаимодействия внутри команды, поскольку они обеспечивают лучшее обслуживание различных версий и помогают отслеживать изменения. С инструментами управления версиями разработчики могут работать над одним и тем же проектом одновременно, без конфликтов и недоразумений. Кроме того, эти утилиты архивируют каждую версию со всеми изменениями, удалениями и добавлениями.
- В последние годы Git стала широко используемой системой контроля версий как для небольших, так и для крупных проектов. Эта бесплатная утилита обеспечивает отличную скорость работы и эффективность. Её популярность объясняется высокораспределенной системой и различными типами элементов управления, а также промежуточной областью, где версии могут быть просмотрены и отформатированы непосредственно перед завершением фиксации.
- Инструмент Subversion или SVN приобрёл огромную популярность, и он по-прежнему широко используется в проектах с открытым исходным кодом и такими платформами, как Python Apache или Ruby. Этот CVS поставляется со множеством функций, позволяющих управлять различными операциями (переименование, копирование, удаление и т. д.), слияниями, блокировкой файлов и многим другим.
Современное ПО хранится в виде пакетов в репозиториях. Такие пакеты предоставляют исходные компоненты операционной системы, такие как приложения, библиотеки, службы и документы. Системы управления пакетами отвечают за различные операции, такие как установка и обновление, тем самым помогают убедиться, что программное обеспечение было одобрено разработчиками.
-
— разработка Twitter, которая помогает управлять ресурсами, фреймворками, библиотеками и другими утилитами. Она предлагает доступ к большому количеству пакетов, помогая разработчикам JavaScript оптимизировать процесс разработки и улучшить результаты. — диспетчер пакетов узлов. Пакеты могут использоваться как для фронтенда, так и для бэкенда. Npm является системой управления пакетами для JavaScript и самым большим реестром программного обеспечения в мире, насчитывающим более 475 000 модулей. — инструмент, который приобрёл популярность благодаря Google, Facebook, Tilde и Exponent. Основное внимание в нём уделено безопасности, скорости и быстродействию. Инструмент позволяет совместно использовать код через пакеты и модули вместе с файлом, описывающим пакет. вобрал в себя лучшее из Browserify, Component и Go, превратив разработку фронтенда в быстрый и простой процесс. Основная идея Duo заключается в упрощении написания модульных компонентов и создания масштабных веб-приложений быстро и «безболезненно».
Список лучших инструментов для разработки на JavaScript может продолжаться до бесконечности. В этой статье вы увидели лишь популярные и надёжные инструменты, которые служат основой для качественных продуктов. Благодарим за внимание!