Node.JS [ru] | Серверный JavaScript
11.5K subscribers
92 photos
6 videos
25 files
3.17K 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 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('Сервер запущен на http://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
⚙️ Что бы я хотел знать о Postgres, когда начал его изучать

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
👩‍💻 Что такое 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
👍4
➡️ Web Performance API: Измерьте важное

От медленного к быстрому: Использование JavaScript Performance API для оптимизации веб-приложений

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
✔️ «Я делаю рефакторинг ежечасно» или как за пять минут улучшить приложение

Мартин Фаулер утверждает, что делает рефакторинг ежечасно. Как это возможно? В статье разбираемся, как можно улучшать код небольшими шагами, не отрываясь от основной работы.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🦄2
🕵️ Думай, как хакер, чтобы писать безопасный код

Если ты не можешь сломать свой код — это не значит, что никто не сможет.

👉 Совет: тренируй «атакующее мышление». Пробуй сломать свой код: вводи неожиданные данные, отключай сервисы, симулируй атаки. Чем раньше ты найдёшь уязвимость, тем меньше проблем у пользователей.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
🔎 Подборка зарубежных вакансий

Node.js backend разработчик (Senior)
🟢Node.js, TypeScript, GraphQL, PostgreSQL, WebSockets, Redis, CI/CD, Docker, Kubernetes
🟢от 2 500 до 4 000 $ | 3–6 лет

Senior JavaScript developer
🟢JavaScript, Node.js, C++, MVC, Java, HTML, ООП
🟢от 300 000 ₽ | 6+ лет

Senior Node.js developer
🟢Node.js, TypeScript, JavaScript, NestJS, GraphQL, DynamoDB, PostgreSQL, Docker, Terraform, AWS
🟢Уровень дохода не указан | 4+ года
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 Array.filter() под микроскопом: секреты работы с массивами

В статье подробно разбирается метод Array.prototype.filter() в JavaScript. Поговорим о его внутреннем механизме, особенностях работы и нюансах, которые могут быть полезны разработчикам.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👩‍💻 Создание простого сервера для статических файлов

Создайте HTTP-сервер на Node.js, который раздаёт статические файлы из указанной папки. По умолчанию сервер должен обслуживать файлы из папки public и работать на порту 3000.

Создайте структуру папок:

project/
├── server.js
└── public/
└── index.html


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

Файл server.js:

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

const PORT = 3000;
const PUBLIC_DIR = path.join(__dirname, 'public');

const server = http.createServer((req, res) => {
let filePath = path.join(PUBLIC_DIR, req.url === '/' ? 'index.html' : req.url);

fs.readFile(filePath, (err, data) => {
if (err) {
res.writeHead(404, { 'Content-Type': 'text/plain' });
res.end('404 Not Found');
} else {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end(data);
}
});
});

server.listen(PORT, () => {
console.log(`Сервер запущен на http://localhost:${PORT}`);
});

Файл public/index.html (пример содержимого):

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Static Server</title>
</head>
<body>
<h1>Добро пожаловать на мой сервер!</h1>
</body>
</html>

node server.js
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
💬 Добавление поддержки нескольких языков в NestJS и Angular приложениях

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

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 Создание простого REST API для управления задачами

Создайте HTTP-сервер на Node.js с REST API для управления списком задач. Реализуйте следующие функции:

Получение всех задач (GET /tasks).
Добавление новой задачи (POST /tasks).
Удаление задачи по индексу (DELETE /tasks/:index).

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

npm init -y
npm install express

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

app.use(express.json());

let tasks = [];

// Получение всех задач
app.get('/tasks', (req, res) => {
res.json(tasks);
});

// Добавление новой задачи
app.post('/tasks', (req, res) => {
const { task } = req.body;
if (task) {
tasks.push(task);
res.status(201).json({ message: 'Задача добавлена', tasks });
} else {
res.status(400).json({ error: 'Задача не должна быть пустой' });
}
});

// Удаление задачи по индексу
app.delete('/tasks/:index', (req, res) => {
const index = parseInt(req.params.index, 10);
if (index >= 0 && index < tasks.length) {
tasks.splice(index, 1);
res.json({ message: 'Задача удалена', tasks });
} else {
res.status(404).json({ error: 'Задача не найдена' });
}
});

// Запуск сервера
app.listen(port, () => {
console.log(`Сервер запущен на http://localhost:${port}`);
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🤡1
🔎 Подборка вакансий для джунов

Junior developer TypeScript (JavaScript)
🟢TypeScript, JavaScript, React.js, RxJS, Node.js, PostgreSQL, AWS, Electron
🟢от 800 $ | Без опыта

Junior Developer
🟢Node.js, TypeScript, Nest.js, MongoDB, ClickHouse, Redis, SQL, Linux
🟢от 80 000 до 130 000 ₽ | Без опыта

Junior Backend-разработчик Node.js
🟢Node.js, Nest.js, TypeScript, SQL, Docker, CI/CD, Git, RabbitMQ, HTML, CSS, React
🟢Уровень дохода не указан | Без опыта
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Базовое программирование, или Почему джуны не могут пройти к нам собеседование

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

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