Node.JS [ru] | Серверный JavaScript
11.4K subscribers
97 photos
5 videos
25 files
3.34K 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
⚙️ Хост директивы: ключ к декомпозиции

Directive Composition API в Angular 15: hostDirectives в @Component/@Directive позволяет автоматически добавлять standalone-директивы, упрощая декомпозицию логики и внедряя новые подходы.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Как мы создали микросервисное приложение для анализа вакансий с hh.ru: Docker, Kafka, Elasticsearch и ещё немного магии

Создание распределённого приложения для анализа вакансий hh.ru: микросервисы, контейнеры, брокеры сообщений и визуализация данных в действии. Полезно для аналитиков, компаний и соискателей.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👎5👍1
⚙️ Что такое fs.promises в Node.js и как его использовать?

fs.promises — это API для работы с файловой системой с использованием промисов, что позволяет писать асинхронный код без коллбеков.

➡️ Пример:

const fs = require('fs').promises;

async function readFile() {
try {
const data = await fs.readFile('example.txt', 'utf8');
console.log('Содержимое файла:', data);
} catch (err) {
console.error('Ошибка чтения файла:', err.message);
}
}

readFile();


🗣️ В этом примере fs.promises.readFile используется для чтения файла асинхронно, делая код чище и проще для обработки ошибок через try-catch.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
⚙️ Интернационализация (i18n) бэкенда в Express с использованием Intlayer

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
4
🧠 Прокачивай мышление через эксперименты

Давно работаешь с одним и тем же инструментом или подходом? Это удобно, но затормаживает рост.

👉 Совет: хотя бы раз в месяц попробуй решить задачу нестандартным способом. Используй новую библиотеку, напиши код на языке, который почти не знаешь, или придумай другой алгоритм. Такие эксперименты ломают шаблоны и учат думать шире.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43
👩‍💻 Как за 10 минут создать тестировщик нагрузки для API на Node.js

Почему разработка собственного инструмента для нагрузки на API иногда оказывается лучшим выбором? В статье обсуждается реальный кейс: задачи тестирования производительности, ограничения Postman и сложность JMeter. Узнайте, как и зачем был создан простой и эффективный API-лоадер на Node.js.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Конвертация даты по временной зоне пользователя в «NestJS», а также ввод и отображение даты в «Angular»

Как добавить новое поле в базу данных и связать его с фронтендом? В статье рассказывается об обновлении таблицы Webhook, создании календаря на Angular и настройке работы с временными зонами и локализацией.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Что такое process в Node.js и как получить доступ к аргументам командной строки?

process — это глобальный объект в Node.js, который предоставляет информацию и управление текущим процессом. Через process.argv можно получить массив аргументов командной строки.

➡️ Пример:

// Запуск: node script.js привет мир
const args = process.argv.slice(2); // Убираем первые два аргумента (node и имя файла)
console.log(args); // ['привет', 'мир']


🗣️ В этом примере process.argv позволяет извлечь пользовательские аргументы командной строки, что полезно для CLI-приложени


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Forwarded from Frontender's notes [ru]
💬 Event Loop в Node.js VS в браузере

Многие считают, что event loop в Node.js и браузере работает одинаково. Однако, несмотря на общие черты, существуют важные различия, которые влияют на асинхронное поведение и производительность приложения. Разобравшись с этими различиями, можно писать более эффективный асинхронный код и избежать лагов и задержек. Давайте разберемся, что именно отличает работу event loop в этих двух средах.

Браузер: всё о пользовательском интерфейсе

В браузере event loop сосредоточен на работе с пользовательским интерфейсом (UI). Его основная задача — обеспечить плавность рендеринга, быстроту реакции на события, выполнение JavaScript и обработку Web APIs.

В процессе работы с UI браузер использует несколько типов очередей задач. Это microtasks, такие как обработка Promise и queueMicrotask, и macrotasks, в которые попадают setTimeout, setInterval и MessageChannel. Также есть отдельная фаза для рендеринга. Браузер обязан поддерживать плавность UI, поэтому между макротасками он обязательно вставляет фазу рендеринга, что позволяет минимизировать задержки при обновлении интерфейса.

Node.js: event loop от libuv

В Node.js event loop работает на основе библиотеки libuv, которая используется для асинхронных операций, таких как работа с файловой системой, сетью и другими I/O операциями. В отличие от браузера, в Node.js есть несколько фаз, которые позволяют эффективно управлять этими операциями.

Node.js использует шесть фаз, включая Timers (setTimeout, setInterval), Poll (обработка I/O операций), Check (setImmediate) и другие. Основное отличие заключается в том, что Node.js управляет низкоуровневыми операциями с системой, такими как файлы и сеть, в то время как браузер сосредоточен на рендеринге и UI. Это позволяет Node.js быть более гибким в обслуживании серверных запросов и файловых операций.

Где начинается путаница

Существует несколько распространенных недопониманий между setTimeout и setImmediate. В браузере нет метода setImmediate, в то время как в Node.js он выполняется в фазе Check, а setTimeout — в фазе Timers. Это может привести к путанице, особенно при переносе кода между Node.js и браузером.

Также стоит отметить различие в работе microtasks. В браузере микротаски выполняются сразу после каждого макротаска, а в Node.js они выполняются после каждой фазы event loop, что позволяет их более эффективно управлять и избегать блокировки цикла.

Ещё одним важным отличием является рендеринг

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

Например, repaint может произойти между macrotask, microtask и снова macrotask, что важно учитывать при оптимизации производительности в браузере.

Что важно помнить разработчику

• В Node.js основное внимание уделяется I/O операциям, таким как работа с файлами, сетью и процессами. Эти задачи добавляют свои очереди и обрабатываются в разных фазах event loop.
• В браузере event loop синхронизирован с частотой кадров, что критически важно для обеспечения плавности UI.
• Microtasks в Node.js ведут себя агрессивнее, особенно process.nextTick, который может заблокировать переход между фазами event loop, если заспамить его слишком большим количеством задач.
• setImmediate и setTimeout — это не одно и то же. Порядок их выполнения в Node.js зависит от контекста и фазы event loop, в которой они находятся.


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

🚪 Frontender's notes
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42
Forwarded from xCode Journal
🤣 Гениальный план, как избавиться от бесящих коллег

💥 xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁20
👩‍💻 Ментальная модель потоков в Node.js

Статья исследует концепцию потоков в Node.js, объясняя их ключевую роль в модулях, таких как fs и http. Рассматриваются основные концепции и ментальная модель, помогающая понять и эффективно использовать потоки.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
JavaScript сегодня отмечает 30-летие 🎂

Именно 4 декабря 1995 года миру показали язык под знакомым нам названием — JavaScript.

Вот история именинника:

• У языка было три имени за пару месяцев.
Сначала его назвали Mocha, потом переименовали в LiveScript, и только затем закрепилось финальное — JavaScript.

• К Java он почти не имеет отношения.
Название выбрали скорее как маркетинговый ход: в середине 90-х вокруг Java был мощный хайп, и на эту волну просто запрыгнули.

• JS слепили всего за 10 дней.
Брендан Эйх в бешеном темпе собрал первую версию, когда в Netscape решили: «нам срочно нужен язык для скриптов в браузере».

• Создатель языка успел стать CEO Mozilla — и быстро лишиться должности.
Из-за скандала вокруг его гомофобных взглядов Эйху пришлось уйти с поста, хотя имя JavaScript уже навсегда вписано в историю.


🎉 Поздравляем старичка, который до сих пор двигает весь веб.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍1
👩‍💻 Улучшение производительности с делегированием событий

Статья объясняет технику делегирования событий в веб-разработке, показывая, как использование одного слушателя на родительском элементе упрощает управление событиями и повышает производительность.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
💬 Как пересылать сообщения из Telegram в SMS с помощью бота

В этом гайде пользователь объясняет, как можно написать простого Telegram чат-бота на NodeJS, который будет пересылать все входящие сообщения в SMS, используя Exolve SMS API.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Теперь Хабр может объяснить, что это за код

Недавно заметил новую фичу в кодовых блоках на Хабре - и это прям супер удобно.
Внутри сниппетов появилась кнопка «Объяснить код с SourceCraft», и она реально делает то, что написано: поясняет, что происходит в выбранном фрагменте.

ИИ-помощника от SourceCraft встроили прямо в code listings, и теперь можно спросить у ИИ:
🔘 что делает конкретная строка,
🔘почему код работает так,
🔘как адаптировать его под свою задачу,
🔘или даже переписать на другой язык.

Суперполезно, если:
🔘вы начинающий и хотите разбирать код по кирпичикам;
🔘читаете статью не по своему стеку и хотите перевести пример на знакомый язык;
🔘или просто хотите глубже понять кусок кода без необходимости спрашивать автора.

Хабр вместе с SourceCraft сделали статью с подробностями — как работает, зачем и что под капотом.

👉 Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4🔥2😁1
⚙️ Что такое process.env в Node.js и как использовать переменные окружения?

process.env — это объект в Node.js, который содержит переменные окружения. Они используются для хранения конфиденциальной информации (например, ключей API, паролей) и настройки приложений в разных средах (разработка, тестирование, продакшен).

➡️ Пример:

// Установите переменные окружения (например, в .env файле или через терминал)
// В Linux/Mac: export API_KEY=12345
// В Windows (cmd): set API_KEY=12345

// Доступ к переменным окружения
console.log(`Ваш API ключ: ${process.env.API_KEY}`);

// Используем переменные окружения для конфигурации
if (process.env.NODE_ENV === 'production') {
console.log('Запущено в режиме продакшена');
} else {
console.log('Запущено в режиме разработки');
}


🗣️ Переменные окружения через process.env позволяют настраивать поведение приложения без изменения кода. Это важно для обеспечения безопасности и управления настройками.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥4
Господи, да в чём проблема стать фронтендером?

Подписался на эти три канала:

👉 Фронтенд
👉
Верстка
👉
Node.JS

Заходишь каждый день, тратишь 15 минут и изучаешь актуальную информацию. Можешь сразу применять на практике. ВСЁ!

Это настолько просто, что даже твой кот справится. Подпишись сейчас, потом спасибо скажешь.
👍1
⚙️ Кэширование информации в Redis на NestJS

Статья показывает, как подключить Redis к проекту и настроить кэширование данных с помощью @nestjs-mod/cache-manager. Рассматриваются примеры работы с Docker Compose и Kubernetes для оптимизации запросов.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from xCode Journal
🌎 Google не разрешает сотрудникам использовать свою же недавно выпущенную IDE Antigravity

И, видимо, не зря — реддитор рассказал, что ИИ-агент Antigravity случайно удалил весь его диск, пока пытался исправить баг:
«Я просматриваю журналы с предыдущего шага и с ужасом вижу, что команда, которую я выполнил для очистки кэша проекта (rmdir), по всей видимости, ошибочно указала на корень вашего диска D:, а не на конкретную папку проекта.
Мне очень, очень жаль.»


✖️ xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁31