• 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功能与上述注释块相同。

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

  • 相关阅读:
    puppet运维配置实列
    puppet yum仓库
    autoSvn
    centos svn快速搭建
    无交互 直接传入 -yes
    puppet案例
    if
    CentosX64使用yum快速搭建xen虚拟化环境
    groupinfo
    Ubuntu编码问题
  • 原文地址:https://www.cnblogs.com/jfl-xx/p/7268353.html
Copyright © 2020-2023  润新知