关于node拦截请求的问题

我在app.js里use了路由

var headbarRouter = require('./routes/headbar');
app.use('/headbar', headbarRouter);

然后再routes/headbar.js里这么写

router.get('/', function(req, res, next) {
    console.log("--------")
  res.render('headbar', { title: 'Express' });
});

我的理解是只要是headbar开头的请求都会拦截下来,然后render到headbar.ejs
但是在index.ejs 我是这么写的

<script src="/headbar.js"></script>

这不也是一个请求吗?为什么没有拦截走到headbar.ejs里去,而是报错404

clipboard.png

阅读 2.1k
2 个回答

app.use('/headbar') 这里的 /headbar 的匹配规则是匹配一个请求 path 的第一个部分--前两个/符号之间的内容. 如果要说前缀匹配, 那一个 path 的前缀是指 此 path 的第一个部分. 对于 /headbar.js 来说就是 headbar.js, 与 headbar 显然是不匹配的. /headbar 可以处理 /headbar/headbar/* 之类的请求.

script标签请求的是js文件,属于静态文件,走的是static配置的静态目录,不走路由

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题