Node-express框架、创建服务器步骤、托管静态资源、路由、中间件

Express 框架

官方给出的概念:Express 是基于 Node.js 平台,快速、开放、极简的 Web 开发框架。

通俗的理解:Express 的作用和 Node.js 内置的 http 模块类似,是专门用来创建 Web 服务器的。

Express 的本质:就是一个 npm 上的第三方包,提供了快速创建 Web 服务器的便捷方法。

Express 的中文官网: Express - 基于 Node.js 平台的 web 应用开发框架 - Express 中文文档 | Express 中文网

创建服务器步骤

安装

 创建基本的 Web 服务器

// 1.导入第三方包express
const express = require('express')

// 2. 创建应用
const app = express()

// 3. 监听request请求


// 4.启动并设置端口
app.listen(8001, () => {
  console.log('app is runing at http://127.0.0.1');
})

监听请求

// 3. 监听request请求
app.get('/', (req, res) => {

})
app.post('/', (req, res) => {

})

把内容响应给客户端

// 3. 监听request请求
app.get('/', (req, res) => {
  res.send('get 请求 返回')
})
app.post('/', (req, res) => {
  res.send('post 请求 返回')
})

托管静态资源

静态资源说明:

web开发中所有的代码都是放在服务器端的,客户端在 请求 - 响应 的过程中,代码不会动态的发生变化的文件,我们可以称之为静态资源;html css js 图片 字体等... 都可以称之为静态资源文件。

express.static()

express 提供了一个非常好用的函数,叫做 express.static(),通过它,我们可以非常方便地创建一个静态资源服务器。

const express = require('express')

const app = express()

// 托管静态资源
app.use(express.static('xtx-pc-client'))

app.listen(80, () => {
  console.log('app is running')
})

 如上,xtx-pc-client文件夹的静态资源可以对外开放访问了。

挂载路径前缀

在托管的静态资源访问路径之前,挂载路径前缀

// 设置静态资源的前缀  位置在第三步
app.use('/study', express.static('xtx-pc-client'))

路由

Express 中的路由

在 Express 中,路由指的是客户端的请求与服务器处理函数之间的映射关系。

Express 中的路由分 3 部分组成,分别是请求的类型、请求的 URL 地址、处理函数,格式如下:

客户的请求方式+请求地址与后端的处理函数是映射关系。

语法:

app.use(地址,处理函数)

app.post('/', (req, res) => {
  
})

用法:

app.post('/', (req, res) => {
  res.send('return post result')
})

 模块化路由

为了方便对路由进行模块化的管理,Express 不建议将路由直接挂载到 app 上,而是推荐将路由抽离为单独的模块。

将路由抽离为单独模块的步骤如下:

1.创建路由模块对应的 .js 文件;

2.调用 express.Router() 函数创建路由对象;

3.向路由对象上挂载具体的路由;

4.使用 module.exports 向外共享路由对象;

5.使用 app.use() 函数注册路由模块。

// 1. 导入express模块
const express = require('express')

// 2. 创建应用
const app = express()

// 3.挂载路由
const router = require('./router.js')
app.use(router)

// 4. 开启服务器并设置端口
app.listen(80, () => {
  console.log('app is running')
})

中间件

局部中间件

// 3.挂载路由
// 3.1 添加get中间件
app.get('/', (req, res, next) => {
  console.log('get ok1')
  res.a = 100
  res.b = 200
  next()  // 只有调用next才会进行下一步
})

app.get('/', (req, res) => {
  console.log(res.a)  // 100
  console.log(res.b)  // 200 
  res.send('get ok')
})

全局中间件 

// 3.挂载路由
// 3.1 添加一个中间件
const mw1 = (req, res, next) => {
  console.log('ok1')
  next()
}
// 注册中间件
app.use(mw1)

app.get('/', mw1, (req, res) => {
  res.send('get ok')
})

app.post('/', mw1, (req, res) => {
  res.send('post ok')
})

使用注意事项:

1.一定要在路由之前注册中间件;

2.客户端发送过来的请求,可以连续调用多个中间件进行处理;

3.执行完中间件的业务代码之后,不要忘记调用 next() 函数;

4.为了防止代码逻辑混乱,调用 next() 函数后不要再写额外的代码;

5.连续调用多个中间件时,多个中间件之间,共享 req 和 res 对象。

6.下一个中间件可以获取到上一个中间件绑定的数据。

中间件的分类

Express 官方把常见的中间件,分成了 5 大类,分别是:

1.应用级别的中间件;

2.路由级别的中间件;

3.错误级别的中间件;

4.Express 内置的中间件;

5.第三方的中间件。

应用级别的中间件

通过 app.use()函数,绑定到 app 实例上的中间件,叫做应用级别的中间件:

路由级别的中间件

绑定到 express.Router() 实例上的中间件,叫做路由级别的中间件。它的用法和应用级别中间件没有任何区别。只不过,应用级别中间件是绑定到 app 实例上,路由级别中间件绑定到 router 实例上。

错误级别的中间件

错误级别的中间件 function 处理函数,必须有 4 个形参,形参顺序从前到后,分别是 (err, req, res, next)。

// 设置错误级别中间件,其放在所有路由的后面
app.use((err, req, res, next) => {
  console.log(err.message)
  res.send('Error!' + err.message, '请稍后重试')
})

你可能感兴趣的:(Nodejs,node.js,前端,javascript)