在线ps网站,wordpress模板无法显示,四川省四川省住房和城乡建设厅网站,室内设计网站哪里可以看Express 框架概述
Express 是一个基于 Node.js 平台的快速、开放、极简的Web开发框架。它本身仅仅提供了 web 开发的基础功能#xff0c;但是通过中间件的方式集成了外部插件来处理HTTP请求#xff0c;例如 body-parser 用于解析 HTTP 请求体#xff0c;compression 用于压…Express 框架概述
Express 是一个基于 Node.js 平台的快速、开放、极简的Web开发框架。它本身仅仅提供了 web 开发的基础功能但是通过中间件的方式集成了外部插件来处理HTTP请求例如 body-parser 用于解析 HTTP 请求体compression 用于压缩 HTTP 响应cookie-parse 用于解析 cookie 数据cors 用于处理跨域资源请求Morgan 用于 http 请求日志。这使得 Express 本身变得更加灵活和简单。
Express 官方网站https://expressjs.com/ 下载安装 Express 框架模块包
npm install expressExpress 初体验案例
const express require(express)
const app express()app.get(/, function (req, res) {res.send(Hello World)
})app.listen({port: 3000, hostname: 127.0.0.1}, () {console.log(http://127.0.0.1:3000/)
})获取 request 请求数据
app.get(/index, function (req, res) {console.log(req.method)console.log(req.url)console.log(req.httpVersion)console.log(req.headers)console.log(req.path)console.log(req.query)console.log(req.ip)console.log(req.params)
})response 响应配置
Node.Js 原生响应 response
app.get(/response, (req, res) {res.statusCode 200;res.statusMessage loveres.setHeader(xxx, yyy)res.write(hello express)res.end(response)
})Express 响应 response
app.get(/response, (req, res) {res.status(200);res.set(aaa, bbb)res.send(hello Express)
})配置路由参数
app.get(/data/:id, (req, res) {console.log(req.params.id)
})重定向 redirect
app.get(/redirect, (req, res) {res.redirect(http://www.baidu.com/)
})下载服务器资源 download
app.get(/download, (req, res) {res.download(__dirname /test.mp4)
})响应 Json 格式数据
app.get(/json, (req, res) {res.json({name: helloworld, password: helloworld})
})测试结果 Express 中间件
在 Express 中, 使用 app.use 或者 app.METHOD 注册的中间件叫做应用级中间件。
全局中间件给每个路由规则都添加中间件处理函数
app.use(function (req, res, next) {console.log(我是一个全局中间件, 影响所有的路由规则)
})局部中间件给某一个特定的路由规则添加中间件处理函数
app.use(/users, function (req, res, next) {console.log(这里是一个局部中间件, 只影响/users路由)next()
})路由中间件
express.Router()对象也可以注册中间件。使用 router.use 或者 router.METHOD 注册的中间件叫做路由级中间件。
var app express()
var router express.Router()router.use(function (req, res, next) {console.log(Time:, Date.now())next()
})
router.get(/users/, function(req, res) {res.send(hello)
})静态资源中间件
如果要在网页中加载静态文件比如样式表、图片等就需要另外指定一个存放静态文件的目录。注意 index.html 文件是默认打开的资源。如果静态资源与路由规则同时匹配谁先匹配谁就响应。路由响应动态资源静态资源中间件响应静态资源。
app.use(express.static(__dirname /public))获取请求体数据
解析 querystring 请求体数据
const bodyparser require(body-parser)
app.use(bodyparser.urlencoded({ extended: true }))
app.post(/post, (req, res) {console.log(req.body)
})解析 json 请求体数据
const bodyparser require(body-parser)
app.use(bodyparser.json())
app.post(/post, (req, res) {console.log(req.body)
}){ username: 123, password: 123 }Express.Router
Express 4.0 路由器功能成了一个单独的组件Express.Router。它好像小型的 express 应用程序一样有自己的use、get、param 和 route 方法。
首先Express.Router 是一个构造函数调用后返回一个路由器实例。然后使用该实例的HTTP动词方法为不同的访问路径指定回调函数最后挂载到某个路径。
var router express.Router();router.get(/, function(req, res) {res.send(首页);
});router.get(/about, function(req, res) {res.send(关于);
});app.use(/, router);定义了两个访问路径然后将它们挂载到根目录。如果最后一行改为app.use(‘/app’, router)则相当于为/app和/app/about这两个路径指定了回调函数。这种路由器可以自由挂载的做法为程序带来了更大的灵活性既可以定义多个路由器实例也可以为将同一个路由器实例挂载到多个路径。
app.route 实例
假定 app 是 Express 的实例对象Express 4.0为该对象提供了一个route属性。app.route 实际上是 express.Router() 的缩写形式除了直接挂载到根路径。因此对同一个路径指定 get 和 post 方法的回调函数能写成链式形式。
app.route(/login).get(function(req, res) {res.send(this is the login form);}).post(function(req, res) {console.log(processing);res.send(processing the login form!);});