Я хочу исключить папку public
и все статические файлы и подпапки из экспресс-маршрутизатора.
В настоящее время я определил 1) общую папку, 2) маршрутизатор, как предложено в нескольких SF ответы:
// public folder
self.app.use(express.static(path.join(__dirname, 'public')));
// static pages
self._options.staticRoutes.forEach(route => {
self.app.use(BASEPATH + route, express.static(path.join(__dirname, 'public')));
});
// register page renderer
router.get(BASEPATH, renderer.render());
// templates
self._options.routes.forEach(route => {
self.app.use(BASEPATH + route, router);
});
// router
self.app.use(BASEPATH, router);
// register error handlers
self.app.use(renderer.logErrors());
self.app.use(renderer.clientErrorHandler());
self.app.use(renderer.catchAll());
Позже у меня есть все, что проверяет логин пользователя:
self.app.use(function (req, res, next) {
var redirect_uri = '/login';
if (req.user) {
return next();
} else {
return res.redirect(redirect_uri);
}
});
Этот маршрут вызывает перенаправление 304
на статические файлы, а также впапка public
.
Можно использовать промежуточное программное обеспечение на основе пути, например здесь :
var unless = function (middleware, ...paths) {
return function (req, res, next) {
const pathCheck = paths.some(path => path === req.path);
pathCheck ? next() : middleware(req, res, next);
};
};//unless
, например
app.use(unless(redirectPage, "/user/login", "/user/register"));
а как подать заявку в моем случае? Давайте рассмотрим, что публичные файлы - это сервер по пути /
(т. Е. Папка public
) и его подпапки (например, css
, js
, images
или даже такие файлы, как favicon.ico
, robots.txt
и т. Д. .).