基于 Node.js 平台的 web 应用开发框架,并且不会对 Node.js已有的特性进行二次抽象。
安装:
导入:
路由功能 router
路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET、POST 等)组成的,涉及到应用如何响应客户端对某个网站节点的访问。
每一个路由都可以有一个或者多个处理器函数,当匹配到路由时,这些函数将被执行。
路由的定义由如下结构组成:app.METHOD(PATH, HANDLER)
其中, app 是express的实例;METHOD 为某个 HTTP 请求方式,PATH 是服务器端的路径;HANDLER 是当路由匹配到时需要执行的函数。
|
|
路由匹配
app.METHOD
是精确获取app.use
是模糊获取,监听路由下的所有子路有都会被监听。
例如:
模糊匹配:冒号
|
|
express.Router
可使用 express.Router 类创建模块化、可挂载的路由句柄。Router 实例是一个完整的中间件和路由系统,因此常称其为一个 “mini-app”。
主界面:
news.js 模块:
通过访问 127.0.0.1/news 就能显示新闻内容
,访问 127.0.0.1/news/today 就能显示今日热点
。
参数获取
req.query 获取get请求的参数
获取 post 参数
通过 第三方中间件 body-parser 来实现。
注: 在express3.X版本中是集成了body-parser ,但是在4.X版本中已经去掉了,需要手动集成
安装方法:yarn add body-parser
|
|
错误处理
定义错误处理中间件和定义其他中间件一样,除了需要 4 个参数,而不是 3 个,其格式如下 (err, req, res, next)。
处理错误的中间件:
如果向 next() 传入参数(除了 ‘route’ 字符串),Express 会认为当前请求有错误的输出,因此跳过后续其他非错误处理和路由/中间件函数。
静态文件托管
利用 express 内置的 express.static 可以方便地托管静态文件。例如图片、CSS、JS 文件等。app.use(express.static(public));
现在,public 下的文件就可以访问了。
127.0.0.1/images/cat.jpg
127.0.0.1/css/style.css
127.0.0.1/index.html
所有文件的路径都是相对于存放目录的。
如果静态资源吨放在多个目录下面,可以多次调用 express.static 中间件,访问静态资源文件时,会根据目录添加的顺序查找所需的文件。
也可以指定一个虚拟路由来挂载静态资源。例如:app.use('/virtual', express.static('public'));
127.0.0.1/virtual/images/cat.jpg
127.0.0.1/virtual/css/style.css
127.0.0.1/virtual/index.html
模板引擎
通过 express 渲染模板引擎 nunjucks 的具体实现。