Создайте 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
• Слабоумие и отвага: как найти ликвидные облигации с доходностью до 40% и ежемесячными фиксированными выплатами
• Nuxt I18n Micro: Как я решил написать свой i18n для NuxtJS
• Четыре пункта, как улучшить код Backend стажера
• Получение серверного времени через WebSockets и отображение его в Angular-приложении
• Добавление поддержки нескольких языков в NestJS и Angular приложениях
Please open Telegram to view this post
VIEW IN TELEGRAM
В этой статье я добавлю поддержку нескольких языков в NestJS и Angular приложениях, для сообщений в ошибках, уведомлениях и данных полученных из базы данных.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Создайте 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
👍4❤1🤡1
Junior developer TypeScript (JavaScript)
Junior Developer
Junior Backend-разработчик Node.js
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье начальник отдела разработки делится опытом собеседований и объясняет, почему выпускники курсов часто не дотягивают до требований, а внутреннее обучение приносит больше результатов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
path.resolve()
в Node.js и зачем оно используется?path.resolve()
— это метод модуля path
в Node.js, который возвращает абсолютный путь, объединяя переданные сегменты пути. Он полезен для построения пути к файлам и директориям независимо от текущей рабочей директории.const path = require('path');
// Построение абсолютного пути
const fullPath = path.resolve('folder', 'subfolder', 'file.txt');
console.log(fullPath); // Например: /Users/username/project/folder/subfolder/file.txt
🗣️ В этом примере path.resolve() объединяет сегменты пути и возвращает абсолютный путь к файлу. Это помогает избежать проблем с относительными путями и улучшает кросс-платформенность приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Архитектор, разработчик node js (nest js)
•
JavaScript (ES5, ES6, ES7, ES8, ES9), NestJS (Node.js), Git, Docker•
от 200 000 ₽ | Средний (Middle)Backend (Node.js) разработчик
•
TypeScript, Node.js, JavaScript•
Уровень дохода не указан | Средний (Middle)JavaScript FullStack разработчик
•
JavaScript, HTML, CSS, TypeScript, Node.js, Vue.js (2 и 3 версия), Git, SQL (MySQL, PostgreSQL), OAuth-протокол•
от 80 000 до 130 000 ₽ | Средний (Middle)Frontend разработчик (Vue)
•
JavaScript, HTML, CSS, Vue.js, Vuex, Flexbox, Grid Layout, Gulp, Webpack, REST API, Английский язык•
Уровень дохода не указан | Средний (Middle)Node.js Backend Developer (проект СЭД)
•
TypeScript, Node.js, JavaScript, React, MERN-стек (MongoDB, Express/Koa, React.js, Node.js), NoSQL/SQL (MongoDB, PostgreSQL), CI/CD•
Уровень дохода не указан | Средний (Middle)Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👎2🔥1
React Server Components (RSC) и Next.js 13 представляют новый виток в разработке React-приложений, предоставляя мощные инструменты для оптимизации и упрощения архитектуры.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡5👍2
Создайте минимальный API на Node.js с использованием Express, который позволяет:
•
Получить список всех заметок.•
Добавить новую заметку.Требования:
1. Маршруты API:
• GET /notes
: Возвращает массив всех заметок. • POST /notes
: Добавляет новую заметку (передаётся в теле запроса).2. Хранилище данных:
•
Используйте массив в памяти. Каждая заметка должна содержать поля:{
"id": "уникальный идентификатор",
"content": "текст заметки"
}
3. Требования к корректности:
•
Заголовок заметки (content
) должен быть строкой и не быть пустым.Решение задачи
const express = require('express');
const { v4: uuidv4 } = require('uuid');
const app = express();
app.use(express.json());
let notes = [];
// Получить все заметки
app.get('/notes', (req, res) => {
res.json(notes);
});
// Добавить новую заметкуapp.post ('/notes', (req, res) => {
const { content } = req.body;
if (!content || typeof content !== 'string') {
return res.status(400).json({ error: 'Invalid content' });
}
const newNote = { id: uuidv4(), content };
notes.push(newNote);
res.status(201).json(newNote);
});
// Запуск сервера
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Server running on http://localhost:${PORT}`);
});
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Статья рассказывает, как наблюдаемость помогает выявлять проблемы в микросервисных приложениях. Описаны метрики, логи, трассировки и инструменты для анализа производительности системы.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
В руководстве рассматриваются такие шаблоны работы с DOM на JavaScript, как выбор правильного querySelector, кэширование элементов и улучшение обработки событий.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Senior Backend Developer (Node.js)
•
Node.js, TypeScript, NestJS, PostgreSQL, Docker, Apache Kafka•
Уровень дохода не указан | 3+ годаFull stack developer
•
PHP 8, MySQL, JavaScript, Node.js, Git, React, Laravel, jQuery, Symfony, Yii framework•
от 2 000 до 4 000 $ | 3–5 летРазработчик SharePoint
•
JavaScript, ASP.NET, SharePoint, SSOM, CSOM, JSOM, MS SQL Server Reporting Services, MS Analysis Services•
Уровень дохода не указан | 3+ годаPlease open Telegram to view this post
VIEW IN TELEGRAM
• ИТ-шники: разновидности, отличительные черты
• Софт-скиллы для инженеров: готовим новое поколение специалистов техподдержки
• Движение вверх: как стать CTO — на примере пяти историй ИТ-директоров
• Какие айтишники будут востребованы в 2035г, а какие – нет?
• Как мы помогаем развиваться web3 front-end разработчикам благодаря нашей Карте развития в 2024 году
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Статья объясняет базовые элементы HTTP: структуру запросов, методы для выполнения операций, строку статуса и коды состояния, помогающие понять результат взаимодействия с сервером.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Intersection Observer
в JavaScript и зачем он используется?Intersection Observer
— это API, которое позволяет отслеживать, когда элемент входит или выходит из области видимости (viewport). Оно полезно для оптимизации ленивой загрузки изображений, бесконечной прокрутки или анимаций при прокрутке.// Целевой элемент для наблюдения
const target = document.querySelector('.observe-me');
// Callback-функция для обработки пересечений
const observerCallback = (entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
console.log('Элемент видим:', entry.target);
observer.unobserve(entry.target); // Останавливаем наблюдение
}
});
};
// Настройки наблюдателя
const observerOptions = {
root: null, // Вся область видимости
threshold: 0.5 // 50% видимости элемента
};
// Создаем наблюдатель
const observer = new IntersectionObserver(observerCallback, observerOptions);
// Начинаем наблюдение за элементом
observer.observe(target);
🗣️ В этом примере API отслеживает, когда .observe-me становится видимым на 50%. Intersection Observer делает прокрутку более производительной, так как избавляет от необходимости использовать события scroll.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍2
Пример миграции базы данных для нового поля и добавления функционала на бэкенде и фронтенде. Пошаговый разбор: обновление схемы, логика на сервере и интерфейс для изменения данных.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Directive Composition API в Angular 15: hostDirectives в @Component/@Directive позволяет автоматически добавлять standalone-директивы, упрощая декомпозицию логики и внедряя новые подходы.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Каждый день выходит что-то новое, и кажется, что ты не успеваешь за технологиями? Это нормально.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🥰2
Senior Backend Developer (Node.js), Billing Team
Fullstack Developer (Vue.js + Nest.js)
Full Stack Developer (Node.js, TypeScript, SQL)
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1