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)); });
参考链接地址: