Node Js 之 express

目录

介绍

使用

初体验

路由

获取请求参数

express 响应设置

express中间件

什么是中间件

中间件的作用

 中间件的类型

Rooter

什么是 Router

 Router 作用

Router 使用

EJS模板引擎

 什么是 EJS


介绍

xpress 是一个基于 Node.js 平台的极简、灵活的 WEB 应用开发框架,官方网址:https://www.expressjs. com.cn/

简单来说,express 是一个封装好的工具包,封装了很多功能

使用

初体验

//导入express
const express = require('express')
//创建应用对象
const app = express()
//创建路由规则
app.get('/home', (req, res) => {
  res.end('hello express server')
})
//监听端口,启动服务
app.listen(3000, () => {
  console.log('服务启动成功');
})

路由

官方定义: 路由确定了应用程序如何响应客户端对特定端点的请求

//导入express
const express = require('express')
//创建应用对象
const app = express()

// 路由类似服务员---根据你的类型告诉你去哪
//创建get 路由
app.get('/', (req, res) => {
  res.send('网站首页')
})
//创建post路由
app.post('/login', (req, res) => {
  res.end('login login ')
})
//匹配所有的请求方法
app.all('/search', (req, res) => {
  res.end('1 秒钟为您找到相关结果约 100, 000, 000 个')
})
//自定义404路由
app.all('*', (req, res) => {
  res.send('<h1>404 NOT FOUND</h1>')
})
//监听端口,启动服务
app.listen(3000, () => {
  console.log('success');
})

获取请求参数

//导入express
const express = require('express')

//创建应用对象

const app = express();

//获取请求的路由规则
app.get('/request', (req, res) => {
  //1.与原生的http方式兼容
  console.log(req.method);
  console.log(req.url);
  console.log(req.httpVersion);
  console.log(req.headers);
  //2.express 独有的获取报文的方式
  //2.1 获取查询字符串
  console.log(req.query);
  //2.2 获取指定的请求头
  console.log(req.get('host'));

  res.send('请求报文的获取')

})

// //获取路由参数----URL路径中的参数(数据)
// app.get('/:id.html', (req, res) => {
//   res.send('商品详情,商品id为', req.params.id);

// })

//监听端口,启动服务
app.listen(3000, () => {
  console.log('启动成功');
})

express 响应设置

//导入express
const express = require('express')
//创建应用对象
const app = express();
//获取请求的路由规则
app.get('/response', (req, res) => {
  //1.express 中设置响应的方式兼容http模块的方式
  res.statusCode = 404
  res.statusMessage = 'xxx'
  res.setHeader('abc', 'xyz')
  res.write('响应体')
  res.end('xxx')

  //2.express 的响应方法
  res.status(500)//设置响应状态码
  res.set('xxx', 'yyy')//设置响应头
  res.send('中文响应不乱码')//设置响应体

  //连贯操作
  res.status(404).set('xxx', 'yyy').send('你好朋友')

  //3.其他响应
  res.redirect('http://atguigu.com')//重定向
  res.download('./package.json')//下载响应

  res.json()//响应json
  res.sendFile(__dirname + '/home.html')//响应文件内容
})

express中间件

什么是中间件

中间件(Middleware)本质是一个回调函数 中间件函数 可以像路由回调一样访问 请求对象(request) , 响应对象(response)

中间件的作用

中间件的作用 就是 使用函数封装公共操作,简化代码

 中间件的类型

全局中间件------定义全局中间件 每一个请求 到达服务端之后 都会执行全局中间件函数

//导入express
const express = require('express')
const fs = require('fs')
const path = require('path')
//创建应用对象
const app = express()
//声明中间件函数
function recordMiddleleweare(req, res, next) {
  //获取url ip
  let { url, ip } = req
  //将信息保存
  fs.appendFileSync(path.resolve(__dirname, './access.log'), `${url} ${ip}\r\n`)
  //调用next
  next()
}
//调用中间件函数

app.use(recordMiddleleweare)

//创建路由
app.get('/home', (req, res) => {
  res.send('front page')
})

app.get('/admin', (req, res) => {
  res.send('back page')
})

app.all('*', (req, res) => {
  res.send('<h1>404 Not Found</h1>')
})

//监听端口,启动服务、

app.listen(3000, () => {
  console.log('sucecess');
})

路由中间件

//导入express
const express = require('express')
//创建应用对象
const app = express()

//创建中间件函数
let middle = (req, res, next) => {
  if (req.query.code === '521') {
    next()
  } else {
    res.send('failure')
  }

}


//创建路由
app.get('/home', (req, res) => {
  res.send('front page')
})

app.get('/admin', middle, (req, res) => {
  res.send('back page')
})

app.get('/setting', middle, (req, res) => {
  res.send('setting page')
})

app.all('*', (req, res) => {
  res.send('<h1>404 Not Found</h1>')
})

//监听端口,启动服务

app.listen(3000, () => {
  console.log('success');
})

Rooter

什么是 Router

express 中的 Router 是一个完整的中间件和路由系统,可以看做是一个小型的 app 对象

 Router 作用

对路由进行模块化,更好的管理路由

Router 使用

创建独立的 JS 文件(homeRouter.js)

//导入express
const express = require('express')

//创建路由器对象
const router = express.Router();
//在router身上添加路由
router.get('/', (req, res) => {
  res.send('首页')
})

router.get('/cart', (req, res) => {
  res.send('购物车')
})

//暴露

module.exports = router

主文件

//路由的模块化练习
const express = require('express')
const app = express()

  //引入子路由文件
  const homeRouter = require('./06homeRouter')
  //设置使用中间件
  app.use(homeRouter)

//监听端口启动服务
app.listen(3000, () => {
  console.log('success');
})

EJS模板引擎

模板引擎是分离 用户界面和业务数据 的一种技术

(分离html 与 js )

 什么是 EJS

EJS 是一个高效的 Javascript 的模板引擎

官网: https://ejs.co/ 中文站:https://ejs.bootcss.com/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值