Node.JS [ru] | Серверный JavaScript
11.3K subscribers
94 photos
5 videos
25 files
3.27K 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
👩‍💻 Создание веб-компонента с нуля

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

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

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

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

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


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Управление Node.js 19 и NPM 9 с помощью NVM

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🐳2
🧠 Сложность — это не враг, а индикатор

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

👉 Совет: найди самое страшное место в коде — и разберись. Даже если потребуется день. Это как качать слабое место — больно, но даёт заметный эффект. Сложность показывает, куда идти.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Forwarded from Frontender's notes [ru]
Баланс: pet-проекты vs работа

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

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

Но.

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

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

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


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

Главное — не забывать, что кодить “в кайф” иногда важнее, чем кодить “всё время”.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👎21
👩‍💻 Эффективная многопоточность в Node.js: как использовать Atomics

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👎1
👩‍💻 Как использовать npm без опаски

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
👩‍💻 Задачка по 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 <filePath> <key> <value>');
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);
}
});
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Росатом ищет системного аналитика на удалённую занятость!

Наш идеальный кандидат обладает опытом работы от 5 лет, а также навыками разработки Web-приложений, проектирования, документирования и интеграции (REST, SOAP, брокеры сообщений), умеет декомпозировать крупные задачи, понимает принципы построения микросервисной архитектуры ПО, может работать с agile/scrum методологией, BPMN, UML, SQL, OpenProject и Postman. Опыт реализации и внедрения систем ECM, ERP, MES, CRM, HRM будет плюсом.

🤝Мы предлагаем работу в команде самого динамично развивающегося разработчика продуктов для HR-автоматизации на российском рынке, стабильную «белую» зарплату дважды в месяц, обучение за счёт работодателя и ДМС со стоматологией с первого дня. А ещё — возможность расти по карьерной лестнице и вносить свой вклад в создание современного флагманского проекта для крупных предприятий.
1😁1
👩‍💻 Расширения VSCode для комфортной работы с проектами

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Испортили git rebase?

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
📡 Обрабатывай ошибки так, будто они неизбежны

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

👉 Совет: добавляй защиту, логирование и fallback-механику даже в тех местах, где уверен на 100%. Код без плана B — это не надёжный код.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
👩‍💻 Создание ванильного JavaScript signal() с Proxy

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Почему мы выбрали gRPC вместо tRPC?

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
2
👩‍💻 Как работает маршрутизация Express

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Задачка по 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);
});
Please open Telegram to view this post
VIEW IN TELEGRAM
4
💡Приглашаем на бесплатный вебинар курса “Разработчик Битрикс24”: «Компонент списка таблицы БД»

Когда: 27 октября, 20:00 (мск)

О вебинаре

Узнайте, как работать с компонентами списка и фильтра в Битрикс24 для вывода данных в списочном виде. На открытом уроке курса Разработчик Битрикс24 разберём, как использовать компоненты bitrix:main.ui.grid и bitrix:main.ui.filter, интегрировать их в CRM и работать с PHP и JS API.

Вопросы вебинара:

- Работа с компонентами bitrix:main.ui.grid и bitrix:main.ui.filter.
- Вывод компонента на отдельной странице и во вкладке CRM.
- Использование PHP и JS API для этих компонентов.

Что освоите:


- Навыки работы с компонентами списка, фильтра и пагинации.
- Вывод данных в списочном виде в блоках CRM Битрикс24.
- Работа с данными в древовидной структуре.

👉 Зарегистрируйтесь: https://vk.cc/cQDnEe

Прокачайте навыки разработки на Битрикс24!

Занятие приурочено к старту курса “Разработчик Битрикс24” в OTUS, обучение на котором позволит освоить компетенции по созданию и настройке решений для автоматизации бизнес-процессов в Битрикс24.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
1😁1
⚙️ Используем ShakaPlayer в LightningJS

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как избавиться от WebSockets и сэкономить $1 млн в год: неожиданные решения для оптимизации

Детальный разбор того, как простой анализ производительности помог обнаружить неэффективность WebSocket и оптимизировать передачу данных.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1