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
| const express = require('express');
let server = express();
server.get('/', (req, res) => { res.send('here comes a GET request'); res.end(); });
server.listen(8080, () => { console.log('server running'); });
|

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'); });
|


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'); });
|


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'); });
|
