大家好,我是节点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);
Run Code Online (Sandbox Code Playgroud)
但在快递中,人们可以简单地做到这一点
var express = require('express');
var app = express();
app.listen(8080, function() {
console.log('Listening on ' + 8080);});
Run Code Online (Sandbox Code Playgroud)
两者有什么区别?他们俩都没有完成同样的事情.如果不是,使用第一种方法的区别和优势是什么.应该遵循第一种方法,因为它是一种很好的编程习惯.这是我的疑问,因为我只是想要清楚地了解是否存在任何差异.
jfr*_*d00 12
为什么将http模块与快速模块结合使用
没有理由使用该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);
};
Run Code Online (Sandbox Code Playgroud)
因此,当您使用app.listen()或创建自己的http服务器然后app用作该服务器的侦听器时,确实没有区别(除了少一点打字).
因此,这两个代码片段在功能上是相同的:
var app = require('express')();
app.listen(8080);
app.get('/', function(req, res) {
res.send("hello");
});
Run Code Online (Sandbox Code Playgroud)
上面的代码在功能上与:
var http = require('http');
var app = require('express')();
http.createServer(app).listen(8080);
app.get('/', function(req, res) {
res.send("hello");
});
Run Code Online (Sandbox Code Playgroud)
当然,如果您尝试设置https服务器或向该.createServer()方法添加自定义选项,那么您将首先设置自己的服务器,然后将app其作为侦听器传递给它. app.listen(...)只是默认http.createServer()工作正常时的快捷方式.
| 归档时间: |
|
| 查看次数: |
2006 次 |
| 最近记录: |