Express 初学笔记

看了express很多次,都是懵懵的,这次居然看得有些明白了。整理一篇笔记吧~

Express是什么?

官网是这么说的:基于Node.js平台,快速、开放、极简的web开发框架。

嗯,express就是一个Node.js框架。他自身功能非常简单,就是在调用各种中间件。

创建Express应用

创建一个Express应用非常简单,官网上面有一个Hello world实例,试一下就懂了,不再多说。

路由

下面来说一下路由,路由是指如何定义应用的端点(URIs)以及如何响应客户端的请求。

路由的结构如下:

app.METHOD(path, [callback...], callback);

其中,app是express的一个实例。METHOD 是HTTP请求方法,例如:get、post、put等,path是路径,callback是匹配到该路径时要执行的回调函数。可以定义多个callback。

例如:
var express = require('express');
var app = express();

app.get('/school', (req, res) => {
    res.send(‘Hello world’);
})

当匹配到/school 这个路径的时候,回调函数就会被执行,返回给客户端'Hello world'。要注意的是,这个回调函数中,我们必须调用一个响应方法来给客户端响应,并终结请求,否则客户端请求会一直挂起。

响应方法列表如下:

方法描述
res.download()提示下载文件。
res.end()终结响应处理流程。
res.json()发送一个JSON格式的响应。
res.jsonp()发送一个支持JSONP的JSON格式的响应。
res.redirect()重定向请求。
res.render()渲染视图模板。
res.send()发送各种类型的响应。
res.sendFile以8位字节流的形式发送文件。
res.sendStatus()设置响应状态码,并将其以字符串的形式作为响应体的一部分发送。

中间件

前面的内容都可以忽略不看,中间件还是得看一看的。。中间件的本质就是一个函数,我们可以使用中间件在收到请求后,返回响应之前做一些想做的事情~~

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

中间件的功能:

  • 执行任何代码
  • 修改请求和响应对象
  • 终止请求
  • 调用堆栈的下一个中间件

Express可以使用以下几种中间件: 应用级中间件、路由级中间件、错误处理中间件、内置中间件和第三方中间件。

应用级中间件

应用级中间件绑定到app对象,使用app.use()和app.METHOD()。是的,这里的app.METHOD()和上面路由上讲的app.METHOD()一模一样。

//没有挂载路径的中间件,每个请求都会执行该中间件
app.use((req, res, next) =>{
    console.log(‘req’, req);
    next();  //注意!必须加next(),才会继续向下去执行下一个中间件,否则请求会被挂起。
});
//挂载到/admin 的中间件,每一个请求都会执行该中间件
app.use('/admin', (req, res, next) =>{
    console.log('第一个回调函数'); //这个回调函数就是中间件 
    next(); //调用第二个回调函数
}, (req, res, next) => {
    console.log('第二个回调函数'); 
    next();  
});
//匹配到admin路径的get请求,都会执行
app.get('/admin', (req, res, next) => {
    res.send('匹配到了admin路径');
});
路由级中间件

路由级中间件和应用级中间件一样,只是他绑定的对象为express.Router();

var express =  require(‘express’);
var router = express.Router();

//匹配到admin路径的请求,都会执行
router.use('/admin', (req, res, next) => {
    console.log('req', req);
    next();  
});
错误处理中间件

在app.use()和路由调用后,最后定义错误处理中间件。错误处理中间件和其他中间件一样,只是多了一个参数。注意,必须是四个参数。

app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('Something is wrong!');
});

错误处理中间件可以定义多个,顺序调用就可以了,像这样:

app.use((err, req, res, next) => {
  console.error(err.stack);
  next()
});

app.use((err, req, res, next) => {
  console.error(err.stack);
  res.render('error', {error: err})
});
内置中间件

express.static 是express唯一内置的中间件,负责在Express应用中托管资源。

结构如下:express.static(root, [options]); 其中,root是静态资源的根目录,options参数详见链接

每个应用可以有多个静态目录。像这样:

app.use(express.static('public'));
app.use(express.static('uoloads'));
app.use(express.static('files'));
第三方中间件

第三方中间件给Express提供了更多的功能。

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

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

常见的第三方中间件:

  • body-parser  //用于解析http请求体
  • compression  //对response数据进行压缩
  • cookie-parser //对cookie进行解析,然后通过req.cookies属性来访问所有cookie对象
  • cookie-session  //提供对session的支持

其实说了这么多,入门级只要记住app.use和app.Method()怎么用就可以了,接下来可以尝试一些小项目,真正用起来才会更深入的掌握express。

如有错误,恳请指正。

参考:Express官网


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值