1️⃣ Express 团队写了一款更新的 Koa 还不太成熟待以后学习
1️⃣ Express
Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你快速创建各种 Web 和移动设备应用。
简单来说Express就是运行在node中的用来搭建服务器的模块。
1️⃣ Express的使用
2️⃣ 下载
npm i express --save
安装 express 并添加到依赖项
2️⃣ 使用
// 引入express
const express = require('express')
// 1.创建app服务对象
const app = express()
// 禁止服务器返回X-Powered-By
app.disable('x-powered-by')
// 2.配置路由 - 对请求的url进行分类,服务器根据分类决定交给谁去处理。
// (1).在Node.js课程中,我们所有说的“路由”,默认都是指【后端路由】
// (2).路由可以理解为:一组一组key-value的组合,key:请求方式 + URI路径 , value:回调函数
// (3).根据路由定义的顺序(写代码的顺序),依次定义好路由,随后放入一个类似数组的结构,当有请求时,依次取出匹配。若匹配成功,不再继续匹配了。
// (4).该URL:http://locahost:3000/one 中 one,叫什么? 1.URI名字 2.虚拟路径名字
// 根路由 - get
app.get('/', function (request, response) {
console.log(request.query) // 获取 key=value...
response.send('使用GET请求')
})
// 根路由 - post
app.post('/', function (request, response) {
response.send('使用post请求')
})
// 一级路由
app.get('/one', function (request, response) {
response.send('一级路由')
})
// 二级路由
app.get('/one/one', function (request, response) {
response.send('二级路由')
})
//参数路由---可以动态接收参数
app.get('/one/:id',function (request,response) {
console.log(request.params);
let {id} = request.params
response.send(`变化的参数${id}`)
})
// 3.指定服务器运行的端口号(绑定端口监听)
app.listen(3000, function (err) {
if (!err) console.log('服务器启动成功了')
else console.log(err)
})
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. 服务器给浏览器一段文字
2. 服务器给了浏览器一个图片
3. 服务器给了浏览器一个视频
4. 服务器告诉浏览器下载一个文件
5. 服务器告诉浏览器重定向
备注:多个响应以response.send为主
1️⃣ 路由器
// 引入 Router 构造函数
const {Router} = require('express')
// 创建一个 Router 实例(路由器就是一个小型的app)
let router = new Router()
// 引入 path 模块 - Node中内置的一个专门用于解决路径问题的库
let {resolve} = require('path')
// 路由
router.get('/login',(req,res)=>{
let url = resolve(__dirname,'../public/login.html')
res.sendFile(url)
})
// 暴露语法
module.exports = function () {
return router
}
// 引入依赖文件
const UIRouter = require('./router/UIRouter')
//使用UIRouter
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️⃣ 运行帮助命令
2️⃣ 创建一个空文件夹
在文件夹里运行
1. `express -e server` 文件夹里就会多出来 server 文件