Node.JS [ru] | Серверный JavaScript

Адрес канала: @we_use_js
Категории: Технологии , Образование
Язык: Русский
Страна: Россия
Количество подписчиков: 11.18K
Описание канала:

Все о разработке backend части на JavaScript (Node JS).
А так же: Express JS, Next JS, Nest, Socket.IO
Канал на бирже - https://telega.in/c/we_use_js
По вопросам рекламы или разработки: @g_abashkin
РКН: https://vk.cc/cJPGOP

Рейтинги и Отзывы

4.00

2 отзыва

Оценить канал we_use_js и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

0

3 звезд

1

2 звезд

0

1 звезд

0


Последние сообщения

15 янв
Сканирование папки на расширения файлов

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

Пример:

node fileExtensions.js ./example-folder
txt: 3
js: 5
json: 2

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

const fs = require('fs');
const path = require('path');

const folderPath = process.argv[2];

if (!folderPath) {
console.error('Укажите путь к папке.');
process.exit(1);
}

fs.readdir(folderPath, (err, files) => {
if (err) {
console.error('Ошибка чтения папки:', err.message);
return;
}

const extensionCount = files.reduce((acc, file) => {
const ext = path.extname(file).slice(1); // Получаем расширение без точки
if (ext) {
acc[ext] = (acc[ext] || 0) + 1;
}
return acc;
}, {});

console.log('Расширения файлов:');
for (const [ext, count] of Object.entries(extensionCount)) {
console.log(`${ext}: ${count}`);
}
});
734 views17:07
Подробнее
Поделиться:
Открыть/Комментировать
15 янв
Различные (и современные) способы переключения контента

Давайте уделим немного времени рассмотрению Dialog API, Popover API и остальных. Рассмотрим, когда лучше использовать каждый из них в зависимости от требований. Модальные или немодальные? JavaScript или чистый HTML/CSS? Не уверены? Не волнуйтесь, мы разберёмся во всём этом.

Читать...
850 views12:07
Подробнее
Поделиться:
Открыть/Комментировать
14 янв
Используем ShakaPlayer в LightningJS

Хотите интегрировать ShakaPlayer в приложение Lightning для управления воспроизведением? Изучите краткое руководство по расширению стандартного медиаплеера в Lightning и использованию его с ShakaPlayer.

Читать...
971 views18:07
Подробнее
Поделиться:
Открыть/Комментировать
14 янв
Пишете на Vue и давно работаете с Vue Router по привычке? Сейчас в экосистеме появляется новая опция — Kitbag Router. Лёгкий повод пересобрать подход к роутингу и обновить стек.

На открытом уроке разберём, как подключить его к проекту, настроить под свой стек и чем он принципиально отличается от Vue Router. Пошагово пройдём путь от установки до рабочих маршрутов в SPA.

Вы познакомитесь с новой библиотекой роутинга для VueJS, научитесь создавать приложения с клиентским роутингом на Kitbag Router, сравнивать его с Vue Router и осознанно выбирать инструмент под задачу.

Встречаемся 21 января в 20:00 МСК в преддверие старта курса «Vue.js разработчик». Регистрация открыта: https://otus.pw/poGiC/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, erid: 2VtzqvceJBU
1.02K views16:07
Подробнее
Поделиться:
Открыть/Комментировать
14 янв
Задачка по NodeJS

Напишите скрипт, который принимает название города и выводит текущую температуру в этом городе, используя бесплатный API OpenWeatherMap.

Пример использования:

node weather.js London
Текущая температура в London: 15°C

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

const https = require('https');

const city = process.argv[2];
const apiKey = 'your_openweathermap_api_key'; // Замените на свой API-ключ

if (!city) {
console.error('Пожалуйста, укажите город.');
process.exit(1);
}

const url = `https://api.openweathermap.org/data/2.5/weather?q=${city}&units=metric&appid=${apiKey}`;

