使用默认路由的Express.js路由

时间:2015-05-31 10:03:52

标签: javascript node.js express

我有以下Express.js代码:

router = express.Router()
fs.readdirSync('./controllers').forEach(function (file) {
  if(file.substr(-3) == '.js') {
      route = require('./controllers/' + file);
      route.controller(router);
  }
});
app.use('/', router);

效果很好。我没有在我的控制器中为'/'路径设置路径,我的Express.js服务器默认从'public'文件夹中呈现'index.html' - 这就是我想要的。现在我想添加'*'路由,所以Express.js从'public'文件夹返回'index.html' - 它是静态文件,不需要渲染,只需返回。我该怎么做?感谢

1 个答案:

答案 0 :(得分:2)

如果您希望自己的服务从根路径提供public/index.html,则可以像这样使用express.static

app.use(express.static('public'));

express.static默认将index.html视为您的索引文件,您可以在第二个参数中配置它:

app.use(express.static('public', {index: 'myIndex.html'}))

另请注意,您不必按照自己的方式指定根app.use。只需这样做:

app.use(router);

我甚至建议不要使用route.controller()方法。如果您的每个控制器都导出了自己的express.Router(),那么您只需在迭代器中执行app.use(myController)