gpt4 book ai didi

javascript - 了解 Express Node.js 中的虚拟主机

转载 作者:数据小太阳 更新时间:2023-10-29 05:55:52 27 4
gpt4 key购买 nike

我试图了解 vhost 在 Express JS 中的实际工作方式。这是一个工作代码示例(忘了我从哪里提取的):

// -- inside index.js --
var EXPRESS = require('express');
var app = EXPRESS.createServer();

app.use(EXPRESS.vhost('dev.example.com', require('./dev').app));

app.listen(8080);


// -- inside dev.js --
var EXPRESS = require('express');
var app = exports.app = EXPRESS.createServer();

app.get('/', function(req, res)
{
// Handle request...
});

现在,我的问题是,为什么我们调用 createServer() 两次?为什么这甚至有效? vhost 是否在内部将两个服务器“合并”在一起?

最佳答案

Node.js 是事件驱动的,当请求进来时,request事件在 http.Server 上引发.所以基本上,express.vhost (或者实际上是 connect.vhost )是一个中间件函数,它引发了 request http.Server 的另一个实例上的事件:

function vhost(req, res, next){
if (!req.headers.host) return next();
var host = req.headers.host.split(':')[0];
if (req.subdomains = regexp.exec(host)) {
req.subdomains = req.subdomains[0].split('.').slice(0, -1);
server.emit('request', req, res);
} else {
next();
}
};

关于javascript - 了解 Express Node.js 中的虚拟主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9549812/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com