node.js学习笔记9: express-基本路由

express和koa是使用最广的两个node.js框架。
我们先从express说起。

express是一个灵活的node.js应用框架,在实际的项目当中,用原生node.js的似乎不多,大多会使用框架。

express是一个非侵入式的框架,所谓非侵入式是指它保留了原生node.js的功能,同时添加了一些方法,所以上手起来并不难。

在这里先分享express的两个新方法。
使用前需要先安装express:

1
npm install express --save

1. res.write()

用express创建服务器的步骤和原生node.js一样,只是引用的模块有区别。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 1. 引入express模块
const express = require('express');

//2. 利用express创建服务器
let server = express();

//3. 处理数据
server.get('/', (req, res) => {
res.send('here comes a GET request');
res.end();
});

//4. 监听
server.listen(8080, () => {
console.log('server running');
});

res.send()

express中的res.send()方法和原生node.js的res.write()方法的区别在于res.write()只能接受字符串或buffer作为参数,无法传递其他类型的数据,而res.send()可以接受任意类型的数据。

2. server的基本路由

原生的node.js中createServer后,依靠req.url属性和req.on方法来分别获取GET和POST数据,express则对get和post分别提供了方法,以及通用方法use

1. get方法
1
2
3
4
<form action="http://localhost:8080" method="get">
<input type="text" name="name" />
<input type="submit" value="提交" />
</form>
1
2
3
4
5
6
7
8
9
10
11
12
13
const express = require('express');

let server = express();

server.get('/', (req, res) => {
res.send('Got a GET request');
console.log('here comes a GET request');
res.end();
});

server.listen(8080, () => {
console.log('server running');
});

终端显示收到get请求

浏览器收到服务器端传递的信息

2. post方法
1
2
3
4
<form action="http://localhost:8080" method="post">
<input type="text" name="name" />
<input type="submit" value="提交" />
</form>
1
2
3
4
5
6
7
8
9
10
11
12
13
const express = require('express');

let server = express();

server.post('/', (req, res) => {
res.send('Got a POST request');
console.log('here comes a POST request');
res.end();
});

server.listen(8080, () => {
console.log('server running');
});

服务器端收到post请求

浏览器端收到服务器端返回的信息

3. use方法

此外,express的use方法则可以替代以上的get和post方法,能够收到get和post两种数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
const express = require('express');

let server = express();

server.use('/', (req, res) => {
res.send('Got a GET request');
console.log('here comes a GET request');
res.end();
});

server.listen(8080, () => {
console.log('server running');
});
1
2
3
4
5
6
7
8
9
10
11
12
13
const express = require('express');

let server = express();

server.use('/', (req, res) => {
res.send('Got a POST request');
console.log('here comes a POST request');
res.end();
});

server.listen(8080, () => {
console.log('server running');
});

原生node.js与express框架创建服务器对比