大家好,我是Node js的新手,并开始研究和研究一些教程。我只是想更好地理解或澄清我的疑问。所以我遇到了内置模块http
。这有助于创建一个基本的Web服务器。现在,express
模块是一个建立在该框架之上的Web框架,http module
可以轻松使用完全楔入的Web服务器,而无需重新设计轮子。现在我遇到了这段代码:
var express = require( 'express' )
, http = require("http")
http.createServer( options, function(req,res)
{
app.handle( req, res );
} ).listen(8080);
但是,只要表达一下,就可以做到这一点
var express = require('express');
var app = express();
app.listen(8080, function() {
console.log('Listening on ' + 8080);});
两者有什么区别?他们俩都做不到同样的事情。如果不是,使用第一种方法有什么区别和优势。是否应该坚持第一种方法,因为这是一种好的编程习惯。这是我的疑问,因为如果有任何区别,我只想清楚地了解。
为什么要结合http模块和express模块
确实没有理由使用该http
模块创建自己的http服务器。Express会为您做到这一点,app.listen()
并节省您一点点输入。
如果要创建https
服务器,则需要使用该https
模块并将安全凭证传递给它https.createServer(...)
,以创建正确配置的服务器。Express无法自动为您创建正确配置的https服务器。
如果您查看GitHubapp.listen()
中的Express代码,它将显示以下内容:
app.listen = function listen() {
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
因此,当您使用app.listen()
或创建自己的http服务器,然后app
用作该服务器的侦听器时,实际上没有什么区别(除了打字少了一点)。
因此,这两个代码段在功能上是相同的:
var app = require('express')();
app.listen(8080);
app.get('/', function(req, res) {
res.send("hello");
});
上面的代码在功能上与以下代码相同:
var http = require('http');
var app = require('express')();
http.createServer(app).listen(8080);
app.get('/', function(req, res) {
res.send("hello");
});
当然,如果您尝试设置https服务器或向该.createServer()
方法添加自定义选项,则将首先设置自己的服务器,然后将app
其作为侦听器传递给它。app.listen(...)
当默认http.createServer()
工作正常时,它只是一个快捷方式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句