使用node搭建web服务器

117 阅读2分钟

使用express、mysqls 实现模块化管理

下载包

npm install express
npm install mysqls

1.根目录创建serve.js文件连接数据库完成web基本框架搭建

const ip = require('ip')
const express = require('express')
let { init } = require('mysqls')
const port = 8848
const app = express()
// 连接数据库
init({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'myonline',
    port: 3306,
})
// host: host地址 (default:'127.0.0.1')
// user: 用户名 (default:'root')
// password: 数据库密码 (default:'root')
// database: 使用的数据库 (default:'test')
// port: 端口 (default:'3306')
app.listen(port, () => {
    console.log(`Example app listening at ${ip.address()}:${port}`)
})

2.根目录下创建router文件夹用来存放不同的模块

例: 创建user模块 在router文件夹下创建user.js

const express = require('express')
const app = express()
const userApi = require('../api/user') // 请求路由,userApi.getData是该路由的处理逻辑,为模块化在../api/user文件里写处理逻辑
app.post('/add', userApi.add)
app.use('/', function (req, res) {
  res.send({
    code:'404',
    msg:'暂无路由'
  })
})
module.exports = app

3.在根目录下serve.js文件里导入user.js文件并使用中间件来实现模块化

.../原serve.js文件代码

const user = require('./router/user')
const bodyParser = require('body-parser') // 获取post请求的参数

app.use(bodyParser.urlencoded({ extended: false })) // post请求获取body数据 
app.use('/user', user) //使用express的中间件来实现模块化管理
app.use('/', function (req, res) {
    res.send(request(404))
})

4.使用mysqls来进行数据库的增删改查

该文件为 ./router/user文件里的接口处理逻辑

let { exec, sql } = require('mysqls')
const add = (req, res) => {
  let body = req.body
  let { name, number, sex, phone } = body
  let obj = { name, number, sex, phone }
  exec(sql.table('user').data(obj).insert())
    .then(() => {
      res.send({
        code: 200,
        mag: '添加成功'
      })
    }).catch(() => {
      console.log('数据库添加失败');
      res.sendStatus(400);
    })
}
module.exports = {
  add
}

请求示范

image.png

完整代码示例

文件夹

image.png

serve.js

const ip = require('ip')
const express = require('express')
let { init } = require('mysqls')
const user = require('./router/user')
const bodyParser = require('body-parser') // 获取post请求的参数
const port = 8849
const app = express()
// 连接数据库
init({
  host: 'localhost',
  user: 'root',
  password: '123456',
  database: 'myonline',
  port: 3306,
})
// host: host地址 (default:'127.0.0.1')
// user: 用户名 (default:'root')
// password: 数据库密码 (default:'root')
// database: 使用的数据库 (default:'test')
// port: 端口 (default:'3306')
app.use(bodyParser.urlencoded({ extended: false })) // post请求获取body数据 
app.use('/user', user) //使用express的中间件来实现模块化管理
app.use('/', function (req, res) {
  res.send(request(404))
})
app.listen(port, () => {
  console.log(`Example app listening at ${ip.address()}:${port}`)
})

./router/user.js

const express = require('express')
const app = express()
const userApi = require('../api/user') // 请求路由,userApi.getData是该路由的处理逻辑,为模块化在../api/user文件里写处理逻辑
app.post('/add', userApi.add)
app.use('/', function (req, res) {
  res.send({
    code:'404',
    msg:'暂无路由'
  })
})
module.exports = app

./api/user.js

let { exec, sql } = require('mysqls')
const add = (req, res) => {
  let body = req.body
  let { name, number, sex, phone } = body
  let obj = { name, number, sex, phone }
  exec(sql.table('user').data(obj).insert())
    .then(() => {
      res.send({
        code: 200,
        mag: '添加成功'
      })
    }).catch(() => {
      console.log('数据库添加失败');
      res.sendStatus(400);
    })
}
module.exports = {
  add
}