vue3+ts+node个人博客系统(三)

news/2024/6/18 21:39:09 标签: vue.js, 前端, javascript, node

一.主页顶部和中心面板布局

(1) 首先先去element-plus选择合适的布局el-container

(2)在头部处编写相应的菜单栏el-menu,在这里要注意动态绑定路由的问题:default-active="$route.path"。将default-active设置为$route.path,el-menu-item的index设为要跳转的路由(并且点击菜单项,会直接push到点击的页面)。注意:一定要设置el-submenu的index属性(1,2,3…)。不然会出bug

 

, 

(3) 紧接着需要设计el-main中心的布局,同时需要满足点击不同菜单栏的时候,对应的el-main面板不一样,会跳转到对应的组件中

 <!-- 中间内容主体区域 -->
      <el-main>
        <!-- 路由占位符 -->
        <router-view></router-view>
      </el-main>

 二、主页的中心面板的具体布局

(1)左侧的布局:分别是用el-card来包裹一个小组件 ,中心面板主要也是使用el-container里面的一种布局

 (2)中间的主要文章展示的布局

(3)最终的效果

三、获取所有的标签接口设计

(1)这里为了能够获取不同用户自己拥有的标签,所有需要上传相应的用户id

// 获取所有的标签
exports.blogList = (req, res) => {
     //获取 tb_tag的全部标签信息
    var sql = `select * from  tb_tag where userid=${req.query.userid}`    //?用于占位
    db.query(sql, (err, data) => {
        console.log("sss",data)
        if(err) {
            return res.send('错误:' + err.message)
        }
        res.send(data)
    })
}

四、添加标签的接口设计

(1)在这里为了能够适应不同用户添加各自不同的标签,故在添加标签的时候需要把当前登录的用户的id当做一个条件

// 添加标签
exports.addtag = (req, res) => {
        //获取 tb_tag的全部标签信息
    var sql = `INSERT into tb_tag VALUES (null,'${req.body.params.name}','${req.body.params.userid}')`   //?用于占位
    db.query(sql,  (err, data) => {
        if(err) {
            return res.send('错误:' + err.message)
        }
        res.send(data)
    })
}

六、获取所有的分类接口设计

// 获取所有分类
exports.categoryList = (req, res) => {        //获取 tb_cate的全部分类信息
    var sql = `select * from  tb_cate where userid=${req.query.userid}`   //?用于占位
    db.query(sql,  (err, data) => {
        if(err) {
            return res.send('错误:' + err.message)
        }
        res.send(data)
    })
}

七、添加分类接口设计

// 添加分类
exports.addcategory = (req, res) => {
    

var sql = `INSERT into tb_cate VALUES (null,'${req.body.params.name}','${req.body.params.userid}')`   //?用于占位
db.query(sql,  (err, data) => {
    if(err) {
        return res.send('错误:' + err.message)
    }
    res.send(data)
})
}

八、删除相应的分类接口设计

// 删除分类
exports.deleteCate=(req, res) => {
    let id = req.body.params
   var sql=`DELETE  FROM  tb_cate  WHERE id = ${id} ;`
   db.query(sql,  (err, data) => {
    if(err) {
        return res.send('错误:' + err.message)
    }
    res.send(data)
})
}

九、获取所有的博客文章接口设计,同时带当前的页数和条数的参数

exports.allblog = (req, res) => {
       //获取tb_blog表全部数据

    var sql = `select * from tb_blog where userid=${req.query.userid}`
    db.query(sql, (err, data) => {  
        let curpage =Number(req.query.query.currentPage)//当前页,前端传的页码 
        let pagesize = req.query.query.pageSize//每页显示的数量
    //  let sumpage=Math.ceil(data.length/pagesize)//返一个总页码
    let sumpage=data.length//返一个总页码
console.log(req.query.username)
        if(err) {
            return res.send('错误:' + err.message)
        } else {
            if (curpage == '') {
                // console.log(data.splice(0,pagesize))
                //这里是前端未传参数默认返第一页数据
                   data=data.splice(0,pagesize)//利用数组方法截取数据
                res.send({
                      data,sumpage
                  }
             
               )
                }
                else{
                //这里是前端传参数返回的数据
                 data = data.splice((curpage - 1) * pagesize, pagesize)//利用数组方法截取数据
                // console.log(data.splice((curpage - 1) * 4, pagesize))
                   res.send(
                    {
                        data,sumpage
                    }
                )
                }   
        }
      
    })
}

十、删除对应博客文章接口设计

exports.delete=(req, res) => {
   
    let id = req.body.params
   
   var sql=`DELETE  FROM  tb_blog  WHERE id = ${id} ;`
   db.query(sql,  (err, data) => {
    if(err) {
        return res.send('错误:' + err.message)
    }
    res.send(data)
})
}

