简述:


node.js 一个基于 javascript 运行环境的服务器语言,它的出现使得 javascript 有能力去实现服务器的操作,在 GitHub 上 node.js 的 star 数已经接近 6 万,可见其受欢迎程度;而基于 node.js 的 Express 则把原先的许多操作,变得简单灵活,一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具,使用 Express 可以快速构建一个完整功能的网站 。

express 框架安装:


安装方式一:

  1. npm init
  2. npm install express --save

使用语法:

// 引入包文件
let express = require('express')
// 实例化一个 express 对象
let app = express()
// 配置路由,发送请求实现页面逻辑 (字符串模式的路由)
app.get('/login', (req, res) => {
    res.send('这是 login 页面')
})
// 设置端口,开启服务
app.listen(8080, () => {
    console.log('设置端口,开启服务', 'http://127.0.0.1:8080')
})

安装方式二:

  1. npm i express-generator -g 全局安装。
  2. express --version 查看版本。
  3. express --view=ejs app 创建项目 (ejs为模板,可选)。
  4. npm install 自动下载安装 package.json 文件中记录的依赖版本。

express路由简介:


概念:路由表示应用程序端点(URL)的定义以及响应客户端请求的方式,它包含一个请求方式(methods),路径(path)和路由匹配的函数(callback)

语法:app.methods(path,callback)

express路由方法:


express 路由方法:源于 http 方法之一,附加到 express 类的实例,它可请求的方法包括 get,post,put,head,delete,postions,trace,copy,lock,mkcol,move,purge,propfind,proppatch,unlock,report,mkactivity,checkout,merge,m-search,notify,subscribe,unsubscribe,patch,search,connect 等 。

express路由路径:


  • 字符串路径:

// 此地址将与/login匹配 app.get('/login',(req,res)=>{ res.send('hello world') })

  • 字符串模式路径:

// 此路由路径将与acd 或者 abcd匹配 app.get('/ab?cd',(req,res)=>{ res.send('hello world') })

  • 正则表达式路由:

// 匹配 a后面至少10个数字 路径 app.get(/\/a\d{10}/, (req, res) => { res.send('这是 newPage 页面') })

动态路由实现:


// 通过 req.params 拿参数,实现动态路由
 app.get('/user/:userId/books/:bookId',(req,res,next)=>{
       res.send(req.params)
      // 调用下一个函数
      next()
 },
 (req,res)=>{
     res.json(Array.from(data))
  })
 // Route path: /user/:userId/books/:bookId
 // Request URL: http://localhost:3000/user/34/books/8989
 // req.params: {'userId':'34','bookId':'8989'}

路由实例:


// ========================数据库操作===============================
// mysql 封装
// 【1】,引入库============================================
let mysql = require('mysql')

// 【2】,连接数据库========================================
// 2.1,创建配置对象
let options = {
        host: 'localhost',
        port: '3306', // 可选,默认3306
        user: 'root',
        password: 'xxxxxx',
        database: 'mydbNew'
    }
    // 2.2,创建连接对象 (返回连接对象)
let con = mysql.createConnection(options)
    // 2.3建立连接
con.connect((err) => {
        if (err) {
            console.log(err)
        } else {
            console.log('数据库连接成功')
        }
    })
    // 【3】,执行数据库语句========================================
    // sql语句执行封装
function sqlQuery(strSql, arr) {
    return new Promise(function(resolve, reject) {
        con.query(strSql, arr, (err, results) => {
            if (err) {
                reject(err)
            } else {
                resolve(results)
            }
        })
    })
}
// ===========================================================


// 引入包文件
let express = require('express')
    // 实例化一个 express 对象
let app = express()
    // 1,配置路由,发送请求实现页面逻辑 (字符串模式的路由)
    // 匹配 login 路径
app.get('/login', async(req, res) => {
    let strSql = 'select * from login'
    let result = await sqlQuery(strSql)
    res.json(Array.from(result))
    res.send('这是 login 页面')
})

// 2,配置路由,发送请求实现页面逻辑 (类字符串模式的路由)
// 匹配 abcd 或者 acd 路径, [? 可有可无,+ 至少一个,* 任意多个]
app.get('/ab?cd', (req, res) => {
    res.send('这是 abcd / acd 页面')
})

// 3,配置路由,发送请求实现页面逻辑 (正则表达式的路由)
// 匹配 a后面至少10个数字 路径
app.get(/\/a\d{10}/, (req, res) => {
    res.send('这是 newPage 页面')
})

// 设置端口,开启服务
app.listen(8080, () => {
    console.log('设置端口,开启服务', 'http://127.0.0.1:8080')
})

获取 get 请求参数:


通过 req.query 对象获取。

// 导入相关包
let express = require('express')
let cors = require('cors')
// 初始化 express 对象
let app = express()
// 设置允许跨域
app.use(cors())
// 配置路由,内部实现具体的业务逻辑
app.get('/login', function(req, res) {
    console.log(req.query)
    res.json(req.query)
})
// 监听端口,并开启服务
app.listen(3000, function() {
    console.log('服务器启动成功,可通过 http://127.0.0.1:3000 访问')
})

获取 post 请求参数:

 express 中获取 post 请求参数,需要借助中间件 urlencoded,

语法: app.use(express.urlencoded())  req.body

// 导入相关包文件
let express = require('express')
let cors = require('cors')
// 初始化 express 对象
let app = express()
// 设置跨域
app.use(cors())
// 使用 urlencoded 中间件
app.use(express.urlencoded())
// 配置路由,内部实现具体的业务逻辑
app.post('/login', function(req, res) {
    console.log(req.body)
    res.json(req.body)
})
// 监听端口,并开启服务
app.listen(3000, function() {
    console.log('服务器启动成功,可通过 http://127.0.0.1:3000/login 访问!')
})

中间件相关:


未完结,待补充 。。。。。。