锋言锋语

NferZhuang的自留地

express初识

准备环境

  1. 安装node、npm
  2. 安装express模块

环境部署不在这里赘述,网上一搜一大把。

Hello World Express

程序员的世界从Hello World开始!

创建app.js文件,输入下述代码:

var express = require('express')
var app = express()

app.get('/', function (req, res) {
  res.send('Hello World!')
})

app.listen(3000, function () {
  console.log('Example app listening on port 3000!')
})

这段代码的运行也非常简单,直接在命令行下输入:

$ node app.js

然后在浏览器上输入 http://localhost:3000/ 即可查看效果。

代码拆解

上面的示例代码分为:

  • 变量express,通过require引入,表示express模块
  • 变量app,通过express()函数创建一个Application
  • 函数app.get(),定义路由处理函数
  • 函数app.listen(),启动app,并且绑定在3000端口上

express模块

我们可以通过如下代码输出一下express模块的信息:

var express = require('express')
console.log(express)

输出结果如下:

{
	[Function: createApplication]
	application: {...},
	request: IncomingMessage {...},
	response: ServerResponse {...},
	Route: [Function: Route],
	Router: {...},
	query: [Function: query],
	static: {...}
}

通过输出,我们知道express模块提供了一个module.exports的构造函数来创建一个application,还有几个exports接口:application、request、response,Route、Router以及query、static。

express函数

同样,我们通过代码输出一下app变量的信息:

var express = require('express')
var app = express()
console.log(app);

输出的结果如下:

{ [Function]
  domain: undefined,
  _events: { mount: [Function: onmount] },
  _maxListeners: undefined,
  ...
  get: [Function],
  listen: [Function: listen],
  ...
  cache: {},
  engines: {},
  settings: {...},
  _eventsCount: 1,
  locals: {...},
  mountpath: '/'
}

app的输出,也可以看到其中有一个匿名函数(构造函数),还有就是app下的一些接口,其中就有上面我们使用到的get、listen接口,当然还有一些其他接口和属性。

app.get()函数

app.get()函数的定义如下:

app.get(path, callback [, callback …])

示例代码中,path字段的值是’/’,callback字段是一个函数用来输出’Hello World!’。

app.listen()函数

app.listen()函数的定义如下:

app.listen(port, [hostname], [backlog], [callback])

示例代码中,port字段的值是3000,hostname和backlog字段为空,callback字段是一个函数用来输出一个提示信息。

先看一下express源码中app.listen()函数的实现:

// FILE: node_modules/express/lib/application.js
app.listen = function listen() {
  var server = http.createServer(this);
  return server.listen.apply(server, arguments);
};

从代码上可以看出,app.listen()函数实际做了两件事情:

  • 通过nodejs内置模块http.createServer(this)创建一个http server
  • 调用server.listen.apply(server, arguments)接口,并将参数透传下去

查看nodejs的官方说明,其中hostname字段的默认值是0.0.0.0,backlog字段的默认值是511。

总结

这一章,我们了解了以下知识点:

  • express模块的定义
  • express()函数的定义
  • app.get()函数的使用
  • app.listen()函数的使用
文 / nfer
LEAVE A REPLY

loading