十一、模糊查询接口设计

exports.look=(req, res)=> {
  
    let title = req.body.params.title
   let userid=req.body.params.userid
   var sql=`SELECT *  FROM tb_blog WHERE userid=${userid} and title LIKE '%${title}%'`
    db.query(sql, (err, data) => {
        let curpage =Number(req.body.params.page.currentPage)//当前页,前端传的页码 
        let pagesize = req.body.params.page.pageSize//每页显示的数量
    //  let sumpage=Math.ceil(data.length/pagesize)//返一个总页码
    let sumpage=data.length//返一个总页码
        if (err) {
            return res.send('错误:' + err.message)
        }
        else {
            if (curpage == '') {
                // console.log(data.splice(0,pagesize))
                //这里是前端未传参数默认返第一页数据
                data = data.splice(0, pagesize)//利用数组方法截取数据
                res.send({
                    data, sumpage
                }
             
                )
            }
            else {
                //这里是前端传参数返回的数据
                data = data.splice((curpage - 1) * pagesize, pagesize)//利用数组方法截取数据
                // console.log(data.splice((curpage - 1) * 4, pagesize))
                res.send(
                    {
                        data, sumpage
                    }
                )
            }
        }
   
  });
}


http://www.niftyadmin.cn/n/80359.html

相关文章

[python入门㊾] - python异常中的断言

目录 ❤ 断言的功能与语法 ❤ 常用断言 ❤ 常用的断言表达方式 ❤ 异常断言 ❤ 正则断言 ❤ 检查断言装饰器 ❤ 断言的功能与语法 Python assert&#xff08;断言&#xff09;用于判断一个表达式&#xff0c;在表达式条件为 False 的时候触发异常 断言可以在条件…

[oeasy]python0088_字节_Byte_存储单位_KB_MB_GB_TB

编码进化 回忆上次内容 上次 回顾了 字符大战的结果 ibm 曾经的 EBCDIC 由于字符不连续的隐患 导致后续 出现 无数问题无法补救 7-bit 的 ASA X3.4-1963 字母序号连续 比较字符时 效率高判断字符 是否是字母 也很容易 获得了 IBM以外公司的 支持 为什么 ASA X3.4-1963 是 7…

Python3-基本数据类型

Python3 基本数据类型 Python 中的变量不需要声明。每个变量在使用前都必须赋值&#xff0c;变量赋值以后该变量才会被创建。 在 Python 中&#xff0c;变量就是变量&#xff0c;它没有类型&#xff0c;我们所说的"类型"是变量所指的内存中对象的类型。 等号&…

JavaScript刷LeetCode拿offer-高频链表题

首先需要了解链表的概念 先把 next 记录下来 无论是插入&#xff0c;删除&#xff0c;还是翻转等等操作&#xff0c;先把 next 指针用临时变量保存起来&#xff0c;这可以解决 90% 重组链表中指向出错的问题&#xff0c; 如果不知道什么时候需要用到守卫&#xff0c;那就都用…

Java【七大排序】算法详细图解,一篇文章吃透

文章目录一、排序相关概念二、七大排序1&#xff0c;直接插入排序2&#xff0c;希尔排序3&#xff0c;选择排序4&#xff0c;堆排序5&#xff0c;冒泡排序5.1冒泡排序的优化6&#xff0c;快速排序6.1 快速排序的优化7&#xff0c;归并排序三、排序算法总体分析对比总结提示&…

【Redis】一、CentOS64 安装 Redis

1.下载redis https://download.redis.io/releases/2.将 redis 安装包拷贝到 /opt/ 目录 最好自己创建一个文件夹 3.解压 tar -zvxf redis-6.2.1.tar.gz4. 安装gcc yum install gcc5. 进入目录 cd /opt/redis/redis-6.2.1/6. 编译 make7.执行 make install 进行安装 8. …

进程的概念

进程的概念 程序的概念 这里说的是一个可执行文件&#xff0c;passive的意思可以理解为我们这个执行文件需要我们进行双击才会被被执行。 双击后&#xff0c;程序入口地址读入寄存器&#xff0c;程序加载入主存&#xff0c;成为一个进程 进程是主动去获取想要的资源&#xff0…

spring cloud 集成 seata 分布式事务

spring cloud 集成 seata 分布式事务 基于 seata-server 1.6.x 序言 下载 seata-server 准备一个数据库 seata 专门为 seata-server 做存储&#xff0c;如, 可以指定 branch_tabledistributed_lockglobal_tablelock_table 准备一个业务库&#xff0c;比如存放定单&#xff…