【搭建博客服务端部分】第二部分 搭建基本的框架

导读:本篇文章讲解 【搭建博客服务端部分】第二部分 搭建基本的框架,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

【搭建博客服务端部分】第二部分 搭建基本的框架



2. 搭建基本的框架

server/app.js

// 养成规范引入的写上面
const express = require('express')
const multer = require('multer')
const port = 8888
const app = express()

// 跨域请求配置
app.use(function (req, res, next) {
    // 设置允许跨域的域名,*表示的是允许任何域名进行跨域
    res.header('Access-Control-Allow-Origin', '*')
    // 设置header类型,表示的是允许任何类型的header
    res.header('Access-Control-Allow-Headers', '*')
    // 跨域允许的请求方式
    res.header('Access-Control-Allow-Methods', 'DELETE,PUT,POST,GET,OPTIONS')
    if(req.method == 'OPTIONS'){
        // 让options尝试请求快速结束
        res.sendStatus(200)
    }else{
        next()
    }
})

// 支持json
app.use(express.json())

// 支持使用上传中间件
const update = multer({
    // 存放的位置
    dest:'./public/upload/data'
})
// 允许上传任何东西
app.use(update.any())

// 指定静态资源的路径
app.use(express.static(path.join(__dirname,'public')))

// 以get请求则返回值
app.get('/', (req, res) => {
    res.send('Hello,express!')
})

app.listen(port, () => {
    console.log(`http://localhost:${port}`);
})

server/db

使用heidisql软件进行创建数据库,官网搜索即可下载

打开软件后右键新建会话

在这里插入图片描述

在这里插入图片描述

创建三张表

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

server/db/dbUtil.js

const sqlite3 = require('sqlite3').verbose()
const Genid = require('../utils/SnowFlake')
const path = require('path')
// 连接数据库
const db = new sqlite3.Database(path.join(__dirname,'blog.sqlite3'))
const genid = new Genid({WorkerId:1})

// 对查询,修改数据库的方法进行封装,便于使用,不会产生地狱回调
// 创建一个属性
db.async = {}
// 对db.all方法进行封装,查询
db.async.all = (select,params) =>{
    return new Promise((resolve,reject)=>{
        db.all(select,params,(error,rows) =>{
            resolve({error,rows})
        })
    })
}
// 对db.run方法进行封装,对数据库进行增删改查
db.async.run = (select,params) =>{
    return new Promise((resolve,reject)=>{
        db.run(select,params,(error,rows) =>{
            resolve({error,rows})
        })
    })
}


//暴露出去
module.exports = {db,genid}

server/router/testRouter.js

const express = require('express')
const { db, genid } = require('../db/dbUtil')

// 创建路由
const router = express.Router()

// 编写路由
router.get('/test', async (req, res) => {
    let data = await db.async.all('select * from admin', [])
    res.send({
        id: genid.NextId(),
        data
    })
})

module.exports = router

到app.js中去注册路由

// 养成规范引入的写上面
const express = require('express')
const multer = require('multer')
const port = 8888
const app = express()

// 跨域请求配置
app.use(function (req, res, next) {
    // 设置允许跨域的域名,*表示的是允许任何域名进行跨域
    res.header('Access-Control-Allow-Origin', '*')
    // 设置header类型,表示的是允许任何类型的header
    res.header('Access-Control-Allow-Headers', '*')
    // 跨域允许的请求方式
    res.header('Access-Control-Allow-Methods', 'DELETE,PUT,POST,GET,OPTIONS')
    if(req.method == 'OPTIONS'){
        // 让options尝试请求快速结束
        res.sendStatus(200)
    }else{
        next()
    }
})

// 支持json
app.use(express.json())

// 支持使用上传中间件
const update = multer({
    // 存放的位置
    dest:'./public/upload/data'
})
// 允许上传任何东西
app.use(update.any())

// 指定静态资源的路径
app.use(express.static(path.join(__dirname,'public')))

//注册路由
app.use('/test',require('../server/router/testRouter.js'))

// 以get请求则返回值
app.get('/', (req, res) => {
    res.send('Hello,express!')
})

app.listen(port, () => {
    console.log(`http://localhost:${port}`);
})

启动文件即可访问http://localhost:8888/test/test


总结

以上就是今天要讲的内容,希望对大家有所帮助!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82843.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!