https.get(url, (res) => {
let data = '';

res.on('data', (chunk) => {
data += chunk;
});

res.on('end', () => {
const weather = JSON.parse(data);
if (weather.main) {
console.log(`Текущая температура в ${city}: ${weather.main.temp}°C`);
} else {
console.error(`Не удалось получить данные о погоде для города: ${city}`);
}
});
}).on('error', (err) => {
console.error('Ошибка:', err.message);
});
1.05K views12:07
Подробнее
Поделиться:
Открыть/Комментировать
13 янв
Как работает маршрутизация Express

Как в приложении Node.js происходит обработка клиентских запросов? Какая функция помогает обрабатывать тот или иной запрос? Чтобы ответить на эти вопросы, заглянем в "закулисье" маршрутизации фреймворка Express.

Читать...
1.18K views17:07
Подробнее
Поделиться:
Открыть/Комментировать
13 янв
Почему мы выбрали gRPC вместо tRPC?

Статья объясняет, как gRPC упрощает переход от монолита к микросервисам в приложениях на основе Domain Driven Design. Рассматриваются преимущества: прямые вызовы, типизация, децентрализация и автоматизация методов.

Читать...
1.23K views12:07
Подробнее
Поделиться:
Открыть/Комментировать
12 янв
Создание ванильного JavaScript signal() с Proxy

Статья объясняет, как с помощью Proxy в ванильном JavaScript реализовать реактивные сигналы, упрощая управление состоянием. Рассматриваются основные принципы и примеры применения.

Читать...
1.32K views17:07
Подробнее
Поделиться:
Открыть/Комментировать
12 янв
Обрабатывай ошибки так, будто они неизбежны

Если ошибка «маловероятна», значит, она обязательно случится — в самый неподходящий момент.

Совет: добавляй защиту, логирование и fallback-механику даже в тех местах, где уверен на 100%. Код без плана B — это не надёжный код.
1.32K views12:07
Подробнее
Поделиться:
Открыть/Комментировать
11 янв
Испортили git rebase?

Git rebase — мощный инструмент, помогающий перенести или объединить один, или несколько коммитов в новый базовый коммит, переписав историю проекта так, чтобы ваша ветка выглядела созданной из другого коммита. Он помогает поддерживать более чистую и линейную историю.

Читать...
1.48K views17:07
Подробнее
Поделиться:
Открыть/Комментировать
11 янв
Расширения VSCode для комфортной работы с проектами

В статье рассказывается, как настроить рабочее пространство VSCode для разработки. Обзор полезных расширений, которые повышают удобство и продуктивность, и советы по их применению.

Читать...
1.48K views12:07
Подробнее
Поделиться:
Открыть/Комментировать
10 янв
Задачка по NodeJS

Напишите скрипт на Node.js, который считывает JSON-файл, фильтрует данные по указанному ключу и значению, и выводит результат в консоль.

Пример:

node filterJson.js data.json age 30

[
{ "name": "Bob", "age": 30 },
{ "name": "Charlie", "age": 30 }
]

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

const fs = require('fs');

const [,, filePath, key, value] = process.argv;

if (!filePath || !key || !value) {
console.error('Использование: node filterJson.js ');
process.exit(1);
}

fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
console.error('Ошибка чтения файла:', err.message);
process.exit(1);
}

try {
const jsonData = JSON.parse(data);
const filteredData = jsonData.filter(item => item[key] == value);
console.log(JSON.stringify(filteredData, null, 2));
} catch (parseErr) {
console.error('Ошибка парсинга JSON:', parseErr.message);
process.exit(1);
}
});
1.59K views12:07
Подробнее
Поделиться:
Открыть/Комментировать
9 янв
Как использовать npm без опаски

Статья предлагает использовать прокси и кэширование для реестра npm с помощью Verdaccio или Nexus, чтобы повысить безопасность и ускорить установку пакетов. Также обсуждаются риски скриптов жизненного цикла npm и способы их безопасного использования.

