无法使用Node.js了解Express服务器概念

时间:2015-09-12 15:51:01

标签: node.js express

我指的是使用Express 4建立节点服务器的一些在线教程。我将使我的问题变得非常简单易懂。

主app.js文件有以下几行(其他代码行如中间件等不在此处显示)

var express = require('express');
var routes = require('./routes/index');
var users = require('./routes/users');
var app = express();

app.use('/', routes);
app.use('/users', users);

我已经测试了上面的代码。包含routes文件夹中的index.js和users.js。这很完美。这意味着已经创建了http服务器。

但是,当我在另一个网站上说另一种编码时,我的困惑提出了。它有以下几行代码。

var express = require('express'),
routes = require('./routes'),
http =require('http’);

var app = express();

我的第一个困惑是,为什么我们需要使用http中间件。

代码进一步创建了这样的服务器

var server = http.createServer(app);

由于我使用的是Express框架,为什么我们需要以这种方式创建服务器

参考资料可以在https://github.com/azat-co/practicalnode/blob/master/ch5/blog-express/app.js#L72

找到

任何帮助都将受到高度赞赏。提前谢谢。

2 个答案:

答案 0 :(得分:2)

也许开发人员想要稍后为其他特定用途创建原始http服务器?严格来说,没有必要这样做。

以下内容足以创建一个http服务器,并开始使用express:

侦听连接
var express = require('express');
app = express();
app.listen(3000);

答案 1 :(得分:1)

表达最好的方式是:

app = express();
app.listen(3000);
理论上这是:

var server = http.createServer(app);

可用于重用http服务器,例如运行套接字。 但app.listen也返回http服务器,如http.createServer(app); 我们可以这样做:

var server = http.createServer(app);   
var io = require('socket.io')(server);

但我们也可以:

var server = app.listen(3033);
var io = require('socket.io')(server);

当createServer(app)可能有用时?如果我们想听http i https:

http.createServer(app).listen(80);
https.createServer(options, app).listen(443);