Оглавление
1.2.1 Руководящий технический комитет
1.5 Область применения Node.js
1.2 Организация Node.js
О комьюнити Node.js мы уже начала рассказывать в предыдущей главе. По описанным выше причинам, у Node.js нет отдельно руководящих лиц, его управлением занимается комьюнити из нескольких человек, которые принимают решения касательно развития и совершенствования платформы.
1.2.1 Руководящий технический комитет
Руководящий технический комитет(TSC) отвечает за дальнейшую разработку платформы. Количество членов TSC не лимитировано, однако обычно выбирается от 6 до 12 человек, принимающих участие в выпуске платформы. Участники TSC решают следующих задачи:
-
Управление техническим развитием Node.js
-
Контроль за проектом и процессом разработки
-
Определение политики взносов
-
Управление репозиторием GitHub
-
Установка соглашений по написанию кода и технической документации
-
Менеджмент списка сотрудников
TSC на регулярной основе опубликовывает свои тех митинги на официальном Youtube канале – www.youtube.com/c/nodejs+foundation.
1.2.2 Соавторы
Node.js – это проект с открытым исходным кодом, размещаемом на GitHub репозитории. Как и во всех крупных проектах такого типа, группа людей, называемая соавторы(мы допустили вольность в переводе – в оригинале пишется collaborates – коллаборанты), имеет доступ на запись в этот репозиторий. В дополнение к доступу к репозиторию, соавторы также имеют доступ к задачам непрерывной интеграции. Типичные задачи сотрудников включают в себя поддержку пользователей и новых соавтором, улучшение исходного кода Node.js и документации, анализ заливаемого кода в репозиторий и разбор ошибок кода(с соответствующими комментариями), командная работа в рабочих группах и слияние pull запросов.
Соавторы назначаются TSC. Обычно назначение роли соавтора предшествует значительный вклад в жизни проекта путем изучения исходного кода и помощи в поиске багов и внесении предложений об улучшении исходного кода.
1.2.3 Комитет Сообщества
Как следует из названия, Комитет Сообщества(CommComm) заботится о сообществе Node.js, делая упор на образование и культуре. CommComm организовывает регулярные митинги, которые сохраняются в отдельном GitHub Репозитории(https://github.com/nodejs/community-committee). Смысл существования CommComm состоит в том, чтобы дать сообществу право голоса и таким образом соблюсти баланс с интересами коммерческих корпораций.
1.2.4 Рабочие группы
Руководящий технический комитет создает различные рабочие группы для решения экспертами различных конкретных тем. Примеры таких рабочих групп :
-
Release
Эта рабочая группа занимается выпуском релизов платформы Node.js, определяет содержимое релизов и заботится об LTS релизах -
Streams
Рабочая группа по потокам работает над улучшением и сопровождением Stream API -
Docker
Эта рабочая группа управляет официальным образами платформы Docker и следит за их актуальностью.
1.2.5 Сообщество OpenJS
Сообщество OpenJS выступает в роли своеобразного защитного зонтика для Node.js разработчиков. Его цель похожа на цель Linux сообщества для разработчиков операционной системы Linux. Организация OpenJs была основана как независимое сообщество разработчиков Node.js. В список основателей сообщества входят такие гиганты как IBM, Intel, Joyent и Microsoft. Само сообщество OpenJS существует на пожертвования от компаний и обычных людей.
1.3 Версии Node.js
Главной проблемой и основным направлением критики платформы Node.js до ответвления io.js было то, что разработка шла довольно медленно. Регулярные запланированные выпуски являются важным критерием в пользу выбора ИМЕННО данной платформы. особенно в сфере корпоративных разработок. Именно по этой причине после слияния веток Node.js и io.js сообщество согласовывает прозрачный график выпуска релизов и срок поддержки LTS версий(LTS подразумевает выпуск обновлений в течении достаточно длительного промежутка времени). График релизов подразумевает выпуск одной главное версии как в полгода.
Как можно увидеть на графике, время поддержки 14 версии уже вышло на днях, а 16 версии закончится в течении следующих 5 месяцев. И в ближайшие месяц – два выйдет новая версия 20 платформы(по состоянию на 11 апреля 2023 года идет речь).
1.3.1 LTS релизы
Четная версия Node.js переходит в категорию LTS сразу после выхода следующей нечетной версии. Затем LTS выпуск активно поддерживает следующих 12 месяцев. За это время версия получает:
- Исправление ошибок
- Обновления безопасности
- Незначительные обновления npm пакетов
- Обновление документации
- Повышение производительности без ущерба для существующих приложений
- Изменения в исходном коде, упрощающие интеграцию будущих улучшений
После этого этапа, LTS версия переходит на этап 12 месячной поддержки. В это время платформа получает только критические обновления, касающиеся ошибок и проблем с безопасностью. Итого срок поддержки LTS платформы ограничивается сроком в 30 месяцев.
1.4 Преимущества Node.js
История развития платформы Node.js весьма ясно показывает: она напрямую связана с интернетом. Используя язык JavaScript в качестве базы разработки приложений, Вы можете очень быстро добиться видимых результатов используя возможности Node.js. Платформа Node.js занимает мало места, высокопроизводительная и может быть установлена на большинстве популярных ОС. Как и во всех скриптовых языках, процесс разработки Node.js приложений не является сложным, и результаты разработки видны сразу. В дополнение к сверх быстрому развертыванию, Вы также можете весьма гибко реагировать на меняющиеся требования во время разработки веб приложений. Поскольку ядро языка JavaScript стандартизировано под стандарт ECMAScript, JavaScript представляет собой крепкую основу, с помощью которой Вы можете реализовать более надежные, высокопроизводительные и эффективные приложения. Доступные возможности языка отлично задокументированы онлайн и в многочисленных книгах, в том числе и на нашем сайте. Таким образом, разработчики, хорошо знающие язык JavaScript могут создавать крупные Enterprise приложения с высокой нагрузкой. Так как Node.js использует тот же движок JavaScript, что и Google Chrome – движок V8 – в Node.js доступные все те же языковые возможности и поэтому разработчики, которые хорошо знакомы с языком JavaScript могут довольно быстро ознакомиться с новой платформой.
За свою долгую историю, JavaScript породил множество высокопроизводительных движков. Как мы уже писали в разделе история, главная причина, почему это произошло – на заре развития веб технологий, каждый разработчик браузера всегда разрабатывал свою реализацию движка JavaScript, поэтому на рынке существовала сильная конкуренция, которая только положительно сказывалась на развитии движков. Это положение привело к тому ,что с одной стороны JavaScript теперь интерпретируется очень быстро, а с другой стороны к тому, что разработчики браузеров в конце концов договорились об общих стандартах. Node.js как платформа для серверной реализации JavaScript изначально разрабатывалась как проект с исходным кодом. По этому причине вокруг платформы довольно быстро сформировалось активное сообщество, которое применяет Node.js в практических задачах, а также занимается дальнейшим развитием платформы. Обучающие ресурсы по Node.js варьируются от руководств, которые помогут Вам приступить к разработке Ваших первых приложений, до статей по сложным темам – отладка, масштабирование и качество разрабатываемых приложений. Большое преимущество таких проектом с открытым исходным кодом, как Node.js заключается в том, что вся информация о продукте, как и сам продукт – предоставляется бесплатно, а большинство вопросов, и ошибок могут быть решены сообщество в предельно короткие сроки – даже быстрее чем это будет сделано в корпоративном продукте.
1.5 Область применения Node.js
Node.js можно использовать где угодно: от простого приложения с командной строкой, до сложного веб приложения, работающего в кластере с многочисленными узлами. Использование той или иной технологии зависит главным образом от поставленной задачи, уровня знаний программиста и и личных предпочтений. Именно по этой причине Вы должны знать не только ключевые возможности Node.js, но и иметь полное представление о платформе. Полное представление о платформе Вы можете получить, только если присоединитесь к разработке существующего проекта Node.js или если получите опыт, разрабатывая самостоятельно небольшие проекты по самым различным темам и задачам.
Рассмотрим самые важные преимущества фреймворка:
- Чистый JavaScript
Когда Вы работаете с Node.js – Вам не нужно изучать новый диалект языка, потому что Вы работаете с ядром языка JavaScript. Также Вам доступны стандартизированные и хорошо документированные интерфейсы для доступа к системным ресурсам. В качестве альтернативы Вы можете языку JavaScript Вы можете написать приложение на TypeScript, перевести исходный код в JavaScript и затем запустить его в Node.js. Больше информации об этой теме Вы можете найти в главе 13.
- Оптимизированный движок
Node.js базируется на движке Google JavaScript V8. Преимущество заключается главным образом в использовании постоянно развивающегося и совершенствующегося движка, в котором все новые языковые функции появляются в самом скором времени.
- Неблокирующий ввод/вывод
Все операции, которые не выполняются непосредственно в Node.js, не блокируют выполнение Вашей программы. Принцип Node.js заключается в том, что все операции, которые не выполняет платформа – передается непосредственно операционной системе, другим приложениям или другим системам. Это позволяет приложению отвечать на другие запросы или выполнять приложение параллельно. После завершения выполнения задачи, процесс Node.js получает уведомление и может продолжать обрабатывать информацию.
- Однопоточный
Типичное Node.js приложение выполняется в однопоточном процессе. Долгое время не было никакого мультипоточного выполнения и весь параллелизм сводился к неблокирующему вводу-выводу, как было описано выше. Таким образом, весь создаваемый Вами код потенциально может заблокировать Ваше приложение. Поэтому Вам необходимо обращать внимание на разработку с бережным подходом к использованию ресурсов. Если все же у Вас возникает необходимость параллельных задач, Вам необходимо обратить внимание на модуль child_process , который позволяет создавать Вам собственные дочерние процессы.
Для того, чтобы добиться успехов в разработке приложений, Вам необходимо иметь полное и ясное представление о компонентах и как они работают. Самый важный компонент из всех – это движок V8.