Читать...
1.58K views17:07
Подробнее
Поделиться:
Открыть/Комментировать
9 янв
Сложность — это не враг, а индикатор

Если что-то в проекте кажется запутанным, нестабильным и непонятным — не убегай от этого. Это маркер точки роста.

Совет: найди самое страшное место в коде — и разберись. Даже если потребуется день. Это как качать слабое место — больно, но даёт заметный эффект. Сложность показывает, куда идти.
1.55K views12:07
Подробнее
Поделиться:
Открыть/Комментировать
8 янв
Как работает потокобезопасность (thread safety) в Node.js?

Node.js работает в однопоточном режиме, используя цикл событий для обработки асинхронных операций. Однако потокобезопасность становится важной при работе с параллельными задачами или при использовании worker_threads. В таких случаях необходимо обеспечить изоляцию данных между потоками.

Пример:
const { Worker, isMainThread, parentPort } = require('worker_threads');

if (isMainThread) {
const worker = new Worker(__filename);
worker.on('message', msg => console.log(`Получено от воркера: ${msg}`));
worker.postMessage('Привет из основного потока!');
} else {
parentPort.on('message', msg => {
console.log(`Получено в воркере: ${msg}`);
parentPort.postMessage('Привет обратно!');
});
}

Потокобезопасность в Node.js обеспечивается изоляцией памяти worker_threads, и при необходимости обмена данными рекомендуется использовать сообщения между потоками для минимизации риска гонок данных.

Подробнее тут
1.63K views17:07
Подробнее
Поделиться:
Открыть/Комментировать
8 янв
Создание веб-компонента с нуля

Сегодня я решил, что мы создадим HTML веб-компонент с нуля. Давайте создадим компонент, показывающий и скрывающий текст при переключении кнопки.

Читать...
1.45K views12:07
Подробнее
Поделиться:
Открыть/Комментировать
7 янв
Подборка статей для вашей карьеры

• История: работа в чешском Red Hat

• Циничные заметки о карьере в IT от «гейткипера»

• Рецензия на книгу “Изучаем паттерны проектирования JavaScript, 2-е издание”

• Всероссийский рейтинг IT-брендов работодателей 2024

• Моя петиция EB-1A на грин-карту талантов, одобренная с первой попытки
1.57K views17:07
Подробнее
Поделиться:
Открыть/Комментировать
7 янв
Методы жизненного цикла веб-компонента

Вчера мы изучили различные способы инстанцирования веб-компонента. В статье был упомянут метод жизненного цикла connectedCallback(). Сегодня поговорим об остальных методах жизненного цикла веб-компонентов.

Читать...
1.55K views12:07
Подробнее
Поделиться:
Открыть/Комментировать
6 янв
CI/CD для начинающих: деплой React-приложения без боли

В статье показан процесс развертывания React-приложения на сервере: от упаковки кода в CI/CD до отправки его в прод. Всё на примере простого to-do приложения.

Читать...
1.65K views17:07
Подробнее
Поделиться:
Открыть/Комментировать
30 дек 2025
Самые интересные статьи за последние дни:

• SMS-автоответчик с обновлением статуса: еще один канал связи для клиентов, которым мало интернета и звонков

• Попробуйте Tauri

• Новый оператор безопасного присваивания в JavaScript: ?=

• Как ускорить компонентную frontend-разработку с помощью продуктового подхода: опыт Рунити

• PostgreSQL Antipatterns: валим «слона» — highload на ровном месте
461 views17:07
Подробнее
Поделиться:
Открыть/Комментировать
30 дек 2025
Задачка по NodeJS

Создайте приложение на Node.js, которое принимает путь к текстовому файлу в качестве аргумента командной строки, подсчитывает количество строк, слов и символов в файле, а затем сохраняет результат в stats.json. Программа также должна уметь выводить статистику в консоль.

Программа должна уметь выводить статистику по папке в консоль и сохранять её в файл.

Пример:

• node app.js report /path/to/file.txt — создает файл stats.json с количеством строк, слов и символов в файле.
• node app.js print /path/to/file.txt — выводит статистику по файлу в консоль.

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

const fs = require('fs');
const path = require('path');
const { promisify } = require('util');
const readFile = promisify(fs.readFile);

const action = process.argv[2];
const filePath = process.argv[3];
const reportFile = 'stats.json';

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

async function analyzeFile(file) {
const content = await readFile(file, 'utf8');
const lines = content.split('\n').length;
const words = content.split(/\s+/).filter(Boolean).length;
const chars = content.length;

return { lines, words, chars };
}

async function generateReport(file) {
const stats = await analyzeFile(file);
fs.writeFile(reportFile, JSON.stringify(stats, null, 2), (err) => {
if (err) {
console.error('Ошибка при записи отчета:', err);
process.exit(1);
}
console.log(`Отчет сохранен в ${reportFile}`);
});
}

async function printReport(file) {
const stats = await analyzeFile(file);
console.log(`Файл: ${file}`);
console.log(`Количество строк: ${stats.lines}`);
console.log(`Количество слов: ${stats.words}`);
console.log(`Количество символов: ${stats.chars}`);
}

if (action === 'report') {
generateReport(filePath);
} else if (action === 'print') {
printReport(filePath);
} else {
console.log('Неизвестное действие. Используйте "report" или "print".');
}
678 views12:07
Подробнее
Поделиться:
Открыть/Комментировать
29 дек 2025
Всё о циклах в JavaScript

В каждом языке программирования есть циклы. Циклы выполняют операцию (т. е. часть работы) несколько раз, обычно по одному разу для каждого элемента массива или списка, или просто повторяют операцию до тех пор, пока не будет выполнено определённое условие.

Читать...
848 views17:07
Подробнее
Поделиться:
Открыть/Комментировать
29 дек 2025
Как реализовать обмен сообщениями между процессами в Node.js?

В многопроцессных приложениях на Node.js иногда нужно организовать обмен сообщениями между процессами. Это полезно, когда ваше приложение использует форк процессов или воркеры для выполнения задач параллельно.

В этом примере мы используем встроенный модуль child_process для создания дочернего процесса и организации обмена сообщениями.

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

// Запускаем дочерний процесс
const child = fork('child.js');

// Отправляем сообщение дочернему процессу
child.send({ msg: 'Привет, дочерний процесс!' });

// Обрабатываем сообщения от дочернего процесса
child.on('message', (message) => {
console.log('Родитель получил:', message);
});

// Код дочернего процесса (child.js)
process.on('message', (message) => {
console.log('Дочерний процесс получил:', message);
// Отправляем ответ родительскому процессу
process.send({ msg: 'Привет, родительский процесс!' });
});

Использование сообщений между процессами полезно для разделения вычислений и повышения производительности.
926 views12:07
Подробнее
Поделиться:
Открыть/Комментировать
28 дек 2025
Проблемы экспорта по умолчанию в JavaScript модулях

JavaScript модули позволяют организовывать код для повторного использования. Существует два метода экспорта: по умолчанию и именованный. В этой статье разбираем экспорт по умолчанию и причины, почему его стоит избегать.

Читать...
1.01K views17:07
Подробнее
Поделиться:
Открыть/Комментировать
28 дек 2025
Создание конфигурируемого Webhook-модуля для NestJS-приложении

В рамках этой статьи я опишу создание двух NestJS-модулей с различным способом конфигурирования: утилитарный модуль и бизнес-модуль со своей базой данных.

Читать...
1.07K views12:07
Подробнее
Поделиться:
Открыть/Комментировать
27 дек 2025
Задачка по NodeJS

Создайте приложение на Node.js, которое принимает путь к папке в качестве аргумента командной строки и создает файл report.json, содержащий статистику по этой папке: количество файлов, количество папок, и общий размер всех файлов.

Программа должна уметь выводить статистику по папке в консоль и сохранять её в файл.

Пример:

• node app.js report /path/to/folder — создает файл report.json с данными о содержимом папки.
• node app.js print /path/to/folder — выводит статистику о папке в консоль.

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

const fs = require('fs');
const path = require('path');
const { promisify } = require('util');
const readdir = promisify(fs.readdir);
const stat = promisify(fs.stat);

const action = process.argv[2];
const folderPath = process.argv[3];
const reportFile = 'report.json';

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

async function analyzeFolder(folder) {
const entries = await readdir(folder, { withFileTypes: true });
let totalSize = 0;
let fileCount = 0;
let folderCount = 0;

for (const entry of entries) {
const fullPath = path.join(folder, entry.name);
if (entry.isDirectory()) {
folderCount++;
const { totalSize: folderSize, fileCount: folderFiles, folderCount: subFolderCount } = await analyzeFolder(fullPath);
totalSize += folderSize;
fileCount += folderFiles;
folderCount += subFolderCount;
} else if (entry.isFile()) {
const fileStats = await stat(fullPath);
fileCount++;
totalSize += fileStats.size;
}
}

return { totalSize, fileCount, folderCount };
}

async function generateReport(folder) {
const stats = await analyzeFolder(folder);
const reportData = {
folder: folder,
files: stats.fileCount,
folders: stats.folderCount,
totalSize: stats.totalSize,
};

fs.writeFile(reportFile, JSON.stringify(reportData, null, 2), (err) => {
if (err) {
console.error('Ошибка при записи отчета:', err);
process.exit(1);
}
console.log(`Отчет сохранен в ${reportFile}`);
});
}

async function printReport(folder) {
const stats = await analyzeFolder(folder);
console.log(`Папка: ${folder}`);
console.log(`Количество файлов: ${stats.fileCount}`);
console.log(`Количество папок: ${stats.folderCount}`);
console.log(`Общий размер файлов: ${stats.totalSize} байт`);
}

if (action === 'report') {
generateReport(folderPath);
} else if (action === 'print') {
printReport(folderPath);
} else {
console.log('Неизвестное действие. Используйте "report" или "print".');
}
1.13K views17:07
Подробнее
Поделиться:
Открыть/Комментировать
27 дек 2025
Обзор лучших библиотек для визуализации данных

Визуализация данных — важная часть любого проекта, связанного с аналитикой и обработкой данных. Мы рассмотрим 7 библиотек: Plotly, D3.js, Nivo, Latitude, Apache ECharts, Victory и Chart.js.

Читать...
1.11K views12:07
Подробнее
Поделиться:
Открыть/Комментировать
26 дек 2025
Управляйте промисами используя Promise.withResolvers()

Метод Promise.withResolvers() повышает гибкость, позволяя удалённо разрешать или отклонять промисы, упрощая и оптимизируя асинхронный код.

Читать...
1.18K views17:07
Подробнее
Поделиться:
Открыть/Комментировать
26 дек 2025
Переменные среды/окружения в Node.js: Как правильно их установить

В этой статье мы погрузимся в мир переменных среды в Node.js, рассмотрим их преимущества, примеры использования и лучшие практики эффективного управления ими.

Читать...
1.17K views12:07
Подробнее
Поделиться:
Открыть/Комментировать
25 дек 2025
Тестируй даже то, что кажется надёжным

«Это никогда не ломается» — последняя фраза перед катастрофой. Особенно в частях кода, которые трогают редко.

Совет: пиши тесты для стабильных участков кода. Именно они чаще всего становятся ловушкой, когда всё вокруг уже поменялось, а эти куски — нет. Спокойствие в проде начинается с паранойи в деве.
1.23K views17:07
Подробнее
Поделиться:
Открыть/Комментировать