node.js - express 框架中的app.use是什么作用?
伊谢尔伦
伊谢尔伦 2017-04-17 11:13:01
[Node.js讨论组]

手册上写着是:

app.use([path], function)
Use the given middleware function, with optional mount path, defaulting to "/".

但是不是很理解意思。这里的function 是在什么场合调用的?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(7)
黄舟

http://www.html-js.com/article/1603
阅读这篇文章.

迷茫

app.use 加载用于处理http請求的middleware(中间件),当一个请求来的时候,会依次被这些 middlewares处理。

执行的顺序是你定义的顺序,比如文档上的例子:

var logger = require('morgan');

app.use(logger());
app.use(express.static(__dirname + '/public'));
app.use(function(req, res){
  res.send('Hello');
});

这个就不会记录静态文件的日志,因为looger中间件在static中间件后面。

app.use(express.static(__dirname + '/public'));
app.use(logger());
app.use(function(req, res){
  res.send('Hello');
});
怪我咯

可以简单理解为过滤器

ringa_lee

就是引入一个所谓的中间件,其实就是用来再实际请求发生之前hack req和res对象来实现一些功能,比如果最简单的logger就是在res的end事件上添加监听写入一条日志记录,express使用connect提供的中间件,列表见 这里

你也可以轻易实现自己的中间件,举个例子比如你总是需要连接mysql

app.use(function(req, res, next) {
    mysql.createClient('localhost:3306', function(err, db) {
        if (err) return next(err);
        req.db = db;
        next();
    })
})

在以后的中间件里你就可以使用 req.db对象来查询数据库了。

黄舟

尝试自己模拟写了个express的山寨框架,终于对app.use有了比较深刻的理解;Myexpress

黄舟

就相当于一个中间件处理器,请求来了,让那些中间件先处理一遍

大家讲道理

还是不太理解~

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号