Сергей Олиферчик
Open Source JavaScript-движок V8
Библиотека libuv
Встроенное API
timers: коллбэки, запланированные методами setTimeout() и setInterval();
pending callbacks: выполняются все коллбэки, кроме событий close, таймеров и setImmediate();
idle, prepare: используется только для внутренних целей;
poll: ответственен за получение новых событий ввода / вывода.
check: коллбэки, вызванные методом setImmediate();
close callbacks: например, socket.on('close', ...);
Для обработки N запросов серверу нужно N потоков. Если сервер получает N+1 запросов, тогда он должен ждать пока один из потоков не станет доступным.
всё из-за блокирующих операций ввода / вывода.
Допустим, Вы разрабатываете онлайн магазин и Вам нужна страница где пользователь может просматривать список всех товаров.
Пользователь стучится на http://yourstore.com/products и сервер рендерит HTML файл со всеми продуктами с базы данных в ответ.
Совсем не сложно, да ?
Cохранение системные логи в файл; Поток ждёт
Логи сохранены и следующие функции выполняются; Поток работает
Время обращаться к базе данных и получать все продукты; Поток ждёт
Движок рендеринга делает свою работу и шлёт ответ клиенту. Поток работает снова
Для установки какой-либо версии Node.js лучше всего использовать NVM, так как он позволяет быстро переключаться между различными версиями Node.js, если это необходимо.
|
|
||||||
|---|---|---|---|---|---|---|
| Release | Status | Codename | Initial Release | Active LTS Start | Maintenance LTS Start | End-of-life |
| v10 | Maintenance LTS | Dubnium | 2018-04-24 | 2018-10-30 | 2020-05-19 | 2021-04-30 |
| v12 | Active LTS | Erbium | 2019-04-23 | 2019-10-21 | 2020-10-20 | 2022-04-30 |
| v14 | Current | 2020-04-21 | 2020-10-20 | 2021-10-19 | 2023-04-30 | |
| v15 | Pending | 2020-10-21 | 2021-04-01 | 2021-06-01 |
npm init
npm install/uninstall (с различными флагами, например --save-dev, -g)
npm audit fix
npm publish/unpublish
Более 800 тыс. пакетов
Библиотека left-pad
Конфликты версий
Заражение и audit
Большой размер node_modules
основатель Stack Overflow