Node.JS [ru] | Серверный JavaScript
11.4K subscribers
91 photos
5 videos
25 files
3.22K links
Все о разработке backend части на JavaScript (Node JS).
А так же: Express JS, Next JS, Nest, Socket.IO

Канал на бирже - https://telega.in/c/we_use_js

По вопросам рекламы или разработки: @g_abashkin

РКН: https://vk.cc/cJPGOP
Download Telegram
🎯 Работай в коротких циклах

Залипаешь на задаче, а потом понимаешь, что полдня ушло, а результата нет?

👉 Совет: используй метод Pomodoro или спринты по 30-40 минут. Устанавливай себе небольшие цели: например, «разобраться с логикой функции», «добавить обработку ошибок». Это удерживает фокус и помогает видеть прогресс.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👎1
🎯 Погружайся в «смежные зоны»

Ты специализируешься на backend’е, но frontend для тебя тёмный лес? Или хорошо кодишь, но понятия не имеешь, как работает DevOps?

👉 Совет: раз в неделю уделяй время на изучение чего-то за пределами своей зоны комфорта. Это может быть просмотр видео, разбор чужого кода или маленький проект. Чем шире твои знания, тем проще видеть картину целиком, а значит, и решать задачи эффективнее.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍93👎1
👩‍💻 Создание npm пакета на TypeScript с поддержкой CommonJS и ESM

Если необходимо создать npm пакет и гарантировать, что его смогут использовать все желающие, нужно, чтобы он поддерживал CommonJS (CJS) и ECMAScript Modules (ESM). Рассмотрим, как создать такой пакет используя TypeScript.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
👩‍💻 JavaScript: Обзор фреймворков и выбор для новичков

В этой статье мы рассмотрим различные фреймворки JavaScript и поможем новичкам определиться с выбором инструмента для своих проектов.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
👩‍💻 Что такое Worker Threads в Node.js?

Worker Threads — это модуль в Node.js, который позволяет создавать несколько потоков для выполнения JavaScript кода параллельно. Это полезно для CPU-интенсивных операций, так как основной поток Node.js работает в однопоточном режиме и не подходит для вычислительно сложных задач.

➡️ Пример: В этом примере создаётся воркер для выполнения тяжёлой задачи параллельно с основным потоком.

const { Worker, isMainThread, parentPort } = require('worker_threads');

if (isMainThread) {
const worker = new Worker(__filename);
worker.on('message', (message) => {
console.log(`Сообщение от воркера: ${message}`);
});
} else {
parentPort.postMessage('Выполняется в воркере');
}


🗣️ Worker Threads позволяет выполнять тяжёлые задачи параллельно основному потоку, повышая производительность в многопроцессорных системах.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
🛠 17 суперинструментов для разработки фронтенда

Подборка опенсорсных библиотек на все случаи жизни – от создания графиков и диаграмм до масштабирования проекта с помощью распределенного выполнения задач и кэширования вычислений.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Как использовать Corepack

Недавно я узнал о corepack, инструменте, работающем с Node.js и решающем множество проблем с менеджерами пакетов. С этого момента буду использовать его в своём процессе разработки.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2👎1🐳1
👩‍💻 Как использовать файловую систему в Node.js

Веб-приложениям не всегда нужна запись в файловую систему, но Node.js предоставляет для этого обширный интерфейс прикладного программирования (API). Это может понадобиться, если вы ведёте логи отладки, передаёте файлы на сервер или с сервера, или создаёте инструменты командной строки.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 Задачка по NodeJS

Создайте приложение на Node.js, которое работает как таймер обратного отсчёта. Программа должна принимать количество секунд в качестве аргумента командной строки и каждую секунду выводить сообщение с оставшимся временем: "Осталось X секунд". Когда отсчёт завершится, программа должна вывести "Время вышло!" и остановиться.

➡️ Пример: если вы запустите программу с аргументом 10, она будет выводить каждую секунду:

Осталось 10 секунд
Осталось 9 секунд
...
Осталось 1 секунда
Время вышло!


Решение задачи ⬇️

const seconds = parseInt(process.argv[2]);

if (isNaN(seconds) || seconds <= 0) {
console.log('Введите корректное количество секунд.');
process.exit(1);
}

let remainingTime = seconds;

const countdown = setInterval(() => {
if (remainingTime > 0) {
console.log(`Осталось ${remainingTime} секунд`);
remainingTime--;
} else {
console.log('Время вышло!');
clearInterval(countdown);
}
}, 1000);
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥4
👩‍💻 Node.js Test Runner: Руководство для начинающих

Исторически сложилось так, что в Node.js отсутствовал интегрированный прогонщик тестов, что вынуждало разработчиков полагаться на сторонние фреймворки, такие как Jest или Mocha

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Frontender's notes [ru]
Supply Chain атака на npm: Shai-Hulud — угроза, которая заражает проекты

Недавняя атака на экосистему npm под названием Shai-Hulud привлекла внимание разработчиков по всему миру. Это масштабная supply chain атака, которая затронула более 500 пакетов, включая популярные библиотеки, такие как ngx-toastr, tinycolor, react-jsonschema-form-extras и пакеты от CrowdStrike.

Заражённые пакеты содержат вредоносный скрипт bundle.js. Этот скрипт запускает TruffleHog для поиска секретных данных, таких как GitHub токены, NPM ключи или AWS креды, и отправляет их на внешний сервер. Дополнительно создаётся вредоносный workflow в папке .github/workflows, который будет автоматически запускаться при каждом CI-процессе. В итоге, атака действует как червь, распространяясь через каждый новый пакет, заражая downstream-проекты.


