HTTP-маршрутизатор статичных ресурсов для Node.js
|
|
1 час назад | |
|---|---|---|
| .husky | 4 часов назад | |
| dist | 1 час назад | |
| example | 1 час назад | |
| src | 1 час назад | |
| .c8rc | 4 часов назад | |
| .commitlintrc | 4 часов назад | |
| .editorconfig | 4 часов назад | |
| .gitignore | 4 часов назад | |
| .mocharc.json | 4 часов назад | |
| .prettierrc | 4 часов назад | |
| LICENSE | 4 часов назад | |
| README.md | 1 час назад | |
| build-cjs.js | 4 часов назад | |
| eslint.config.js | 4 часов назад | |
| package.json | 1 час назад | |
| tsconfig.json | 4 часов назад |
HTTP-маршрутизатор статичных ресурсов для Node.js.
npm install @e22m4u/js-http-static-router
Модуль поддерживает ESM и CommonJS стандарты.
ESM
import {HttpStaticRouter} from '@e22m4u/js-http-static-router';
CommonJS
const {HttpStaticRouter} = require('@e22m4u/js-http-static-router');
import http from 'http';
import {HttpStaticRouter} from '@e22m4u/js-http-static-router';
// создание экземпляра маршрутизатора
const staticRouter = new HttpStaticRouter();
// определение директории "../static"
// доступной по адресу "/static"
staticRouter.addRoute(
'/static', // путь маршрута
`${import.meta.dirname}/../static`, // файловый путь
);
// объявление файла "./static/file.txt"
// доступным по адресу "/static"
staticRouter.addRoute(
'/file.txt',
`${import.meta.dirname}/static/file.txt`,
);
// создание HTTP сервера и подключение обработчика
const server = new http.Server();
server.on('request', (req, res) => {
// если статический маршрут найден,
// выполняется поиск и отдача файла
const staticRoute = staticRouter.matchRoute(req);
if (staticRoute) {
return staticRouter.sendFileByRoute(staticRoute, req, res);
}
// в противном случае запрос обрабатывается
// основной логикой приложения
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello from App!');
});
server.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
console.log('Try to open:');
console.log('http://localhost:3000/static/');
console.log('http://localhost:3000/file.txt');
});
Так как в HTML обычно используются относительные пути, чтобы файлы
стилей и изображений загружались относительно текущего уровня
вложенности, а не обращались на уровень выше, может потребоваться
параметр trailingSlash для принудительного добавления косой
черты в конце адреса.
import http from 'http';
import {HttpStaticRouter} from '@e22m4u/js-http-static-router';
const staticRouter = new HttpStaticRouter({
trailingSlash: true, // <= добавлять косую черту (для директорий)
});
// теперь при обращении к директориям без закрывающего
// слеша будет выполняться принудительный редирект (302)
// /dir => /dir/
npm run test
MIT