1️⃣ Express 团队写了一款更新的 Koa 还不太成熟待以后学习

1️⃣ Express

Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你快速创建各种 Web 和移动设备应用。
简单来说Express就是运行在node中的用来搭建服务器的模块。

1️⃣ Express的使用

2️⃣ 下载

npm i express --save 安装 express 并添加到依赖项

2️⃣ 使用

  1. // 引入express
  2. const express = require('express')
  3. // 1.创建app服务对象
  4. const app = express()
  5. // 禁止服务器返回X-Powered-By
  6. app.disable('x-powered-by')
  7. // 2.配置路由 - 对请求的url进行分类,服务器根据分类决定交给谁去处理。
  8. // (1).在Node.js课程中,我们所有说的“路由”,默认都是指【后端路由】
  9. // (2).路由可以理解为:一组一组key-value的组合,key:请求方式 + URI路径 , value:回调函数
  10. // (3).根据路由定义的顺序(写代码的顺序),依次定义好路由,随后放入一个类似数组的结构,当有请求时,依次取出匹配。若匹配成功,不再继续匹配了。
  11. // (4).该URL:http://locahost:3000/one 中 one,叫什么? 1.URI名字 2.虚拟路径名字
  12. // 根路由 - get
  13. app.get('/', function (request, response) {
  14. console.log(request.query) // 获取 key=value...
  15. response.send('使用GET请求')
  16. })
  17. // 根路由 - post
  18. app.post('/', function (request, response) {
  19. response.send('使用post请求')
  20. })
  21. // 一级路由
  22. app.get('/one', function (request, response) {
  23. response.send('一级路由')
  24. })
  25. // 二级路由
  26. app.get('/one/one', function (request, response) {
  27. response.send('二级路由')
  28. })
  29. //参数路由---可以动态接收参数
  30. app.get('/one/:id',function (request,response) {
  31. console.log(request.params);
  32. let {id} = request.params
  33. response.send(`变化的参数${id}`)
  34. })
  35. // 3.指定服务器运行的端口号(绑定端口监听)
  36. app.listen(3000, function (err) {
  37. if (!err) console.log('服务器启动成功了')
  38. else console.log(err)
  39. })

1️⃣ 路由 - API

2️⃣ request对象:

request.query:获取查询字符串参数(query参数),拿到的是一个对象
request.params:获取get请求参数路由的参数,拿到的是一个对象
request.body: 获取post请求体参数,拿到的是一个对象(不可以直接用,要借助一个中间件)
request.get(xxxx):获取请求头中指定key对应的value。

2️⃣ response对象:

response.send():给浏览器做出一个响应
response.end():给浏览器做出一个响应(不会自动追加响应头)
response.download():告诉浏览器下载一个文件,可以传递相对路径
response.sendFile():给浏览器发送一个文件 - 备注:必须传递绝对路径
response.redirect():重定向到一个新的地址(url)
response.set(key,value):自定义响应头内容
response.get(key):获取响应头指定key对应的value 很少使用
response.status(code):设置响应状态码

什么叫做服务器给浏览器响应了?

  1. 1. 服务器给浏览器一段文字
  2. 2. 服务器给了浏览器一个图片
  3. 3. 服务器给了浏览器一个视频
  4. 4. 服务器告诉浏览器下载一个文件
  5. 5. 服务器告诉浏览器重定向

备注:多个响应以response.send为主

1️⃣ 路由器

  1. // 引入 Router 构造函数
  2. const {Router} = require('express')
  3. // 创建一个 Router 实例(路由器就是一个小型的app)
  4. let router = new Router()
  5. // 引入 path 模块 - Node中内置的一个专门用于解决路径问题的库
  6. let {resolve} = require('path')
  7. // 路由
  8. router.get('/login',(req,res)=>{
  9. let url = resolve(__dirname,'../public/login.html')
  10. res.sendFile(url)
  11. })
  12. // 暴露语法
  13. module.exports = function () {
  14. return router
  15. }
  16. // 引入依赖文件
  17. const UIRouter = require('./router/UIRouter')
  18. //使用UIRouter
  19. app.use(UIRouter())

1️⃣ Express 获取参数

req.params //获取路由信息,例如: /user/:id
例如:127.0.0.1:3000/index,这种情况下,我们为了得到index,我们可以通过使用req.params得到,通过这种方法我们就可以很好的处理Node中的路由处理问题,同时利用这点可以非常方便的实现MVC模式;(注:默认为{})
req.query //get 方法的获取参数,例如:?id=12
例如:127.0.0.1:3000/index?id=12,这种情况下,这种方式是获取客户端get方式传递过来的值,通过使用req.query.id就可以获得(注:默认为{})
req.body //post方法的获取参数,例如:id=
例如:127.0.0.1:300/index,然后post了一个id=2的值,这种方式是获取客户端post过来的数据,可以通过req.body.id获取

1️⃣ express-generator快速创建应用(后台)骨架

2️⃣ 安装

npm install express-generator -g

2️⃣ 运行帮助命令

exporess -h
image.png

2️⃣ 创建一个空文件夹

在文件夹里运行

  1. 1. `express -e server` 文件夹里就会多出来 server 文件

image.png

2️⃣ 生产的项目目录

image.png