express入门使用

Express是基于Node.js平台,快速、开放、极简的Web开发框架,合理利用express能够提高我们的开发效率。

express 是一款轻量高效的 node web 开发框架。通过对 node 内置模块的封装和拓展,提高开发者构建一个 web 应用的效率。类似的框架还有 koakoaexpress是同一个开发团队)。

一、Express概述

Express开发web框架的优点:

  • 易上手: express 对 node 底层API进行了适度封装,减少了程序的复杂度。
  • 性能好: nodejs最初就是为了开发高性能web服务器而被设计出来的。
  • 高拓展: express 是基于中间件的开发模式,对请求处理进行了拆分,方便应用模块化和后期维护。

以下是 node 请求的一个流程图:

express 在其中的作用就是协助开发者处理圆圈中的请求处理函数。与上图相比,express 处理流程如下:

和之前处理相比,express 将一个大型的 request 请求拆分成了多个中间件,依次处理。

二、Express快速开始

express 官方提供了一个生成器 express-generator 可用于快速构建一个 web 应用。

1
2
3
4
npm install -g express-generator
express --view=ejs myapp
cd myapp
npm install

三、中间件 & 路由

Express 对中间件分为以下几类:

  • 应用级中间件 (app.use()app.METHOD()
  • 路由级中间件 (通过express.Router()创建,router.use()router.METHOD()
  • 错误处理中间件 (通过中间件四个参数识别 (err, req, res, next) => {}
  • 内置中间件
  • 第三方中间件

以下是 应用级中间件的一个使用说明:

在利用 express 进行实际开发过程中,开发者只要能按照中间件的规则,就能进行快速开发。

express支持四种类型路由:

  • 字符串类型 app.get('/book', (req, res, next) => { }); eg. /book
  • 字符串模式类型 app.get('/user/*man', (req, res, next) => { }); eg. /user/man, /user/woman
  • 正则表达式类型 app.get('/animals?$/', (req, res, next) => { }); eg. /animal, /animals
  • 参数类型 app.get('/employee/:uid/:age', (req, res, next) => { }); eg. /111/30,返回 {"uid": 111, "age": 30}

注意:
当应用越发复杂时,最好利用express.Router()进行路由拆分。
express 中间件的执行顺序为注册的先后顺序,因此建议将错误处理中间件在最后注册。

四、常用中间件

Middleware module Description Replaces built-in function (Express 3)
body-parser Parse HTTP request body. See also: body, co-body, and raw-body. express.bodyParser
compression Compress HTTP responses. express.compress
connect-rid Generate unique request ID. NA
cookie-parser Parse cookie header and populate req.cookies. See also cookies and keygrip. express.cookieParser
cookie-session Establish cookie-based sessions. express.cookieSession
cors Enable cross-origin resource sharing (CORS) with various options. NA
csurf Protect from CSRF exploits. express.csrf
errorhandler Development error-handling/debugging. express.errorHandler
method-override Override HTTP methods using header. express.methodOverride
morgan HTTP request logger. express.logger
multer Handle multi-part form data. express.bodyParser
response-time Record HTTP response time. express.responseTime
serve-favicon Serve a favicon. express.favicon
serve-index Serve directory listing for a given path. express.directory
serve-static Serve static files. express.static
session Establish server-based sessions (development only). express.session
timeout Set a timeout period for HTTP request processing. express.timeout
vhost Create virtual domains. express.vhost
-------------本文结束感谢您的阅读-------------
0%