最近看到express,有串代码理解上出了点问题;
var server = app.listen(8081, function () {//应用启动端口为8081
var host = server.address().address;
var port = server.address().port;
console.log("应用实例,访问地址为 http://%s:%s", host, port)
});
这是那个代码块的内容
开始我不太理解,用host变量来接收,server.address().address;
这是个什么意思,这里的server是什么呢,就好比
看着他是指代的var生明的server变量,但是为什么他可以调用address()这个方法,所以等号的右边应该是一个对象才对;
在js语境中,server就是一个变量,而且他的数据类型是一个对象。
那么现在要搞清楚,app.listen是什么,显然他是express的api;
所以我去查了,express官网,这个传参的格式着实有点看不懂;
翻译:
绑定并侦听指定主机和端口上的连接。此方法与节点的http.服务器听我说 相同。如果端口被省略或为0,操作系统将分配一个任意未使用的端口,这对于自动化任务(测试等)等情况很有用。
var express = require('express')
var app = express()
app.listen('/tmp/sock')
express()返回的应用程序实际上是一个JavaScript函数,旨在作为回调传递给节点的HTTP服务器,以处理请求。这使得为应用程序的HTTP和HTTPS版本提供相同的代码基础变得很容易,因为应用程序不会继承这些代码(它只是一个回调):
var express = require('express')
var https = require('https')
var http = require('http')
var app = express()
http.createServer(app).listen(80)
https.createServer(options, app).listen(443)
应用程序。方法返回一个http服务器对象,和(对于HTTP)是一种方便的方法,用于:
app.listen = function () {
var server = http.createServer(this)
return server.listen.apply(server, arguments)
}
注意:所有形式的节点的http。服务器listen()方法实际上是受支持的。
打印一下,该服务对象的那个方法:
[未完,待续。。。]