node v5 express 4.13.3
我做了什么:
当命中索引路由(“/”)时,我正在提供index.hmtl文件。然后我将它设置为要作为静态文件发送的公用文件夹。
它造成了什么问题:
现在它是静态的,当浏览器打开索引路由时不再输入我的索引路由,例如(localhost:3000 /)
问题:
这是预期的行为吗?静态地提供index.html是一个好主意吗?
答案 0 :(得分:1)
这是预期的行为吗?
是。 Express将通过中间件列表(包括您自己的索引路由)传递请求,如果其中一个可以处理请求,它将会完成(它将不会传递给其他中间件)。
静态中间件可以处理对索引的请求(可能是因为你的公共目录中有index.html
),所以请求将在那里结束而不会传递给你的处理程序。
请求传递给中间件的顺序是您可以控制的。如果您希望自己的索引处理程序获得更高的优先级,则应在静态中间件之前声明它:
app.get('/', function(req, res) {
...
});
app.use(express.static(...));
静态服务index.html是个好主意吗?
如果它是纯HTML并且在请求时没有其他任何东西需要完成,那么最好让静态中间件处理它。