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
👩‍💻 Что такое Child Processes в Node.js?

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

➡️ В этом примере создаётся дочерний процесс для выполнения команды ls в терминале и вывода результата в консоль.

const { exec } = require('child_process');

exec('ls', (error, stdout, stderr) => {
if (error) {
console.error(`Ошибка: ${error.message}`);
return;
}
if (stderr) {
console.error(`stderr: ${stderr}`);
return;
}
console.log(`Результат команды:\n${stdout}`);
});


🗣️ Child Processes позволяет запускать системные команды и выполнять параллельные операции вне основного потока Node.js.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
🖥 Релиз «убийцы» Node.js — Deno 2.0 RC

Одним из главных нововведений стало то, что Deno теперь практически полностью совместим с пакетами npm. Это значит, что разработчики могут легко интегрировать модули пакета в свои Deno-проекты.

Таким образом, прямо сейчас более 2 млн npm-модулей доступны для использования без необходимости перехода на Node.js.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣9👍2😁21🦄1
👩‍💻👩‍💻 Сравнение Node.js с JavaScript в браузере

Способность понимать Node по-прежнему остаётся важным навыком, если вы фронтэнд разработчик. Deno появился как ещё один способ запуска JavaScript вне браузера, но огромная экосистема инструментов и программного обеспечения Node, означают, что в ближайшее время он никуда не денется.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2
👩‍💻 Как обновить опубликован­ный пакет npm

Предположим, что мы сделали обновление, но npm publish выдаёт ошибку. Как исправить ошибку: "You cannot publish over the previously published versions"

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
👩‍💻 7 советов изучающему Vue.js новичку

Vue.js – один из самых популярных фреймворков для фронтенд-разработки и один из самых простых в изучении. Рассказываем, на что нужно обратить внимание желающим освоить его с нуля новичкам.

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

Создайте приложение на Node.js, которое эмулирует систему регистрации и входа пользователей. Программа должна принимать два аргумента командной строки: "register" или "login" и имя пользователя. Если пользователь регистрируется, программа должна сохранить его в текстовый файл (users.txt). Если пользователь пытается войти в систему, программа должна проверить, зарегистрирован ли этот пользователь в файле, и вывести соответствующее сообщение.

➡️ Пример:

node app.js register Alice — добавляет пользователя Alice в файл.
node app.js login Alice — проверяет, существует ли Alice в файле, и выводит сообщение об успешном входе или ошибке.

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

const fs = require('fs');
const action = process.argv[2];
const username = process.argv[3];
const filePath = 'users.txt';

if (!action || !username) {
console.log('Используйте: node app.js <register|login> <username>');
process.exit(1);
}

// Функция для регистрации пользователя
function registerUser(username) {
fs.appendFile(filePath, `${username}\n`, (err) => {
if (err) {
console.error('Ошибка регистрации:', err);
process.exit(1);
}
console.log(`Пользователь ${username} зарегистрирован.`);
});
}

// Функция для входа пользователя
function loginUser(username) {
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
console.error('Ошибка чтения файла:', err);
process.exit(1);
}

const users = data.split('\n').map(user => user.trim());
if (users.includes(username)) {
console.log(`Пользователь ${username} успешно вошёл в систему.`);
} else {
console.log(`Пользователь ${username} не найден.`);
}
});
}

// Логика обработки команд
if (action === 'register') {
registerUser(username);
} else if (action === 'login') {
loginUser(username);
} else {
console.log('Неизвестное действие. Используйте "register" или "login".');
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7😁21
👩‍💻 Объект URL в JavaScript: полный разбор

Объект URL в JavaScript представляет URL-адрес и предоставляет удобные методы для работы с ним. Он позволяет анализировать, конструировать и декодировать URL-адреса.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
👩‍💻 JavaScript для новичков: чем опасны нестрогие типы данных

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1👎1
👩‍💻 Что такое process.hrtime() в Node.js?

process.hrtime() — это метод, который возвращает высокоточное время в виде массива из двух чисел: секунд и наносекунд. Он используется для точного измерения времени выполнения кода или определенных операций, так как имеет более высокую точность, чем Date.now().

➡️ В этом примере измеряется время выполнения цикла с использованием process.hrtime().

// Начальное время
const startTime = process.hrtime();

// Выполняем код, время выполнения которого нужно измерить
for (let i = 0; i < 1e6; i++) {}

// Измеряем конечное время
const diff = process.hrtime(startTime);
console.log(`Время выполнения: ${diff[0]} сек, ${diff[1] / 1e6} мс`);


🗣️ process.hrtime() позволяет измерять временные интервалы с высокой точностью, что полезно для оптимизации производительности в приложениях Node.js.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123
👩‍💻 5 советов по оптимизации производительности приложения NodeJS

Как оптимизировать производительность приложения NodeJS, чтобы максимально улучшить пользовательский опыт? Это один из самых частых вопросов на собеседовании. Ответить на него правильно помогут советы опытного бэкенд-инженера.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Полное руководство по “this” в JavaScript

"Чему равно this в данном случае?" - этот вопрос часто сбивает с толку новичков в JavaScript-программировании. Предлагаем четкий алгоритм, который поможет быстро определить значение ключевого слова this.

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

Создайте небольшое приложение на Node.js, которое управляет списком задач. Программа должна принимать три аргумента командной строки: действие (add, list или remove), название задачи и опционально индекс задачи для удаления. Программа должна хранить задачи в текстовом файле (tasks.txt) и уметь добавлять новые задачи, выводить список всех задач и удалять задачу по индексу.

➡️ Пример:

node app.js add "Сделать уборку" — добавляет задачу "Сделать уборку" в файл.
node app.js list — выводит все задачи из файла с их индексами.
node app.js remove 1 — удаляет задачу с индексом 1 из файла.

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

const fs = require('fs');
const action = process.argv[2];
const task = process.argv[3];
const filePath = 'tasks.txt';

if (!action) {
console.log('Используйте: node app.js <add|list|remove> [task|index]');
process.exit(1);
}

// Функция для добавления новой задачи
function addTask(task) {
fs.appendFile(filePath, `${task}\n`, (err) => {
if (err) {
console.error('Ошибка при добавлении задачи:', err);
process.exit(1);
}
console.log(`Задача "${task}" добавлена.`);
});
}

// Функция для вывода всех задач
function listTasks() {
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
console.error('Ошибка чтения файла:', err);
process.exit(1);
}

const tasks = data.trim().split('\n');
if (tasks.length === 0 || (tasks.length === 1 && tasks[0] === '')) {
console.log('Список задач пуст.');
} else {
console.log('Список задач:');
tasks.forEach((task, index) => {
console.log(`${index + 1}. ${task}`);
});
}
});
}

// Функция для удаления задачи по индексу
function removeTask(index) {
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
console.error('Ошибка чтения файла:', err);
process.exit(1);
}

const tasks = data.trim().split('\n');
if (index < 1 || index > tasks.length) {
console.log('Некорректный индекс задачи.');
return;
}

tasks.splice(index - 1, 1);
fs.writeFile(filePath, tasks.join('\n'), (err) => {
if (err) {
console.error('Ошибка при удалении задачи:', err);
process.exit(1);
}
console.log(`Задача под номером ${index} удалена.`);
});
});
}

// Логика обработки команд
if (action === 'add') {
if (!task) {
console.log('Введите название задачи для добавления.');
} else {
addTask(task);
}
} else if (action === 'list') {
listTasks();
} else if (action === 'remove') {
const index = parseInt(task, 10);
if (isNaN(index)) {
console.log('Введите корректный номер задачи для удаления.');
} else {
removeTask(index);
}
} else {
console.log('Неизвестное действие. Используйте "add", "list" или "remove".');
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
👩‍💻 Разница между export default xxx и export {xxx as default}

Разница между export default xxx и export { xxx as default } в JavaScript может показаться малозаметной, но может повлиять на поведение кода.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43🔥1
👩‍💻 Как использовать Node.js с Docker

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41
➡️ Введение в Popover API

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
👩‍💻 Что такое event loop starvation в Node.js?

event loop starvation происходит, когда долгие или бесконечные операции в цикле событий блокируют выполнение других задач. Обычно это связано с асинхронными функциями, которые вызывают сами себя или используют process.nextTick() и Promise.resolve() слишком часто, задерживая другие операции, такие как таймеры и I/O.

➡️ В этом примере показано, как чрезмерное использование process.nextTick() может вызвать event loop starvation.

function starveEventLoop() {
process.nextTick(starveEventLoop); // Постоянное добавление задач в цикл событий
}

console.log('Начало');
starveEventLoop();
console.log('Конец');


🗣️ event loop starvation может вызвать зависание или замедление работы приложения. Будьте осторожны при использовании process.nextTick() и бесконечных асинхронных циклов.


🖥 Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
💻 Почему все говорят о Kafka?

Хочешь узнать, как обрабатывать миллионы событий в секунду и почему такие гиганты, как Netflix и Uber, без ума от Kafka? Давай разберемся, как этот инструмент может превратить поток данных в золотую жилу для твоего проекта.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41
👩‍💻 Уменьшаем размер образа Docker для приложения Next.js

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
👩‍💻 5 библиотек JavaScript, которые повысят вашу эффективность

Представляем 5 полезных, но малоизвестных библиотек JavaScript! Они помогут сэкономить силы и время при форматировании дат, обработке URL-параметров и отладке веб-страниц в мобильном терминале.

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