Nginx NodeJS Express - Router 3
http://www.codes51.com/article/detail_2787757_3.html
Router
Express还提供了一个叫做Router的对象,行为很像中间件,你可以把Router直接传递给app.use,
像使用中间件那样使用Router。另外你还可以使用router来处理针对GET、POST等的路由,
也可以用它来添加中间件,总之你可以将Router看作一个微缩版的app。
下面的代码创建一个Router实例:
var router = express.Router([options]);
然后你就可以像使用app一样使用router(代码来自http://expressjs.com/4x/api.html#router):
// invoked for any requests passed to this routerrouter.use(function(req, res, next) {
// .. some logic here .. like any other middleware next();
});
// will handle any request that ends in /events// depends on where the router is "use()'d"router.get('/events', function(req, res, next) {
// ..});
定义了router后,也可以将其作为中间件传递给app.use:
app.use('/events', router);
上面这种用法,会针对URL中的“/events”路径应用router,你在router对象上配置的各种路由策略和中间件,都会被在合适的时候应用。
路由模块
express工具创建的应用,有一个routes目录,下面保存了应用到网站的Router模块,index.js和user.js。这两个模块基本一样,我们研究一下index.js。
下面是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;
index.js创建了一个Router实例,然后调用router.get为“/”路径应用了路由函数。最后呢使用module.exports将Router对象导出。
下面是app.js里引用到index.js的代码:
var routes = require('./routes/index');
...
app.use('/', routes);
第一处,require(‘./routes/index’)将其作为模块使用,这行代码导入了index.js,并且将index.js导出的router对象保存在变量routes里以供后续使用。
注意,上面代码里的routes就是index.js里的router。
第二处代码,把routes作为一个中间件,挂载到了“/”路径上。
posted on 2017-09-14 15:21 fanbird2008 阅读(36) 评论(0) 收藏 举报
浙公网安备 33010602011771号