Skip to content
索引

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()
})

使用路由

  1. 创建路由模块对应js
  2. 调用express.Router函数创建路由对象
  3. 向路由对象上挂载具体的路由
  4. 使用module.exports向外共享路由对象
  5. 使用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

Released under the MIT License.