express----express的理解

express:基于node.js的前端开发框架,能快速地搭建一个项目的骨架。核心是对http模块的再包装。是一个自身功能极简单,完全由路由和中间件构成的web开发框架,从本质上说,一个express应用是在调用各种中间件。

express安装步骤:

1.全局安装以下2个:

npm install express -g 和 npm install express-generator -g

2.推荐使用ejs模板,新建一个空白项目文件夹,在项目根目录express -e

3.安装依赖 cnpm install 

express中间件是一个可访问请求对象(req)和响应对象(res)的函数,在 Express 应用的请求-响应循环里,下一个内联的中间件通常用变量 next 表示。

中间件的功能包括:执行任何代码;修改请求和响应对象;终结请求-响应循环;调用堆栈中的下一个中间件。注意:当前中间件没有终结请求-响应循环时必须调用 next() 方法进入到下一个中间件,否则请求就会挂起。

express中间件的分类

(1)内置中间件express.static 唯一的内置中间件,它基于 serve-static,负责在 Express 应用中提供静态资源。(__dirname代表当前文件夹的路径)

app.use(express.static(path.join(__dirname, 'public')));

(2)应用级中间件:绑定到 express 实例,使用 app.use()  app.VERB() 。 

 

// 没有挂载路径的中间件,应用的每个请求都会执行该中间件
app.use(function (req, res, next) {
    console.log('Time:', Date.now());
    next();
});
// 挂载至 /user/:id 的中间件,任何指向 /user/:id 的请求都会执行它
app.use('/user/:id', function (req, res, next) {
    console.log('Request Type:', req.method);
    next();
});
// 路由和句柄函数(中间件系统),处理指向 /user/:id 的 GET 请求
app.get('/user/:id', function (req, res, next){
    res.send('USER');
});

 

(3)路由级中间件:和应用级中间件一样,只是它绑定的对象为 express.Router()。使用 router.use()  router.VERB() 加载。

 

app.use('/', indexRouter);
app.use('/users', usersRouter);

 

(4)错误处理中间件:有 4 个参数(err, req, res, next),定义错误处理中间件时必须使用这 4 个参数。

 

app.use(function(err, req, res, next){
    res.locals.message = err.message;
    res.locals.error = req.app.get('env') === 'development' ? err : {};
    res.status(err.status || 500);
    res.render('error');
});

 

(5)第三方中间件:通过第三方中间件来添加,需要安装所需功能的 node 模块。

 

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

 

next()由于node异步的原因,需要提供一种机制,当当前中间件工作完成之后,通知下一个中间件执行,因此使用next()方法进入下一个中间件。

app.use(function(req, res, next) {
    next(createError(404));
});

 

参考链接地址:

https://blog.csdn.net/u011413061/article/details/50518069

 

posted @ 2019-01-11 20:41  snowstorm_22  阅读(325)  评论(0编辑  收藏  举报