Express应用
@ 姜波 | 星期二,九月 3 日,2019 年 | 3 分钟阅读 | 更新于 星期二,九月 3 日,2019 年

启程helloworld

  • 安装npm i express -S
  • 1:引入express第三方对象
  • 2:构建一个服务器对象
  • 3:开启服务器监听端口
  • 4:处理响应
  • 在express中,保留了原生http的相关属性和函数

app.use(虚拟目录,fn)

  • 小练习
    • 选择性荤菜素菜
  • 用户/abc/def的请求
    • 选择性调用app.use('/abc',fn)的中间件
    • 但是内部req.url则去除了/abc这个暗号
  • app.use(fn)是任何请求都会触发执行的

中间件类别(了解)

  • 应用级中间件 app.use(事fn)
  • 路由级中间件
    • 1:获取路径级中间件
    • 2:配置路由
    • 3:加入到应用程序控制中app.use(router);
  • 内置中间件
    • 处理一些静态资源文件的返回(设置将某个目录下的资源文件向外暴露)
      • 当url匹配上我设置的目录下的子文件后,自动返回该文件
      • 加入到应用程序控制中app.use(内置中间件);
  • 第三方中间件
    • 更方便的处理cookie/session,简易的解析post请求体数据
    • 在npm上下载并使用
    • 加入到应用程序控制中app.use(第三方中间件);
  • 错误处理中间件
    • 在express中统一处理错误next(err)

路由中间件

  • 一个请求进来(总网线),分发到各自不同的处理(分多根网线给其他人)
    • 分流
  • 后端路由
    • (请求方式 + URL = 判断依据)(分流的判断依据) -> 做不同的处理(分流后的行为)
  • 使用步骤
    • 1:获取路由中间件对象 let router = express.Router();
    • 2:配置路由规则 router.请求方式(URL,fn事)
      • fn中参数有req,res,next
    • 3:将router加入到应用app.use(router)

路由

Image text

res扩展函数

res.download('./xxx.txt') // 下载文件
res.json({})  // 响应json对象
res.jsonp(数据) // 配合jsonp   要求客户端请求的时候也是jsonp的方式,  并且callback=xxx
res.redirect()  //  重定向 301是永久重定向, 302临时重定向
res.send()    // 发送字符串数据自动加content-type
res.sendFile() // 显示一个文件
res.sendStatus() // 响应状态码
  • 总结
    • res.json() 响应数据,最常用 , 返回ajax数据
    • redirect() 重定向
    • download() 下载
    • Image text
    • jsonp() 跨域处理

模板渲染


使用art-template模板引擎

  • 下载express-art-template art-template
  • app.js中配置
    • 注册一个模板引擎
      • app.engine('.html',express-art-template);
      • 设置默认渲染引擎app.set('view engine','.html');
    • res.render(文件名,数据对象);
    • express这套使用,默认在当前app.js同级的views目录查找

内置中间件(处理静态资源)

  • 1: 创建对象 let static = express.static('./public');
  • 2: 配置到中间件中 app.use(static);

第三方中间件(post请求体的获取)

  • 原生的:req.on('data',data=>{ data.toString();})
const bodyParser = require('body-parser');
// 解析键值对application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false })); 
// 不用扩展的库来解析键值对,而使用node内置核心对象querystring来解析键值对
// 解析application/json
app.use(bodyParser.json());

服务端处理错误和404页面找不到

  • 404页面响应router.all('*',()=>{} )
  • 触发错误
    • next(err);
    • 处理错误 app.use( 4参数函数 )

nodemon

  • 修改代码自动重启
  • 安装全局命令行工具 npm i -g nodemon
  • 进入到指定目录命令行 nodemon ./xxx.js
  • 手动触发重启,在命令行输入 rs回车

公众号

Image text

QQ

Image text

微信

Image text

微信打赏

Image text

社交链接