Node Express模块

Express

Express是一种保持最低程度规模的灵活 Node.js Web 应用程序框架,为 Web 和移动应用程序提供一组强大的功能。

安装:

本地安装

$ npm install express --save
或者
$ npm install express

采用 –save 选项安装的 Node 模块已添加到 package.json 文件中的 dependencies 列表。 今后运行 app 目录中的 npm install 将自动安装依赖项列表中的模块。

全局安装

$ npm install express -g

搭建本地开发环境
假设您已经安装了 Node.js,创建目录以保存应用程序,并将其设置为工作目录

$ mkdir myapp
$ cd myapp

使用 npm init 命令为应用程序创建 package.json 文件。

$ npm init

此命令提示您输入若干项,例如应用程序的名称和版本。 现在,只需按回车键以接受其中大多数项的缺省值,但以下情况例外:

entry point: (index.js)

输入 app.js,或者您希望使用的任何主文件名称。如果希望文件名为 index.js,请按回车键以接受建议的缺省文件名。
在 app 目录中安装 Express,然后将其保存在依赖项列表中。例如:

$ npm install express --save

要暂时安装 Express 而不将其添加到依赖项列表中,请省略 –save 选项:

$ npm install express

中间件概念

在NodeJS中,中间件主要是指封装所有Http请求细节处理的方法。一次Http请求通常包含很多工作,如记录日志、ip过滤、查询字符串、请求体解析、Cookie处理、权限验证、参数验证、异常处理等,但对于Web应用而言,并不希望接触到这么多细节性的处理,因此引入中间件来简化和隔离这些基础设施与业务逻辑之间的细节,让开发者能够关注在业务的开发上,以达到提升开发效率的目的。

中间件的行为比较类似Java中过滤器的工作原理,就是在进入具体的业务处理之前,先让过滤器处理。它的工作模型下图所示。在这里插入图片描述
中间件(Middleware) 是一个函数,它可以访问请求对象(request object (req)), 响 应对象(response object (res)), 和 web 应用中处理请求-响应循环流程中的中间件,一般 被命名为 next 的变量。
中间件的功能包括 :
执行任何代码。 修改请求和响应对象。 终结请求-响应循环。 调用堆栈中的下一个中间件。
如果我的 get、post 回调函数中,没有 next 参数,那么就匹配上第一个路由,就不会往下匹 配了。如果想往下匹配的话,那么需要写 next()

静态文件 static

通过 Express 内置的 express.static 可以方便地托管静态文件,例如图片、CSS、JavaScript文件等。

将静态资源文件所在的目录作为参数传递给 express.static 中间件就可以提供静态资源文件的访问了。例如,假设在 public 目录放置了图片、CSS 和 JavaScript 文件,你就可以:

app.use(express.static('public'));

如果你的静态资源存放在多个目录下面,你可以多次调用 express.static 中间件:

app.use(express.static('public'));
app.use(express.static('images'));

访问静态资源文件时,express.static 中间件会根据目录添加的顺序查找所需的文件。

上传文件 Multer

Multer是一个Node.js中间件,用于处理 multipart/form-data类型的表单数据,它主要用于上传文件。它是写在busboy之上非常高效。
注意: Multer不会处理任何非multipart/form-data类型的表单数据。
如何安装?
$ npm install --save multer
怎么使用?
Multer 会添加一个body对象以及file或files对象到express的request对象中。
body对象包含表单的文本域信息,file或files对象包含对象表单上传的文件信息。

基本使用方法:

const express = require('express')
const multer  = require('multer')
const upload = multer({ dest: 'uploads/' })
const app = express()
app.post('/upload', upload.single('file'), function (req, res, next) {// req.file 是file文件的信息// req.body 将具有文本域数据,如果存在的话
})

基本路由

路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET、POST 等)组成的,涉及到应用如何响应客户端对某个网站节点的访问。

express路由的方式有多种,这里举例常用的几种:

.app.use('/', Middleware);//get/post时,对于路径/的处理
.app.get("/", Middleware);//http中get时,对于路径/的处理
.app.post("/", Middleware);//http中post时,对于路径/的处理
.app.put("/", Middleware);//http中put时,对于路径/的处理
.app.delete("/", Middleware);//http中delete时,对于路径/的处理

Request 和 Response 对象的具体介绍:

Request 对象
  • request 对象表示 HTTP 请求,包含了请求查询字符串,参数,内容,HTTP 头部等属性。常见属性有:

req.app:当callback为外部文件时,用req.app访问express的实例
req.baseUrl:获取路由当前安装的URL路径
req.body / req.cookies:获得「请求主体」/ Cookies
req.fresh / req.stale:判断请求是否还「新鲜」
req.hostname / req.ip:获取主机名和IP地址
req.originalUrl:获取原始请求URL
req.params:获取路由的parameters
req.path:获取请求路径
req.protocol:获取协议类型
req.query:获取URL的查询参数串
req.route:获取当前匹配的路由
req.subdomains:获取子域名
req.accepts():检查可接受的请求的文档类型
req.acceptsCharsets / req.acceptsEncodings / req.acceptsLanguages:返回指定字符集的第一个可接受字符编码
req.get():获取指定的HTTP请求头
req.is():判断请求头Content-Type的MIME类型

Response 对象
  • response 对象表示 HTTP 响应,即在接收到请求时向客户端发送的 HTTP 响应数据。常见属性有:

res.app:同req.app一样
res.append():追加指定HTTP头
res.set()在res.append()后将重置之前设置的头
res.cookie(name,value [,option]):设置Cookie
opition: domain / expires / httpOnly / maxAge / path / secure / signed
res.clearCookie():清除Cookie
res.download():传送指定路径的文件
res.get():返回指定的HTTP头
res.json():传送JSON响应
res.jsonp():传送JSONP响应
res.location():只设置响应的Location HTTP头,不设置状态码或者close response
res.redirect():设置响应的Location HTTP头,并且设置状态码302
res.render(view,[locals],callback):渲染一个view,同时向callback传递渲染后的字符串,如果在渲染过程中有错误发生next(err)将会被自动调用。callback将会被传入一个可能发生的错误以及渲染后的页面,这样就不会自动输出了。
res.send():传送HTTP响应
res.sendFile(path [,options] [,fn]):传送指定路径的文件 -会自动根据文件extension设定Content-Type
res.set():设置HTTP头,传入object可以一次设置多个头
res.status():设置HTTP状态码
res.type():设置Content-Type的MIME类型


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部