Node.JS [ru] | Серверный JavaScript
11.4K subscribers
88 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
👩‍💻 Как реализовать обмен сообщениями между процессами в 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: 'Привет, родительский процесс!' });
});


🗣️ Использование сообщений между процессами полезно для разделения вычислений и повышения производительности.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
👩‍💻 Всё о циклах в JavaScript

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41
👩‍💻 Задачка по 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".');
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🤗1
👩‍💻 В чём разница между exports и module.exports

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
👩‍💻 Якорные ссылки и как их сделать потрясающими

Якорные ссылки — простой способ создать навигацию по странице. Например, в оглавлении можно использовать якорные ссылки для перехода к различным разделам страницы.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👎2
👩‍💻 Универсальность данных: API геттер и сеттер

Когда я консультирую клиентов по работе с API, то рекомендую никогда не обращаться к API напрямую.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👎21👍1
👩‍💻 Стандарт автозагрузки PSR-4 в PHP

Узнайте, как реализовать автозагрузку PSR-4 в PHP. Откройте для себя преимущества PSR-4, как настроить его с помощью Composer, а также лучшие практики организации пространств имён в ваших PHP проектах.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔4👎21
👩‍💻 Как работает модуль vm для создания изолированных контекстов в Node.js?

Модуль vm в Node.js позволяет создавать изолированные контексты выполнения JavaScript-кода. Это полезно, когда нужно безопасно выполнить сторонний код, обеспечив его выполнение в песочнице, без доступа к основному приложению.

➡️ В этом примере мы используем модуль vm, чтобы выполнить сторонний код в изолированном контексте:

const vm = require('vm');

// Код, который мы хотим выполнить в изолированном контексте
const code = 'let x = 10; x += 5; x';

// Создаем новый контекст
const context = {};

// Выполняем код в новом контексте
vm.createContext(context);
const result = vm.runInContext(code, context);

console.log('Результат выполнения:', result); // 15
console.log('Контекст после выполнения:', context); // { x: 15 }


🗣️ Использование vm полезно для выполнения незнакомого или потенциально опасного кода, так как оно изолирует выполнение кода от остальной части приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥31
👩‍💻 Корутины: stackful vs stackless

В статье разберемся, что такое stackless и stackful корутины, их основные отличия, плюсы и минусы. Я объясню это простым языком, чтобы даже сложные концепции многопоточности были легко понятны.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🖥 Использование ChatGPT для автоматизации генерации кода в JS-проекте

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍1
⚙️ Паттерн «Бэкенд для фронтенда»: преимущества, недостатки и лучшие практики для реализации

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
👩‍💻 Тест по NodeJS

Что будет выведено в консоль при выполнении следующего кода?

const fs = require('fs');

fs.readFile('nonexistent.txt', 'utf8', (err, data) => {
if (err) {
console.log('Error:', err.code);
} else {
console.log('File content:', data);
}
});

console.log('Done');
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Как деструктуризация массивов может замедлить JavaScript код

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4👏1
👩‍💻 HMPL — лучшая альтернатива HTMX

В данной статье рассмотрим такой javascript модуль как HMPL и как он может заменить HTMX в проекте. Также, рассмотрим в чём их отличия, преимущества и недостатки.

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

Создайте приложение на Node.js, которое принимает URL в качестве аргумента командной строки, загружает HTML-контент по указанному URL, подсчитывает количество тегов на странице и сохраняет результат в tags.json.

➡️ Пример:

node app.js report https://example.com — сохраняет количество тегов HTML-страницы в файл tags.json.
node app.js print https://example.com — выводит статистику по тегам на странице в консоль.

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

const https = require('https');
const fs = require('fs');
const { JSDOM } = require('jsdom');

const action = process.argv[2];
const url = process.argv[3];

function fetchHtml(url) {
return new Promise((resolve, reject) => {
https.get(url, (res) => {
let data = '';
res.on('data', (chunk) => (data += chunk));
res.on('end', () => resolve(data));
}).on('error', (err) => reject(err));
});
}

async function report(url) {
try {
const html = await fetchHtml(url);
const dom = new JSDOM(html);
const tags = Array.from(dom.window.document.getElementsByTagName('*')).map(el => el.tagName);
const tagCount = tags.reduce((acc, tag) => {
acc[tag] = (acc[tag] || 0) + 1;
return acc;
}, {});

fs.writeFileSync('tags.json', JSON.stringify(tagCount, null, 2));
console.log('Статистика сохранена в tags.json');
} catch (err) {
console.error('Ошибка:', err);
}
}

async function print(url) {
try {
const html = await fetchHtml(url);
const dom = new JSDOM(html);
const tags = Array.from(dom.window.document.getElementsByTagName('*')).map(el => el.tagName);
const tagCount = tags.reduce((acc, tag) => {
acc[tag] = (acc[tag] || 0) + 1;
return acc;
}, {});

console.log('Статистика по тегам:', tagCount);
} catch (err) {
console.error('Ошибка:', err);
}
}

if (action === 'report') {
report(url);
} else if (action === 'print') {
print(url);
} else {
console.log('Используйте команды: report <URL> или print <URL>');
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52👌1
👩‍💻 Как я искал рекомендации аналитиков по покупке российских ценных бумаг в JSON формате

В статье рассказывается о создании системы для поиска недооценённых акций на российском рынке, используя данные аналитиков. Рассматривается, как собирать прогнозы для 89 акций с Московской биржи и анализировать их точность.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Как ускорить создание компонентов с помощью Plop-генератора или автоматизация рутинных задач в React

В статье рассказывается о крупной фронтенд-команде, которая работает с микросервисами и общей дизайн-системой. Несмотря на стандарты, возникали проблемы, и статья подробно раскрывает, как они были решены.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 Введение в AI Selfie Background Remover с использованием TensorFlow.js для React-приложений

В статье рассматривается "React Selfie AI Background Remover" — компонент, использующий TensorFlow.js для удаления фона в браузере. Основные фишки: точная сегментация с MediaPipe, легкая интеграция в React и live demo.

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