Express框架使用

Express简介

Express是一款基于Node.js平台的、极简的web开发框架,其核心是中间件。

自动化构建一个Express应用程序

使用Express 应用生成器可以快速创建一个应用的骨架,前提是首先安装express-generator:
npm install express-generator -g
安装依赖包:
cd myapp
npm install
启动应用:
set DEBUG=myapp & npm start

手动构建极简的Express应用程序

创建一个名为app.js的文件,添加如下代码:

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

//添加应用级路由
app.get('/', function (req, res) {
  res.send('Hello World!');
});

//启用监听
var server = app.listen(3000, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', host, port);
});

通过 npm i express --save安装依赖,然后node app.js启动此应用

Express核心

路由

路由是由一个 URI、HTTP 请求(GET、POST等)和若干个句柄组成,如app.get('/home', callback)app.post('/home', callback2)

路由的回调函数

express可以为路由提供多个回调函数,回调函数包含reqresnext对象;
req为请求对象,可以取得请求的相关参数,如req.query就可以取得请求参数对象;
res为响应对象,可以取得设置响应内容,如res.send('响应内容')
next表示本次路由执行完毕,执行下一个路由,可以用于跳过某些非必要执行的内容

假设针对某个路由,不仅有get请求、而且有post请求,那么使用app.router() 创建链式路由更加方便,例如:

app.route('/book')
  .get(function(req, res) {
    res.send('Get a random book');
  })
  .post(function(req, res) {
    res.send('Add a book');
  });

上述代码中,路由/book不仅有get请求,而且有post请求;

Router路由

如果仅仅使用应用级路由会导致app.js中路由代码过多,因此通过express.Router()需要引入路由级中间件。这样就可以按模块把不同的路由分离。例如:

在 app 目录下创建名为 birds.js 的文件,内容如下:

var express = require('express');
var router = express.Router();

// 该路由使用的中间件
router.use(function timeLog(req, res, next) {
  console.log('Time: ', Date.now());
  next();
});
// 定义网站主页的路由
router.get('/', function(req, res) {
  res.send('Birds home page');
});
// 定义 about 页面的路由
router.get('/about', function(req, res) {
  res.send('About birds');
});

module.exports = router;

然后在应用中加载路由模块:

var birds = require('./birds');
app.use('/birds', birds);

中间件

中间件(Middleware) 是一个函数,它可以访问请求对象(request object (req)), 响应对象(response object (res)), 和 web 应用中处于请求-响应循环流程中的中间件,一般被命名为 next 的变量。

Express 应用可使用如下几种中间件:

  1. 应用级中间件
  2. 路由级中间件
  3. 错误处理中间件
  4. 内置中间件
  5. 第三方中间件

上一节中介绍路由的时候,使用应用级中间件和路由级中间件进行举例,那么错误处理中间件 又是什么呢?直接看代码:

app.use(function(err, req, res, next) {
  console.error(err.stack);
  res.status(500).send('Something broke!');
});

内置中间件:

从 4.x 版本开始,只有express.static了,基于 serve-static,负责在 Express 应用中提托管静态资源。

第三方中间件

通过使用第三方中间件从而为 Express 应用增加更多功能,安装所需功能的 node 模块,并在应用中加载,可以在应用级加载,也可以在路由级加载。例如:cookie-parser

npm install cookie-parser -S
var express = require('express');
var app = express();
var cookieParser = require('cookie-parser');

// 加载用于解析 cookie 的中间件
app.use(cookieParser());

参考文献:
[1] express官网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值