• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
火磷
Memory will fade,but not notes.
博客园    首页    新随笔    联系   管理    订阅  订阅
express中app.get和app.use的解析

app.get(path,callback)中的callback只能是函数

app.use(path,callback)中的callback既可以是router对象又可以是函数

当其是router对象时,访问地址为path+router提供的路径

另外,app.use相当于是通用的一个方法,我们可以使用app.use替换app.get。

我们来看一个例子:

app.js

 1 var express=require('express');
 2 var app=express();
 3 var router = require( './router');
 4 
 5 //1
 6 app.use( '/test1', function(req,res,next){
 7 res.send( 'hello test1');
 8 });
 9 
10 //2
11 app.get( '/test2', function(req,res,next){
12 res.send( 'hello test2');
13 });
14 
15 //3
16 app.get( '/test3',router);
17 
18 //4
19 app.use( '/test4',router);
20 
21 app.listen(3000);

router.js

1 var express = require('express');
2 var router = express.Router();
3 
4 router.get('/', function (req, res, next) {
5     res.send('hello router');
6 });
7 module.exports = router;

当我们访问/test3时提示如下:                            /test4可以正常访问:

        

在来看看如何使用app.use替换app.get

app.js

 1 var express = require('express');
 2 var app = express();
 3 var router = express.Router();
 4 
 5 // app.get('/hello', function (req, res, next) {
 6 //     res.send('hello world');
 7 // });
 8 
 9 router.get('/', function (req, res, next) {
10     res.send('hello world!');
11 });
12 router.get('/test', function (req, res, next) {
13     res.send('hello test!');
14 });
15 //此时可以访问两个地址,即localhost:3000/hello和localhost:3000/hello/test
16 //由此可知,上面的app.get可以由该app.use替换
17 //当有多条路径时可以使用路由
18 app.use('/hello',router);
19 
20 app.listen(3000);

如上述代码所示,中间件可以访问两个地址(取决于路由的数量),其中地址localhost:3000/hello功能与上述注释块相同。

因此,当有多条路径存在时,可以使用路由。

 

posted on 2017-08-01 14:25  火磷  阅读(1019)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3