express
express是基于nodejs,快速、开放、极简的web开发框架
express基于nodejs内置的http模块封装,用于快速开发web服务器
起步示例
sh
npm i -s express
npm i -s express
新建index.js
js
// 引入express
const express = require("express")
// 调用express,返回一个web服务器对象
const app = express()
// 启动服务器,监听端口
app.listen(80, () => {
console.log("express serve running at http://127.0.0.1")
})
// 引入express
const express = require("express")
// 调用express,返回一个web服务器对象
const app = express()
// 启动服务器,监听端口
app.listen(80, () => {
console.log("express serve running at http://127.0.0.1")
})
命令行输入node index.js,此时就运行成功express服务器了
监听请求
监听客户端的get请求
js
// 监听客户端的get请求,并向客户端返回内容
app.get("/test", (req, res) => {
res.send({ name: "test" })
})
// 监听客户端的get请求,并向客户端返回内容
app.get("/test", (req, res) => {
res.send({ name: "test" })
})
监听客户端的post请求
js
// 监听客户端的post请求,并向客户端返回内容
app.post("/test", (req, res) => {
res.send({ name: "test" })
})
// 监听客户端的post请求,并向客户端返回内容
app.post("/test", (req, res) => {
res.send({ name: "test" })
})
响应请求
js
res.send({ name: "test" })
res.send({ name: "test" })
req.query
用于获取客户端通过查询字符串
的形式,发送到服务器的参数
- req.query默认是一个空对象
- 客户端使用
?name=test&age=20
这种查询字符串形式,发送到服务器的参数 - 可以通过req.query对象访问到,例如
req.query.name
js
app.post("/test", (req, res) => {
console.log(req.query)
res.send(req.query)
})
app.post("/test", (req, res) => {
console.log(req.query)
res.send(req.query)
})
req.params
获取url中通过:
匹配到的动态参数
js
app.post("/user/:id", (req, res) => {
res.send(req.params)
})
app.post("/user/:id", (req, res) => {
res.send(req.params)
})
允许跨域
js
app.all("*", (req, res, next) => {
res.header("Access-Control-Allow-Origin", "*")
res.header("Access-Control-Allow-Headers", "Content-Type")
res.header("Access-Control-Allow-Methods", "*")
res.header("Content-Type", "application/json;charset=utf-8")
next()
})
app.all("*", (req, res, next) => {
res.header("Access-Control-Allow-Origin", "*")
res.header("Access-Control-Allow-Headers", "Content-Type")
res.header("Access-Control-Allow-Methods", "*")
res.header("Content-Type", "application/json;charset=utf-8")
next()
})
使用路由
- 创建路由模块对应js
- 调用express.Router函数创建路由对象
- 向路由对象上挂载具体的路由
- 使用module.exports向外共享路由对象
- 使用app.use函数注册路由模块
新建routes/index.js
js
const express = require('express')
const router = express.Router()
const api = require('../api/curd-template')
router.post('/add', api.addData)
router.post('/delete', api.deleteData)
router.post('/update', api.updatedData)
router.post('/', api.selectData)
module.exports = router
const express = require('express')
const router = express.Router()
const api = require('../api/curd-template')
router.post('/add', api.addData)
router.post('/delete', api.deleteData)
router.post('/update', api.updatedData)
router.post('/', api.selectData)
module.exports = router
导入routes
js
const express = require('express')
const app = express()
app.use(express.json()) //请求格式为json
// 使用路由接口
const indexRouter = require('./routes')
app.use('/', indexRouter)
app.listen(80, () => {
console.log("express serve running at http://127.0.0.1")
})
const express = require('express')
const app = express()
app.use(express.json()) //请求格式为json
// 使用路由接口
const indexRouter = require('./routes')
app.use('/', indexRouter)
app.listen(80, () => {
console.log("express serve running at http://127.0.0.1")
})
有道音频
调用有道词典的在线发音库: audio后边加上单词即可
sh
美音:
http://dict.youdao.com/dictvoice?type=0&audio=
英音:
http://dict.youdao.com/dictvoice?type=1&audio=
美音:
http://dict.youdao.com/dictvoice?type=0&audio=
英音:
http://dict.youdao.com/dictvoice?type=1&audio=
安装express脚手架
bash
npm i express-generator express -g
npm i express-generator express -g
脚手架创建项目
sh
express express-project-name
npm i
npm run start
express express-project-name
npm i
npm run start