pix*_*eak 5 javascript node.js
我试图了解vhostExpress 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...
});
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是,我们为什么要打createServer()两次电话?为什么这甚至有效?被vhost内部"合并"两个服务器一起?
Lin*_*iel 10
Node.js是事件驱动的,当请求进入时,request事件在a上引发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();
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4954 次 |
| 最近记录: |