Node.JS [ru] | Серверный JavaScript
11.4K subscribers
93 photos
6 videos
25 files
3.18K 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
👩‍💻 Как работают модули CommonJS и ES Modules в Node.js?

CommonJS и ES Modules (ESM) — два способа работы с модулями в Node.js. CommonJS является стандартом, который использовался с момента создания Node.js, в то время как ES Modules соответствуют стандарту JavaScript ES6 и обеспечивают более современный подход.

➡️ Отличия:

CommonJS:

Использует require() для импорта модулей и module.exports для экспорта.
Выполняется синхронно.

// commonjs-module.js
module.exports = function greet(name) {
return `Hello, ${name}!`;
};

// main.js
const greet = require('./commonjs-module');
console.log(greet('Alice')); // Hello, Alice!


ES Modules (ESM):

Использует import и export ключевые слова.
Выполняется асинхронно.

// esm-module.mjs
export function greet(name) {
return `Hello, ${name}!`;
}

// main.mjs
import { greet } from './esm-module.mjs';
console.log(greet('Alice')); // Hello, Alice!


🗣️ В современных приложениях рекомендуется использовать ES Modules благодаря их соответствию стандарту ES6 и поддержке асинхронности. Однако, CommonJS по-прежнему актуален для старых проектов.


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

Node.js Backend разработчик (удаленно)
Node.js, TypeScript, JavaScript, TCP/IP, PostgreSQL, ClickHouse, Google Pub/Sub, Kafka, RabbitMQ
от 180 000 до 660 000 ₽ | от 2 лет

Системный аналитик
BPMN, UML, SQL, OpenProject, Postman
от 200 000 до 300 000 ₽ | от 3 лет

Middle/Senior Node.js developer
Node.js, PostgreSQL, MongoDB, Redis, TypeScript, Docker, Kubernetes, RESTful API
Уровень дохода не указан | от 3 лет

Backend Developer (Node.js)
Node.js, Oracle DB, PostgreSQL, SQL, RabbitMQ, Kafka
Уровень дохода не указан | от 3 лет
Please open Telegram to view this post
VIEW IN TELEGRAM
📈 Отслеживание позиций торгового робота Московской биржи через CSV файл

Статья посвящена созданию кроссплатформенного торгового робота для Московской биржи через API брокера. Рассматриваются проблемы готовых решений, таких как QUIK, и преимущества разработки легкого и гибкого инструмента.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
📂 Разгружай голову, а не храните всё в ней

Держать в памяти всю структуру проекта, сроки задач и дедлайны? Это рецепт для выгорания.

👉 Совет: используй инструменты вроде Notion, Obsidian или Trello для сохранения идей, задач и технических заметок. Мозг лучше работает над задачей, если не перегружен рутиной.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
👩‍💻 Как спрятать любые данные в PNG

Статья объясняет, как спрятать данные в PNG-изображении, используя младшие биты (LSB) пикселей. Рассматривается структура PNG, каналы R, G, B и альфа, а также методы внедрения данных без заметного изменения картинки.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👩‍💻 Работа с JavaScript Scheduler API

Откройте для себя возможности управления приоритетами и контроля выполнения задач в JavaScript с помощью нового Scheduler API. Новый подход поможет вам стать более продуктивными и эффективными в своей работе.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👩‍💻 Удаление объектов с дубликатами по ключу

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

Пример:

const data = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Alice' },
{ id: 4, name: 'Charlie' },
{ id: 5, name: 'Bob' }
];

const result = removeDuplicatesByKey(data, 'name');
console.log(result);
// Ожидаемый результат:
// [
// { id: 1, name: 'Alice' },
// { id: 2, name: 'Bob' },
// { id: 4, name: 'Charlie' }
// ]


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

function removeDuplicatesByKey(array, key) {
const seen = new Set();
return array.filter(item => {
const value = item[key];
if (seen.has(value)) {
return false;
}
seen.add(value);
return true;
});
}

// Пример использования:
const data = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Alice' },
{ id: 4, name: 'Charlie' },
{ id: 5, name: 'Bob' }
];

const result = removeDuplicatesByKey(data, 'name');
console.log(result);
Please open Telegram to view this post
VIEW IN TELEGRAM
👎6👍2
➡️ Как и для чего мы делали симуляцию курьерской доставки

Статья рассказывает о создании симуляционной модели для тестирования комбинаций фичей в алгоритмах курьерки. Это позволило анализировать влияние наборов фичей на метрики для разных регионов без долгих А/Б тестов, ускоряя внедрение идей.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Чтение и обработка файла с использованием потоков

Напишите функцию, которая принимает путь к файлу и возвращает Promise. Функция должна читать файл построчно с использованием потоков (streams), подсчитывать количество строк и возвращать объект с количеством строк и содержанием первой строки.

Пример использования:

const filePath = "./example.txt";

processFile(filePath)
.then(result => {
console.log(result);
// Ожидаемый результат (пример):
// { linesCount: 10, firstLine: "This is the first line of the file." }
})
.catch(error => {
console.error("Error:", error);
});


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

const fs = require("fs");
const readline = require("readline");

function processFile(filePath) {
return new Promise((resolve, reject) => {
const stream = fs.createReadStream(filePath, { encoding: "utf8" });
const rl = readline.createInterface({ input: stream });

let linesCount = 0;
let firstLine = null;

rl.on("line", line => {
if (linesCount === 0) {
firstLine = line;
}
linesCount++;
});

rl.on("close", () => {
resolve({ linesCount, firstLine });
});

rl.on("error", error => {
reject(error);
});
});
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🔎 Подборка вакансий для джунов

Backend разработчик NODE.JS
🟢Node.JS, JavaScript, Vue.js, Docker, MongoDB, Redis, REST API, GitHub
🟢от 600 до 1 700 $ | 1–3 года

Node.js backend developer
🟢Node.js, TypeScript, React.js, Vue.js, Docker, PHP, Python, JavaScript
🟢до 1 000 $ | 1–3 года

Backend Developer (JS, OpenAI API)
🟢Node.js, Express, OpenAI API, PostgreSQL, JavaScript
🟢до 1 500 $ | 1–3 года
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ По мотивам windows заставки «Ленты». Кроссплатформенный скринсейвер на JS и Electron

В статье рассказывается о создании аналога знаменитого скринсейвера «Ленты» из Windows 7 для Linux с помощью Electron. Автор делится опытом адаптации найденного на GitHub JS-скрипта для создания полноценного кроссплатформенного настольного приложения.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
⚙️ Что такое os модуль в Node.js и как он используется?

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

➡️ Пример:

const os = require('os');

console.log('Платформа:', os.platform()); // Выводит платформу, например 'linux'
console.log('Архитектура:', os.arch()); // Выводит архитектуру, например 'x64'
console.log('Свободная память:', os.freemem()); // Количество свободной памяти


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


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

JavaScript FullStack разработчик
JavaScript, HTML, CSS, TypeScript, Node.js, Vue.js, SQL, Git, PostgreSQL
от 80 000 до 130 000 ₽ | 1–3 года

Разработчик Node.js («Сборка заказов»)
Node.js, TypeScript, JavaScript, MongoDB, Apache Kafka, ClickHouse, Elasticsearch, Docker, Kubernetes
Уровень дохода не указан | 2+ года

FullStack Developer
Node.js, Vue, GraphQL, Jest, Redis, ClickHouse, PostgreSQL, Docker, Grafana
от 200 000 ₽ | 3+ года
Please open Telegram to view this post
VIEW IN TELEGRAM
👎6🤡1
👩‍💻 Тестирование Node.js с использованием Mocha, Chai и Sinon

JavaScript и Node.js имеют множество библиотек тестирования и утверждений, таких как Jest, Jasmine, Qunit и Mocha. В этой статье мы рассмотрим, как использовать Mocha для тестирования, Chai для утверждений и Sinon для моков, шпионов и стабов.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
👩‍💻 Сервер, возвращающий случайную цитату

Создайте HTTP-сервер на Node.js, который по запросу возвращает случайную цитату из заранее заданного списка.

Ожидаемое поведение:

Сервер запускается на порту 3000.
При GET-запросе на /quote сервер возвращает JSON с случайной цитатой.
При запросе на другой путь возвращается сообщение об ошибке.

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

const http = require('http');

const quotes = [
"The only limit to our realization of tomorrow is our doubts of today.",
"Do not watch the clock. Do what it does. Keep going.",
"The future depends on what you do today.",
"Success is not the key to happiness. Happiness is the key to success.",
"Hardships often prepare ordinary people for an extraordinary destiny."
];

const server = http.createServer((req, res) => {
res.setHeader('Content-Type', 'application/json');

if (req.url === '/quote' && req.method === 'GET') {
const randomQuote = quotes[Math.floor(Math.random() * quotes.length)];
res.writeHead(200);
res.end(JSON.stringify({ quote: randomQuote }));
} else {
res.writeHead(404);
res.end(JSON.stringify({ error: 'Invalid endpoint' }));
}
});

server.listen(3000, () => {
console.log('Сервер запущен на https://localhost:3000');
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
⚙️ Четыре пункта, как улучшить код Backend стажера

В статье разобраны распространенные проблемы в коде начинающих разработчиков с конкретными решениями: грамотная инъекция зависимостей, использование Scoped-сервисов, паттерн Generic Repository и создание Stateless-классов.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
📆 Как я создал Vanilla Calendar Pro — легкий и гибкий календарь на JavaScript с использованием TypeScript

Статья рассказывает о создании Vanilla Calendar Pro — датапикера, собравшего 480+ звезд на GitHub. Описывается путь от первого опыта в open source до популярного инструмента, востребованного разработчиками.

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

Node.js backend разработчик (Middle+/Senior)
Node.js, TypeScript, GraphQL, PostgreSQL, WebSockets, Redis
от 3 000 до 4 500 $ | 3+ года

Fullstack-разработчик
JavaScript, Node.js, PHP 8, Symfony, MongoDB, Redis, PostgreSQL, GitLab, REST API
Уровень дохода не указан | 3+ года

Senior Backend Developer (Node.js)
Node.js, SQL, Apache Kafka, Redis, CI/CD
Уровень дохода не указан | 3+ года
Please open Telegram to view this post
VIEW IN TELEGRAM