初学express关于 mount 和 param 的疑问?
发布于 9 年前 作者 Web-Kevin 4029 次浏览 最后一次编辑是 8 年前 来自 问答
var express = require('express');
var app = express();

// customizing the behavior of app.param()
app.param(function(param, option) {
  return function (req, res, next, val, val1) {
  	console.log("-----------"+param);
  	console.log(val1);              //id , page
    // if (val == option) {
    //   next();
    // }
    // else {
    //   res.sendStatus(403);
    // }
    next();
  }
});

// using the customized app.param()
app.param(['id','page'], [1337,1]);

// route to trigger the capture
app.get('/user/:id/:page', function (req, res) {
  res.send('OK');
})

app.listen(3000, function () {
  console.log('Ready');
}) 

以上代码不解的地方:

  1. function (req, res, next, val, val1){} 这里的val是访问两次依次赋值 1337 和 1 ,这个 val 不用定义直接返回当前参数么 ? lz是从文档和例子中知道的,但不知道这个 val 如何被赋值的? 所以在后面加个 val1 但返回的确是 id 与 page
  2. 上面那条语句有没有方法能让val等于 [1337,1] ?不用调用两次
var express = require('express');
var app = express();
var admin = express();

admin.on('mount', function (parent) {
  console.log('Admin Mounted');
  console.log(parent); // refers to the parent app
});

admin.get('/', function (req, res) {
  res.send('Admin Homepage');
});

app.use('/admin', admin);
app.use('/', function (req, res) {
  res.send('Admin Homepage1');
});

app.listen(3000); 

对这个例子的理解,是因为 app.use(’/admin’, admin); 引用了 admin ,所以 mount 事件被触及,但不明白打印的parent是啥意思?

谢谢

2 回复

q1:The following section describes app.param(callback), which is deprecated as of v4.11.0. q2:也许parent就是指app呢

@zstxt1989 谢谢 所以打印出来的就是app的信息

回到顶部