Node.JS [ru] | Серверный JavaScript
11.4K subscribers
89 photos
5 videos
25 files
3.19K 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
👩‍💻 Создание ванильного JavaScript signal() с Proxy

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
👩‍💻 Задачка по NodeJS

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

Скачивание должно быть реализовано с использованием стандартного модуля https.
Если процесс скачивания прерывается, в консоли должна отображаться ошибка.

➡️ Пример:

node downloadFile.js https://example.com/file.txt saved_file.txt


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

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

const [,, url, fileName] = process.argv;

if (!url || !fileName) {
console.error('Использование: node downloadFile.js <url> <fileName>');
process.exit(1);
}

const file = fs.createWriteStream(fileName);

https.get(url, (response) => {
if (response.statusCode !== 200) {
console.error(`Ошибка: Невозможно скачать файл. Статус HTTP: ${response.statusCode}`);
response.resume(); // Освобождаем память
return;
}

response.pipe(file);

file.on('finish', () => {
file.close();
console.log(`Файл успешно сохранён как ${fileName}`);
});
}).on('error', (err) => {
fs.unlink(fileName, () => {}); // Удаляем файл в случае ошибки
console.error(`Ошибка скачивания: ${err.message}`);
});
Please open Telegram to view this post
VIEW IN TELEGRAM
💘5👍3
🤔 Почему мы выбрали gRPC вместо tRPC?

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

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

Frontend Game Developer NodeJS (Middle+/Senior)
🟢JavaScript, Node.js, REST API, React
🟢от 200 000 до 300 000 ₽ до вычета налогов | 3–6 лет

Node.js Developer
🟢Node.js, TypeScript, PostgreSQL, RabbitMQ, Kafka, ZeroMQ
🟢от 2 500 до 3 500 $ на руки | 3–6 лет

Senior Frontend Developer (Vue / Node.js)
🟢JavaScript, Vue.js, Node.js, HTML, CSS, Docker, Jenkins
🟢от 4 000 до 5 500 € на руки | 3–6 лет

Senior Backend Developer (Node.js)
🟢Node.js, PostgreSQL, Docker, Kafka, Kubernetes, TypeScript, REST API
🟢до 200 000 ₽ на руки | более 6 лет

Senior backend developer (Node.js)
🟢Node.js, MongoDB, NATS, GraphQL, Docker
🟢от 250 000 до 350 000 ₽ на руки | 3–6 лет
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
🚀 Разработка Telegram Mini App с помощью React

Статья объясняет, как создать Telegram Mini App с использованием React. Рассматриваются шаги разработки, от настройки проекта до интеграции с мессенджером, для создания веб-приложений внутри Telegram.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52🔥1
🕵️‍♂️ Когда твоя работа зависит от Василия

Задача вроде простая, но всё стопорится, потому что «это знает только Василий, он тут со времён динозавров». Никакой документации, только магия в его голове. В итоге — пока он не ответит, ты зависаешь, а проект буксует. Звучит знакомо?

⚙️ Если так, пора разорвать этот порочный круг. Вместо бесконечных вопросов начни собирать всё в одну базу знаний — хоть в Notion, хоть на салфетках. Предложи команде попробовать парное программирование: пока Василий творит чудеса, ты уже разбираешься, как эти фокусы повторить.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🔎 Подборка вакансий для лидов

Full-stack разработчик - Senior / Lead
🟢PHP, Node.js, TypeScript, JavaScript, MySQL
🟢от 120 000 до 250 000 ₽ | более 6 лет

Ведущий разработчик
🟢PHP, Laravel, Node.js, Linux (CentOS, Ubuntu), Docker, CI/CD, Kubernetes
🟢от 200 000 ₽ | более 6 лет

Lead TypeScript IDE Developer (Platform)
🟢TypeScript, JavaScript, React
🟢Уровень дохода не указан | более 6 лет

React Native developer (+Node.js)
🟢React Native, Node.js, Flutter, Ionic
🟢Уровень дохода не указан | 3–6 лет
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Недостатки JavaScript

