最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

快速路由数组

运维笔记admin11浏览0评论

快速路由数组

快速路由数组

express documentation说您可以在app.use()中为path变量提供一个数组。我试图将路由数组中的所有路由都指向静态变量中的静态文件夹。这是我所拥有的:

const static = express.static(path.join(__dirname, '../build'));
const routes = ['/','/projects','/project1','/blog']
app.use(routes, static);

如果我为每个路由编写一个单独的app.use()函数,这些路由都可以与静态文件夹变量一起正常工作,但是如果我可以像文档中那样在数组中获取路由,则这些路由将更具可维护性。该文档没有显示任何建议我需要遍历数组的示例。

回答如下:

因此,(根据实验,因为它不在文档中,所以似乎基于经验,当您传递一个路由数组时,Express会在该数组中找到与当前路径匹配的第一项,并仅为该路径调用路由处理程序。即使还有其他匹配的路由(如您的情况),它也不会再次调用那些路由处理程序。

因此,由于'/'app.use()一起使用时会匹配所有路由,因此它将始终使用该路由,因此其他路由在使用数组时将永远无法正常工作,但在列为单个路由时会正常运行。您可以通过确保最宽松的路线排在最后来解决此问题。因此,将数组更改为此:

const static = express.static(path.join(__dirname, '../build'));
const routes = ['/projects','/project1','/blog', '/']
app.use(routes, static);

此将'/'移至末尾,因此其他人有机会在'/'和之前被匹配。 '/'仅在路径不是您想要的其他路径之一时才会使用。

FYI,这有点怪异的结构,您要将多个URL路径前缀都定向到同一../build目录,以便express.static()出现在该目录中。没有理由您需要这样做。由于您的URL设计,这似乎是人为创建的问题。这样做会导致/x.js/projects/x.js/blog/x.js之类的URL解析为x.js目录中完全相同的../build文件。我不确定为什么要这么做。

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论