Node.JS [ru] | Серверный JavaScript
11.5K subscribers
92 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
👩‍💻 Как деструктуризация массивов может замедлить 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
⚙️ Как я создавал онлайн игру «нарды». Сервер

В статье рассказывается о реализации ботов для игры "длинные нарды". Автор описывает, как строится архитектура сервера и модули, а также делится особенностями создания ИИ-игроков, которые управляются программой.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2
👩‍💻 Как работает система событий и EventEmitter в Node.js?

В Node.js события обрабатываются с помощью объекта EventEmitter. Этот объект позволяет объявлять события и реагировать на них с помощью подписок. Когда событие происходит, вызываются все функции, подписанные на него. Это важный механизм для асинхронной архитектуры.

➡️ Пример:

const EventEmitter = require('events');
const emitter = new EventEmitter();

emitter.on('event', () => {
console.log('Событие произошло!');
});

emitter.emit('event'); // "Событие произошло!"


🗣️ EventEmitter широко используется в Node.js для асинхронной обработки и реакции на различные события в системе.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1
👩‍💻 Почему не стоит писать простой код JavaScript?

Доводы, которые приведены в этой статье, заставят вас раз и навсегда отказаться от написания динамически типизированного кода JavaScript!

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🗿6🤔5👎2🫡1
👩‍💻 Освоение безопасной для типов JSON-сериализации в TypeScript

Предлагаем руководство по использованию TypeScript для безопасной для типов сериализации и десериализации данных в формате JSON. Освоение этой стратегии позволит своевременно обнаруживать потенциальные ошибки во время разработки приложения.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍72
👩‍💻 База, которую нужно знать про JSON Schema

Сегодня мы рассмотрим одну из тем, которая, как ни странно, остаётся недооценённой — JSON Schema. Если ты аналитик (или хочешь им быть) и в твоей работе часто мелькают JSON-файлы, то наверняка знаешь, как сложно порой бывает держать всё это под контролем. В этой статье мы разберём всё, что тебе нужно знать про JSON Schema.

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

Создайте приложение на Node.js, которое принимает CSV-файл с данными пользователей в качестве аргумента командной строки, фильтрует записи по определённому возрастному диапазону и сохраняет результат в новый CSV-файл filtered_users.csv.

➡️ Пример:

node app.js filter users.csv 18 30 — фильтрует пользователей в возрасте от 18 до 30 лет и сохраняет результат в filtered_users.csv.
node app.js print users.csv 18 30 — выводит отфильтрованные данные в консоль.

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

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

async function filterCSV(file, minAge, maxAge) {
const rl = readline.createInterface({
input: fs.createReadStream(file),
crlfDelay: Infinity,
});

const result = [];
for await (const line of rl) {
const [name, age] = line.split(',');
if (age >= minAge && age <= maxAge) {
result.push(`${name},${age}`);
}
}

fs.writeFileSync('filtered_users.csv', result.join('\n'));
console.log('Результат сохранен в filtered_users.csv');
}

if (process.argv[2] === 'filter') {
const [file, minAge, maxAge] = process.argv.slice(3);
filterCSV(file, minAge, maxAge);
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🔎 Подборка вакансий для джунов

Backend-разработчик (Junior)
🟢Laravel, NodeJs, Symphony, Yii, PuppeterJS, React Native, Ionic, Flutter
🟢от 30 000 до 60 000 ₽ | Без опыта

Junior Node.JS developer
🟢KoaJs, Typescript, PostgreSQL
🟢Уровень дохода не указан | 1–3 года

Junior Backend Разработчик
🟢NodeJS, TypeScript, PostgreSQL
🟢от 40 000 ₽ | 1–3 года

Junior front-end developer
🟢Gulp / nodejs, postCSS, babel(es2015), jade, BEM, Git, Bash, React
🟢Уровень дохода не указан | Без опыта

Backend (NodeJS) или fullstack разработчик в студию
🟢Node.js + Express (для бэка) - MySQL/PostgreSQL/MongoDb, React.js (для фронта)
🟢от 17 000 до 45 000 ₽ | Без опыта
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡75🔥2🤬2🤯1
👩‍💻 Задачка по NodeJS

Создайте приложение на Node.js, которое принимает путь к директории, находит все файлы внутри этой директории и сортирует их по дате создания. Программа должна выводить отсортированный список файлов и сохранять его в файл sorted_files.json.

➡️ Пример:

node app.js sort /path/to/folder — выводит отсортированные файлы в консоль и сохраняет в файл sorted_files.json.

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

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

function getFilesSortedByDate(directory) {
const files = fs.readdirSync(directory);
const sortedFiles =
files.map(file => {
const filePath = path.join(directory, file);
return { file, time: fs.statSync(filePath).mtime.getTime() };
}).sort((a, b) => a.time - b.time);

fs.writeFileSync('sorted_files.json', JSON.stringify(
sortedFiles.map(f => f.file), null, 2));
console.log('Отсортированные файлы:',
sortedFiles.map(f => f.file));
}

if (process.argv.length !== 3) {
console.log('Используйте: node app.js sort <путь к директории>');
} else {
getFilesSortedByDate(process.argv[2]);
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👎1
🔎 Подборка вакансий для мидлов

Junior-разработчик
🟢React, Redux, redux-saga, Javascript ES6+, HTML5 / CSS3, NodeJs (от 6 месяцев), Next.js, Rest-api, WebSocket, express
🟢от 80 000 до 120 000 ₽ | Без опыта

Веб-разработчик React + Node.js + TypeScript (middle level, full stack)
🟢Node.js, JavaScript, MySQL, React, TypeScript, Redux, React.js, React/Redux
🟢от 200 000 до 300 000 ₽ | 3–6 лет

Frontend/Fullstack JavaScript разработчик
🟢CSS, HTML, JavaScript, NodeJS, TypeScript
🟢до 160 000 ₽ | 1–3 года

Frontend-разработчик (React, Junior/Middle)
🟢React, Redux, Javascipt, HTML5, CSS3
🟢от 60 000 до 120 000 ₽ | 1–3 года

Full-stack разработчик Node.js / React
🟢Node.js, Knex.js, React, MobX, PostgreSQL/MySQL, Redis, Kubernetes, Docker
🟢от 90 000 до 120 000 ₽ | 1–3 года
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡83❤‍🔥1
👩‍💻 Твой JavaScript должен быть проще: 10 приемов современного разработчика

Советы по написанию короткого, лаконичного и чистого кода на JavaScript

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

Создайте приложение на Node.js, которое принимает URL, отправляет запрос к этому URL, и сохраняет заголовки ответа в файл headers.json. Программа должна также уметь выводить заголовки в консоль.

➡️ Пример:

node app.js fetch https://example.com — выводит заголовки в консоль и сохраняет их в файл headers.json.

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

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

function fetchHeaders(url) {
https.get(url, (res) => {
const headers = JSON.stringify(res.headers, null, 2);
console.log(headers);
fs.writeFileSync('headers.json', headers);
}).on('error', (err) => console.error('Ошибка:', err));
}

// Использование
const url = process.argv[2];
if (url) fetchHeaders(url);
else console.log('Укажите URL.');
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👎2
👩‍💻 Как эффективно управлять ошибками в серверных приложениях Node.js?

В серверных приложениях на Node.js правильное управление ошибками является критически важным для обеспечения стабильности и безопасности. Ошибки могут возникать в асинхронных операциях, таких как работа с базами данных или сторонними API.

➡️ Node.js предоставляет несколько механизмов для управления ошибками: от обработки исключений в промисах до централизованной обработки с помощью middleware в Express.

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

app.get('/', async (req, res, next) => {
try {
const result = await someAsyncOperation();
res.send(result);
} catch (err) {
next(err);
}
});

app.use((err, req, res, next) => {
console.error('Ошибка:', err.message);
res.status(500).send('Ошибка сервера');
});

app.listen(3000, () => {
console.log('Сервер запущен');
});


🗣️ В серверных приложениях важно использовать глобальные обработчики ошибок и middleware, чтобы не допустить краха сервера при возникновении исключений в асинхронных запросах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🤔1
🔎 Подборка вакансий для сеньеров

Ведущий разработчик Golang, NodeJS
🟢NodeJS, Golang, RabbitMQ, MondoBD
🟢500 000 ₽ | Более 6 лет

Senior BackEnd Developer (Node.JS)
🟢NodeJS , NestJS, TypeORM, PostgreSQL, Redis
🟢от 300 000 до 350 000 ₽ | 3–6 лет

Senior Fullstack NodeJS Developer
🟢Node.js, TS, npm
🟢от 4 000 $ | 3–6 лет

NodeJS Middle+/Senior Developer
🟢NodeJS, NestJS, TypeScript, ExpressJS, Fastify, Microservices, Docker, Keycloak
🟢от 1 700 до 2 000 $ | 3–6 лет

Senior Fullstack Developer (nodejs/react/typescript)
🟢Node.js, Typescript, Mysql (Mariadb), gRPC, REST API, RabbitMQ, Redis, Next.js (React), Docker, Git
🟢Уровень дохода не указан | 1–3 года
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1