Node.JS [ru] | Серверный JavaScript
11.5K subscribers
91 photos
6 videos
25 files
3.16K 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
⚙️ Что такое process.nextTick в Node.js и зачем он используется?

process.nextTick позволяет выполнять функцию сразу после текущей операции, но перед началом следующего цикла событий (event loop). Это полезно для выполнения задач с высоким приоритетом.

➡️ Пример:

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

process.nextTick(() => {
console.log('Выполнено в nextTick');
});

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

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


🗣️ В этом примере process.nextTick выполняет функцию между выводом "Конец" и началом следующего цикла событий. Это помогает при обработке срочных задач.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
👩‍💻 Борьба с перерендерами в React

На тему мемоизации написано довольно много статей, и все они хорошо раскрывают суть. Но мне часто не хватало шпаргалки, которую можно отправить на вопрос «А как мемоизировать?». В статье речь пойдет исключительно о функциональных компонентах.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
🤔 Использовать двойные кавычки или нет

Совсем недавно я снова услышал, что в PHP до сих пор обсуждают одинарные и двойные кавычки, и что использование одинарных кавычек — это просто микрооптимизация, но если вы привыкнете постоянно использовать одинарные кавычки, то сэкономите кучу процессорных циклов!

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🥱1🤓1
🎯 Работай в коротких циклах

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

👉 Совет: используй метод Pomodoro или спринты по 30-40 минут. Устанавливай себе небольшие цели: например, «разобраться с логикой функции», «добавить обработку ошибок». Это удерживает фокус и помогает видеть прогресс.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5💯2
👩‍💻 Как сделать невероятно быстрый многопоточный Data Grid на 1 000 000 строк. Часть 1/2: нюансы работы с DOM

Статья объясняет, как создать невероятно быстрый многопоточный Data Grid на 1 000 000 строк с использованием Vanilla JavaScript. Рассматриваются нюансы работы с DOM для повышения производительности.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍1
👩‍💻 IPC в Node.js: решение проблемы с передачей данных

IPC в Node.js — мощный инструмент, но даже у него бывают сюрпризы. В версии 12.16.0 появился режим advanced serialization, но с ним иногда зависают сообщения. Разбираем, почему это происходит и как мы решили проблему.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
👩‍💻 API для конвертации валют

Создайте Node.js сервер, который предоставляет API для конвертации валют с фиксированными курсами. Запрос включает исходную валюту, целевую валюту и сумму для конвертации, а сервер возвращает результат.

Требования:

GET /convert:
Параметры: from, to, amount.
Возвращает результат конвертации.
Фиксированные курсы валют (например, USD → EUR = 0.85).
Обработка ошибок: некорректные параметры или неподдерживаемая валюта.

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

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

// Фиксированные курсы
const rates = { USD: { EUR: 0.85 }, EUR: { USD: 1.18 } };

app.get('/convert', (req, res) => {
const { from, to, amount } = req.query;

if (!from || !to || !amount || isNaN(amount)) {
return res.status(400).json({ error: 'Некорректные параметры' });
}

const rate = rates[from]?.[to];
if (!rate) return res.status(400).json({ error: 'Валюта не поддерживается' });

const converted = (amount * rate).toFixed(2);
res.json({ from, to, amount: parseFloat(amount), converted });
});

app.listen(PORT, () => console.log(`Сервер: http://localhost:${PORT}`));
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73
👩‍💻 Запускаем Pong в 240 вкладках браузера

В статье рассказывается, как запустить Pong одновременно в 240 вкладках браузера. Разбираем, как работает синхронизация анимации между окнами, и делимся кодом на GitHub.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👩‍💻 Запись лога HTTP-запросов в файл

Напишите HTTP-сервер на Node.js, который записывает информацию о каждом входящем запросе (метод, URL, время) в текстовый файл requests.log. Сервер должен возвращать "Запрос обработан" на любой запрос.

Пример:

node server.js

curl http://localhost:3000/test
curl -X POST http://localhost:3000/api

[2024-11-11T12:00:00Z] GET /test
[2024-11-11T12:00:05Z] POST /api


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

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

const logFile = 'requests.log';

// Создание HTTP-сервера
const server = http.createServer((req, res) => {
const logEntry = `[${new Date().toISOString()}] ${req.method} ${req.url}\n`;

// Записываем лог в файл
fs.appendFile(logFile, logEntry, (err) => {
if (err) {
console.error('Ошибка записи лога:', err.message);
}
});

// Отправляем ответ
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Запрос обработан');
});

// Запуск сервера на порту 3000
server.listen(3000, () => {
console.log('Сервер запущен на http://localhost:3000');
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🔎 Подборка вакансий для джунов

Junior Node.js разработчик
🟢Node.js, SQL, API, Git
🟢от 70 000 ₽ | Без опыта

Junior fullstack разработчик (Node.js + React)
🟢Node.js, React, TypeScript, Nest.js, Next.js, Git
🟢Уровень дохода не указан | Опыт работы: 1–3 года

Web-Developer (Fullstack Node.js)
🟢Node.js, TypeScript, Koa, MongoDB, Angular, React
🟢Уровень дохода не указан | Опыт работы: 3–6 лет
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Fusion — php стал ещё ближе к javascript

Laravel Fusion — это инструмент, который позволяет передавать данные напрямую в JavaScript-компоненты без сложных манипуляций с контроллерами. Разбираем его принципы и ключевые особенности.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
😁31👎1
⚙️ Что такое Streams в Node.js и зачем они нужны?

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

➡️ Пример:

const fs = require('fs');

const stream = fs.createReadStream('large-file.txt', { encoding: 'utf-8' });

stream.on('data', (chunk) => {
console.log('Получена часть данных:', chunk);
});

stream.on('end', () => {
console.log('Чтение завершено');
});

stream.on('error', (err) => {
console.error('Ошибка:', err);
});


🗣️ fs.createReadStream() читает файл постепенно, не загружая его целиком в память. data – срабатывает при получении нового куска данных. end – сигнализирует, что весь файл обработан.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61
📝 Подборка вакансий для мидлов

Middle Node.js разработчик в музыкальный стартап
TypeScript, Node.js, REST API, OAuth 2.0, PostgreSQL, Redis, RabbitMQ, Docker, Git
от 220 000 ₽ | от 2 лет

Fullstack разработчик (React.js / React Native / Node.js)
React.js, React Native, Node.js, Express, SQL, NestJS, ERD, AWS, MongoDB, CI/CD
от 130 000 до 200 000 ₽ | от 3 лет

Бэкенд-разработчик Node.js
Node.js, PostgreSQL, Linux, MongoDB, Redis, RabbitMQ, Git, ООП, TypeScript, Apache Kafka
Уровень дохода не указан | от 3 лет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
👩‍💻 Когда не стоит использовать метод find() в JavaScript

Немногие знают истинную ценность Map. Между тем, применение этой структуры данных позволяет повысить производительность и улучшить пользовательский опыт. Особенно она полезна при работе со сложными структурами данных или при необходимости получить быстрый доступ к данным.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
👩‍💻 Сканирование папки на расширения файлов

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

Пример:

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}`);
}
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
💬 Как пересылать сообщения из Telegram в SMS с помощью бота

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
⚙️ Next.js 15 в Hikasami: Глубокая оптимизация рендеринга, загрузки данных и производительности

Как Hikasami ускорил загрузку страниц и видео с помощью Next.js 15? В статье разбор SSR с кешированием, динамического обновления API, Edge Functions и адаптации Gravity UI для максимальной скорости.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
😱2
📝 Подборка вакансий для сеньоров

Senior Node.js Engineer
TypeScript, Node.js, Next.js, Inngest, PostgreSQL, Prisma ORM, socket.io
до 5000 $ | от 3–4 лет

Senior Tools Engineer
JavaScript, Node.js, React, MongoDB, serverless platforms, OpenAI/LLM
от 4500 до 6500 $ | более 5 лет

Senior FullStack Engineer (Angular, Node.js)
Angular, Express, NestJS, TypeScript, PostgreSQL, GCP
от 2500 до 4000 $ | опыт не указан
Please open Telegram to view this post
VIEW IN TELEGRAM