node.js 应用级中间件怎么用?

建立一个express工程,自带的代码有:
app.js文件:
var index = require('./routes/index');
app.use('/', index);

routes文件夹下index.js文件:
var express = require('express');
var router = express.Router();

/ GET home page. /
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});

module.exports = router;

小白有个问题:对于应用级中间件,app.use('/', index);任何指向 / 的请求都会执行index,可是这里的
index是函数吗?导出的是router,
我们需要执行的应该是router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});??
还有个疑问,为什么不直接使用app.get('/',callback)?

阅读 3.3k
2 个回答

index是你导出的router,不直接在app中进行路由get,是为了做拆分,方便项目组人员协同开发,项目维护,实际业务中一般会根据业务拆分成不同的router。

app.use('/', index);任何指向 / 的请求都会执行index,这里的
index是router中的index文件。因为你在app.js里定义的index是从routes这里引入的。

router.get('/', function(req, res, next) {
    //这里的index是views中的index模板文件
    res.render('index', { title: 'Express' });
});

可以直接使用app.get('/',callback)。不直接这样写是因为功能划分不同吧。app.js一般写一些缓存,数据库什么的配置项什么的。

你可以看看我写的《Nodejs开发指南》微博实例的源码:
https://github.com/LuckyHH/No...

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