ℹ️ Что делать разработчикам

Проверить проекты на наличие заражённых версий пакетов
Ротировать npm-токены, GitHub PAT и облачные креды, чтобы минимизировать последствия
Аудитировать CI/CD конфигурации для выявления подозрительных изменений
Обновлять пакеты только из доверенных источников, избегать использования сомнительных версий


📌 Supply chain атаки становятся всё более изощрёнными и опасными. Ранее мы переживали только за typosquatting, а теперь столкнулись с реальными «npm-червями», которые могут заразить проекты на всех уровнях. Если вы работаете с публичными пакетами, регулярный аудит зависимостей и CI/CD — теперь часть обязательной практики.

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
3🐳1
👩‍💻 Что такое Child Processes в Node.js?

Child Processes — это модуль в Node.js, который позволяет запускать дочерние процессы для выполнения команд в операционной системе. Это полезно для выполнения многозадачных операций, таких как запуск команд оболочки или параллельные вычисления.

➡️ В этом примере создаётся дочерний процесс для выполнения команды ls в терминале и вывода результата в консоль.

const { exec } = require('child_process');

exec('ls', (error, stdout, stderr) => {
if (error) {
console.error(`Ошибка: ${error.message}`);
return;
}
if (stderr) {
console.error(`stderr: ${stderr}`);
return;
}
console.log(`Результат команды:\n${stdout}`);
});


🗣️ Child Processes позволяет запускать системные команды и выполнять параллельные операции вне основного потока Node.js.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥52
👩‍💻👩‍💻 Сравнение Node.js с JavaScript в браузере

Способность понимать Node по-прежнему остаётся важным навыком, если вы фронтэнд разработчик. Deno появился как ещё один способ запуска JavaScript вне браузера, но огромная экосистема инструментов и программного обеспечения Node, означают, что в ближайшее время он никуда не денется.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
👩‍💻 Как обновить опубликован­ный пакет npm

Предположим, что мы сделали обновление, но npm publish выдаёт ошибку. Как исправить ошибку: "You cannot publish over the previously published versions"

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
👩‍💻 Задачка по NodeJS

Создайте приложение на Node.js, которое эмулирует систему регистрации и входа пользователей. Программа должна принимать два аргумента командной строки: "register" или "login" и имя пользователя. Если пользователь регистрируется, программа должна сохранить его в текстовый файл (users.txt). Если пользователь пытается войти в систему, программа должна проверить, зарегистрирован ли этот пользователь в файле, и вывести соответствующее сообщение.

➡️ Пример:

node app.js register Alice — добавляет пользователя Alice в файл.
node app.js login Alice — проверяет, существует ли Alice в файле, и выводит сообщение об успешном входе или ошибке.

Решение задачи ⬇️

const fs = require('fs');
const action = process.argv[2];
const username = process.argv[3];
const filePath = 'users.txt';

if (!action || !username) {
console.log('Используйте: node app.js <register|login> <username>');
process.exit(1);
}

// Функция для регистрации пользователя
function registerUser(username) {
fs.appendFile(filePath, `${username}\n`, (err) => {
if (err) {
console.error('Ошибка регистрации:', err);
process.exit(1);
}
console.log(`Пользователь ${username} зарегистрирован.`);
});
}

// Функция для входа пользователя
function loginUser(username) {
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
console.error('Ошибка чтения файла:', err);
process.exit(1);
}

const users = data.split('\n').map(user => user.trim());
if (users.includes(username)) {
console.log(`Пользователь ${username} успешно вошёл в систему.`);
} else {
console.log(`Пользователь ${username} не найден.`);
}
});
}

// Логика обработки команд
if (action === 'register') {
registerUser(username);
} else if (action === 'login') {
loginUser(username);
} else {
console.log('Неизвестное действие. Используйте "register" или "login".');
}
Please open Telegram to view this post
VIEW IN TELEGRAM
8
👩‍💻 Объект URL в JavaScript: полный разбор

Объект URL в JavaScript представляет URL-адрес и предоставляет удобные методы для работы с ним. Он позволяет анализировать, конструировать и декодировать URL-адреса.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍1
👩‍💻 JavaScript для новичков: чем опасны нестрогие типы данных

Когда начинаешь изучать JavaScript, сначала чувствуешь эйфорию: очень легко работать с переменными, не нужно следить за типами, просто назвал и пользуешься. Но с великой свободой приходит великая ответственность.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 Что такое process.hrtime() в Node.js?

process.hrtime() — это метод, который возвращает высокоточное время в виде массива из двух чисел: секунд и наносекунд. Он используется для точного измерения времени выполнения кода или определенных операций, так как имеет более высокую точность, чем Date.now().

➡️ В этом примере измеряется время выполнения цикла с использованием process.hrtime().

// Начальное время
const startTime = process.hrtime();

// Выполняем код, время выполнения которого нужно измерить
for (let i = 0; i < 1e6; i++) {}

// Измеряем конечное время
const diff = process.hrtime(startTime);
console.log(`Время выполнения: ${diff[0]} сек, ${diff[1] / 1e6} мс`);


🗣️ process.hrtime() позволяет измерять временные интервалы с высокой точностью, что полезно для оптимизации производительности в приложениях Node.js.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM