we_use_js | Unsorted

Telegram-канал we_use_js - Node.JS [ru] | Серверный JavaScript

11232

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

Subscribe to a channel

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

👩‍💻 Как использовать npm без опаски

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

Читать...

Читать полностью…

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

Баланс: pet-проекты vs работа

Каждый разработчик хоть раз ловил себя на мысли: “Хочу сделать свой проект. Но после работы нет ни сил, ни желания писать код.”
И вот тут начинается борьба между желанием развиваться и желанием просто отдохнуть.

Pet-проекты — это топливо для роста.
Ты пробуешь новые технологии без дедлайнов, без легаси и без код-ревью с “а зачем тут вообще useMemo?”.
Это та самая зона, где возвращается интерес к разработке, особенно когда на работе монотонные задачи.

Но.

🙅‍♂️ Pet-проект не должен превращаться во вторую работу.
Если ты после 8 часов продакшена садишься за ещё 4 часа кода — это не развитие, это выгорание в красивой обёртке.

И так: как найти баланс?:

🔘 Делай pet-проекты короткими и законченными.
Маленький тул или демо — лучше, чем вечный “стартап мечты”.
🔘 Ставь себе ограничение по времени.
Например, кодишь только 2 вечера в неделю.
🔘 Не чувствуй вины, если не делаешь ничего.
Отдых — тоже часть продуктивности.
Мой личный опыт:
Pet-проекты реально помогают не терять интерес к коду.
Но только когда они не конкурируют с отдыхом, а заменяют бессмысленный скролл YouTube чем-то, что тебя вдохновляет.


Итог:
Работа — даёт стабильность.
Pet-проекты — дают развитие.
Отдых — даёт энергию, чтобы выдержать первые два пункта.

Главное — не забывать, что кодить “в кайф” иногда важнее, чем кодить “всё время”.

Читать полностью…

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

👩‍💻 Управление Node.js 19 и NPM 9 с помощью NVM

Статья знакомит с использованием NVM для управления версиями Node.js и npm, показывая примеры с Node.js 19 и npm 9. Объясняются преимущества NVM для безопасного обновления и тестирования новых возможностей.

Читать...

Читать полностью…

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

23 октября в 19:00 (Мск) Health-Samurai проводят онлайн-митап по чистой архитектуре на Node.js. Узнаем, как с нуля построить гибкий и расширяемый бэкенд на базе express/fastify, без лишних зависимостей и ограничений фреймворков.

Разберем подробнее:
🔈 Отличие контроллеров от HTTP-деталей и как их грамотно выстроить;
🔈 Изоляция бизнес-логики в сервисах и use cases;
🔈 Управление Middleware: превращаем хаос в понятный поток;
🔈 Обработка ошибок с Custom Errors и Exception Filters;
🔈 Настройка IoC и DI с помощью Inversify и покрытие автотестами через vitest.

Приглашаем всех, кто хочет получить больше контроля над архитектурой без привязки к Nest.js.

Участие бесплатное, нужна регистрация! Подробности 👉 здесь.

Читать полностью…

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

Эпопея шахматных движков: мой опыт в разработке шахматной программы

В этой статье я расскажу про личный опыт написания шахматной программы на языке TypeScript. С какими проблемами столкнулся и пути к их решению.

Читать...

Читать полностью…

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

😨 Асинхронность в JavaScript — главный источник боли у разработчиков. Callback hell, ошибки в промисах, непредсказуемое поведение кода… знакомо?

❗️ На открытом уроке курса мы разложим по полочкам всю эволюцию подходов к асинхронности: от первых колбэков до современного Async/Await.

Вы научитесь работать с Event Loop, свободно комбинировать Promises и async-функции, обрабатывать ошибки правильно и писать код, который не ломается в продакшене. А ещё узнаете, как параллелить операции без ловушек и антипаттернов.

👉 Подключайтесь 20 октября в 20:00 МСК. Урок проходит в преддверие старта курса «JavaScript Developer. Professional». Все участники получат скидку на обучение. Регистрация открыта: https://vk.cc/cQlNwP

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Читать полностью…

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

👩‍💻 Новые альтернативы innerHTML

Статья объясняет появление метода setHTMLUnsafe для работы с HTML в браузерах. Разбираются особенности безопасности, отличия от setHTML и innerHTML, а также поддержка в разных браузерах и значение нового подхода к именованию методов.

Читать...

Читать полностью…

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

➡️ Самые интересные статьи за последние дни:

Быстрее пули: как найти счастье с PostgreSQL

Куда движется Laravel? Обзор интервью с Taylor Otwell

Nexus-IoC — хорошо знакомый незнакомец в мире TypeScript и DI

Как сделать React Server Components в Electron с помощью Next.js и без открытых портов

10 не самых очевидных причин, чтобы уволиться

Читать полностью…

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

📂 Названия — твой первый UX

Файл utils2.js, функция handleData, переменная x. Ты и сам не понимаешь, что это значит.

👉 Совет: относись к названиям как к первому уровню документации. Пусть код читается без контекста. Если ты тратишь больше 3 секунд на попытку «вспомнить, что это», — переименуй. Название должно работать вместо комментария.

Читать полностью…

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

👩‍💻 Как эффективно управлять ошибками в серверных приложениях Node.js?

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

➡️ Node.js предоставляет несколько механизмов для управления ошибками: от обработки исключений в промисах до централизованной обработки с помощью middleware в Express.

const express = require('express');
const app = express();

app.get('/', async (req, res, next) => {
try {
const result = await someAsyncOperation();
res.send(result);
} catch (err) {
next(err);
}
});

app.use((err, req, res, next) => {
console.error('Ошибка:', err.message);
res.status(500).send('Ошибка сервера');
});

app.listen(3000, () => {
console.log('Сервер запущен');
});


🗣️ В серверных приложениях важно использовать глобальные обработчики ошибок и middleware, чтобы не допустить краха сервера при возникновении исключений в асинхронных запросах.

Читать полностью…

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

👩‍💻 Освоение безопасной для типов JSON-сериализации в TypeScript

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

Читать...

Читать полностью…

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

📈 Подборка статей для вашей карьеры

Сила лидерского слушания

Как пройти стажировку бизнес- и системного аналитика и не «сгореть» в персональной преисподней

«Так и знала, что вы — бывший двоечник!» Самые глупые ошибки моей компьютерной молодости

Что лучше — оценка рекрутера или подбрасывание монетки?

Мотивационные стили в обучении: почему вам (возможно) не нужны цели или общение с одногруппниками

Читать полностью…

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

➡️ Самые интересные статьи за последние дни:

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

Попробуйте Tauri

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

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

PostgreSQL Antipatterns: валим «слона» — highload на ровном месте

Читать полностью…

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

👩‍💻 Всё о циклах в JavaScript

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

Читать...

Читать полностью…

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

👩‍💻 Проблемы экспорта по умолчанию в JavaScript модулях

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

Читать...

Читать полностью…

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

👩‍💻 Эффективная многопоточность в Node.js: как использовать Atomics

В статье объясняется, как Atomics помогает синхронизировать потоки, предотвращая хаос при одновременной работе с общими данными. Простыми примерами покажем, как управлять многопоточностью.

Читать...

Читать полностью…

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

🧠 Сложность — это не враг, а индикатор

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

👉 Совет: найди самое страшное место в коде — и разберись. Даже если потребуется день. Это как качать слабое место — больно, но даёт заметный эффект. Сложность показывает, куда идти.

Читать полностью…

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

👩‍💻 Как работает потокобезопасность (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, и при необходимости обмена данными рекомендуется использовать сообщения между потоками для минимизации риска гонок данных.


🖥 Подробнее тут

Читать полностью…

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

👩‍💻 Создание веб-компонента с нуля

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

Читать...

Читать полностью…

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

👩‍💻 Как работает process.nextTick() в Node.js?

Метод process.nextTick() добавляет коллбэк в очередь "next tick" в Node.js, позволяя выполнить функцию после текущей операции, но перед следующей итерацией цикла событий. Это полезно, когда нужно завершить текущую операцию, а затем немедленно перейти к следующей задаче, не дожидаясь полного завершения цикла событий.

➡️ Пример:

console.log('Начало');

process.nextTick(() => {
console.log('Вызов в nextTick');
});

console.log('Конец');

// Вывод:
// Начало
// Конец
// Вызов в nextTick


🗣 В этом примере process.nextTick() срабатывает сразу после выполнения синхронного кода, но до обработки задач из очереди цикла событий. Это делает nextTick() полезным для выполнения задач с высоким приоритетом.


🖥 Подробнее тут

Читать полностью…

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

⚙️ Асинхронность – не баг, а фича: 4 паттерна, которые спасут ваш распределенный сервис

Представь, что ты отправляешь сообщение в мессенджере, а оно доходит с задержкой в минуту. Бесит? А теперь представь, что у тебя сервис с миллионами пользователей, и каждое их действие должно мгновенно отражаться везде. Звучит как кошмар? Спокойно, есть четыре проверенных способа решить эту головоломку, и они реально работают.

Читать...

Читать полностью…

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

👩‍💻 Как обнаружить изменение атрибутов веб-компонента

Сегодня мы рассмотрим, как обнаружить и реагировать на изменение атрибутов веб-компонента.

Читать...

Читать полностью…

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

👩‍💻 Циклические импорты на фронтенде

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

Читать...

Читать полностью…

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

👩‍💻 Твой JavaScript должен быть проще: 10 приемов современного разработчика

Советы по написанию короткого, лаконичного и чистого кода на JavaScript

Читать...

Читать полностью…

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

👩‍💻 База, которую нужно знать про JSON Schema

Сегодня мы рассмотрим одну из тем, которая, как ни странно, остаётся недооценённой — JSON Schema. Если ты аналитик (или хочешь им быть) и в твоей работе часто мелькают JSON-файлы, то наверняка знаешь, как сложно порой бывает держать всё это под контролем. В этой статье мы разберём всё, что тебе нужно знать про JSON Schema.

Читать...

Читать полностью…

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

Антипаттерны не щадят даже лучших.

С 13 по 17 октября пройдет новый сезон Podlodka Techlead Crew “Архитектурные антипаттерны”.

Обсудим ошибки, которые ломают архитектуру, и как их избежать.

В программе:

🛠️ Модульный монолит: убийца микросервисов.
Какие плюсы микросервисов реально доступны и без них и как монолит снижает сложность и экономит ресурс — Денис Цветцих

📑 Дизайн-доки — инженерная культура в FAANG. Как обсуждать архитектуру до кода, избегать холиваров и делать дизайн-доки полезными — Дмитрий Волыхин

Error Handling: от боли к порядку. Стандарты обработки ошибок вместо хаоса при интеграциях через API — Евгений Лукьянов

🔍 Круглый стол. Архитектурные антипаттерны: как вовремя распознать. Первые звоночки анти‑паттернов, практические примеры и стратегии их предотвращения — Алексей Кашин, Салих Фахрутдинов, Андрей Шарапов

🧠 Всё, что обсудим, реально применимо и пригодится уже в следующем спринте

Подробности и билеты: https://podlodka.io/techcrew

Читать полностью…

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

👩‍💻 В чём разница между exports и module.exports

Вы знаете в чём разница между exports и module.exports в Node.js? Для начала рассмотрим, что представляет собой объект модуля.

Читать...

Читать полностью…

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

👩‍💻 Задачка по 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 <report|print> <путь к файлу>');
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".');
}

Читать полностью…

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

👩‍💻 Как реализовать обмен сообщениями между процессами в 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: 'Привет, родительский процесс!' });
});


🗣️ Использование сообщений между процессами полезно для разделения вычислений и повышения производительности.

Читать полностью…

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

➡️ Создание конфигурируемого Webhook-модуля для NestJS-приложении

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

Читать...

Читать полностью…
Subscribe to a channel