JavaScript, незаменимый компонент современной веб-разработки, отличается универсальностью и мощью. Однако даже у такого популярного инструмента есть свои сложности. Давайте разберёмся в дополнительных, часто упускаемых из виду аспектах, делающих JavaScript менее идеальным в определённых ситуациях.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
⚙️ Что такое 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
👍51
🔎 Подборка зарубежных вакансий

Full-Stack разработчик (JavaScript/TypeScript, Prisma, React, Node.js)
🟢JavaScript, TypeScript, Prisma, React, Node.js, Astro, Svelte, Tailwind CSS, BullMQ, ioredis, Playwright, PostgreSQL, Vercel, Docker, Nx, OpenAI, Sanity, Apify, Langchain, Jest, Testing Library, Git, GitHub
🟢Уровень дохода не указан | 3–6 лет

Программист (Backend Developer)
🟢Python, Java, C#, Node.js, Django, Spring, Express, MySQL, PostgreSQL, MongoDB, RESTful API, микросервисная архитектура, Git, AWS, Azure, Google Cloud
🟢Уровень дохода не указан | 1–3 года

Разработчик Node.js/Nest.js
🟢Vue.js, Nuxt.js, Nest.js, PostgreSQL, RabbitMQ, Docker
🟢Уровень дохода не указан | 1–3 года

NodeJS Backend Developer (Middle / Senior)
🟢Node.js, TypeScript, Redis, Kafka, PostgreSQL, ClickHouse, Scylla (Cassandra), NestJS, Apollo, React, Apollo Client, Ant Design, Docker, Git, Golang
🟢Уровень дохода не указан | 3–6 лет
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Как работает маршрутизация Express

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
👩‍💻 Задачка по NodeJS

Напишите скрипт, который создаёт HTTP-сервер. При запросе на сервер он должен возвращать текст "Hello, World!".

Сервер запускается на порту 3000.
При обращении к https://localhost:3000 в браузере или через curl возвращается строка "Hello, World!".

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

const http = require('http');

const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello, World!');
});

server.listen(3000, () => {
console.log('Сервер запущен на https://localhost:3000');
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
⚙️ Используем ShakaPlayer в LightningJS

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Модульные CSS-архитектуры в Next.js: BEM, SMACSS, OOCSS и их применение

Статья объясняет использование модульных CSS-архитектур, таких как BEM, SMACSS и OOCSS, в проектах на Next.js. Рассматриваются подходы к созданию масштабируемой и организованной структуры стилей.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👩‍💻 Задачка по 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👍3
🔎 Подборка вакансий для джунов

Junior Node.js developer
🟢Node.js, JavaScript, SQL, HTTP, Git, TypeScript, NestJS, ORM, Unit-тесты, Jest, Linux
🟢от 70 000 ₽ на руки | Без опыта

Node.js Developer
🟢Node.js, TypeScript, Express.js, Nest.js, SQL, NoSQL, Blockchain, Web3.js, MongoDB, PostgreSQL, Swagger, RabbitMQ, RESTful API, WebSocket
🟢Уровень дохода не указан | 1–3 года

Junior QA Engineer
🟢XPath, Функциональное тестирование, Регрессионное тестирование, Интеграционное тестирование, API, JavaScript
🟢от 50 000 до 70 000 ₽ на руки | 1–3 года
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
🤔 Как избавиться от WebSockets и сэкономить $1 млн в год: неожиданные решения для оптимизации

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
⚙️ Как работает worker_threads в Node.js и зачем он нужен?

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

➡️ Пример:

const { Worker, isMainThread, parentPort } = require('worker_threads');

if (isMainThread) {
// Главный поток
console.log('Главный поток запущен');

const worker = new Worker(__filename); // Создаем воркер

worker.on('message', (msg) => {
console.log('Результат от воркера:', msg);
});

worker.postMessage('Начать расчет'); // Передаем сообщение воркеру
} else {
// Воркер
parentPort.on('message', (msg) => {
console.log('Сообщение от главного потока:', msg);
// Выполняем тяжелый расчет
const result = Array(1e6).fill(0).reduce((acc, _, i) => acc + i, 0);
parentPort.postMessage(result); // Отправляем результат обратно
});
}


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


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👏1