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

news2024/9/23 9:34:22

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

(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.coloradmin.cn/o/357082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java File类、IO流、Properties属性类

文章目录一、补充二、File类File类的含义创建多级文件File类的常见方法三、IO流IO流分类输入输出流FileOutputStreamInputStreamInputStream与OutputStream的实例ReaderWriterFileReader和FileWriter的实例缓冲流转换流序列化与ObjectInputStream、ObjectOutputStream打印流Pro…

MySQL 10:MySQL事务

MySQL 中的事务是由存储引擎实现的。在 MySQL 中&#xff0c;只有 InnoDB 存储引擎支持事务。事务处理可用于维护数据库的完整性&#xff0c;确保批处理的 SQL 语句要么执行要么根本不执行。事务用于管理 DDL、DML 和 DCL 操作&#xff0c;例如插入、更新和删除语句&#xff0c…

JVM10垃圾回收算法

1.什么是垃圾&#xff1f; 垃圾是指在运行程序中没有任何指针指向的对象&#xff0c;这个对象就是需要被回收的垃圾。 如果不及时对内存中的垃圾进行清理&#xff0c;那么&#xff0c;这些垃圾对象所占的内存空间会一直保留到应用程序的结束&#xff0c;被保留的空间无法被其…

XLink 和 XPointer 简介

XLink 定义了一套标准的在 XML 文档中创建超级链接的方法。 XPointer 使超级链接可以指向 XML 文档中更多具体的部分&#xff08;片断&#xff09;。 您应当具备的基础知识 学习本教程前您应当具备的基础知识: HTML / XHTMLXML / XML 命名空间XPath 如果您希望首先学习这些项…

.NET7的AOT的使用

背景其实&#xff0c;规划这篇文章有一段时间了&#xff0c;但是比较懒&#xff0c;所以一直拖着没写。最近时总更新太快了&#xff0c;太卷了&#xff0c;所以借着 .NET 7 正式版发布&#xff0c;熬夜写完这篇文章&#xff0c;希望能够追上时总的一点距离。本文主要介绍如何在…

九龙证券|重大利好!期货公司打新再“解绑”:可直接参与首发网下配售!

时隔近7年&#xff0c;期货公司及其财物办理子公司参加首发证券网下询价和配售事务再次“解绑”。 2月17日&#xff0c;为适应全面实行股票发行注册制变革需求&#xff0c;中国证券业协会&#xff08;以下简称中证协&#xff09;发布《初次公开发行证券网下出资者办理规矩》&am…

NO.1嵌入式入门笔记:常用命令记录

一、前言 Linux文件目录&#xff1a; Linux Shell&#xff1a; 它负责接收用户的输入&#xff0c;根据用户的输入找到其它程序并运行。比如我们输入“ls”并回车时&#xff0c;shell 程序找到“ls”程序并运行&#xff0c;把结果打印出来。Shell有多种实现&#xff0c;我们常用…

Linux常用命令之find命令详解

简介 find命令主要用于&#xff1a;用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。 如果使用该命令时&#xff0c;不设置任何参数&#xff0c;则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 是我们在…

在Linux和Windows上安装seata-1.6.0

记录&#xff1a;381场景&#xff1a;在CentOS 7.9操作系统上&#xff0c;安装seata-1.6.0。在Windows上操作系统上&#xff0c;安装seata-1.6.0。Seata&#xff0c;一款开源的分布式事务解决方案&#xff0c;致力于提供高性能和简单易用的分布式事务服务。版本&#xff1a;JDK…

【java基础】Java常用类———包装类

包装类 wrapper 装箱与拆箱 装箱&#xff1a;基本类型->包装类&#xff1b; 拆箱&#xff1a; 包装类->基本类型 public class Integer01 {public static void main(String[] args) {//演示int <--> Integer 的装箱和拆箱//jdk5前是手动装箱和拆箱//手动装箱 in…

学海记录项目测试报告

⭐️前言⭐️ 本篇文章是博主基于学海记录的个人项目所做的测试报告&#xff0c;用于总结运用自动化测试技术&#xff0c;应用于自己的项目。 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主将持续更新学习记录…

【查找算法】解析学习四大常用的计算机查找算法 | C++

第二十二章 四大查找算法 目录 第二十二章 四大查找算法 ●前言 ●查找算法 ●一、顺序查找法 1.什么是顺序查找法&#xff1f; 2.案例实现 ●二、二分查找法 1.什么是二分查找法&#xff1f; 2.案例实现 ●三、插值查找法 1.什么是插值查找法&#xff1f; 2…

数据结构:基数排序

基数排序(radix sorting) 实现排序主要是通过关键字之间的比较和移动记录这两种操作来完成的,而实现基数排序不需要进行关键字间的比较,而是利用“分配”和“收集”两种基本操作。 例如,我们可以用分配和收集的方法来对扑克牌进行“排序” 已知扑克牌中 52 张牌面的次序关系为…

Time-distributed 的理解

前言 今天看到论文中用到 Time-distributed CNN&#xff0c;第一次见到 Time-distributed&#xff0c;不理解是什么含义&#xff0c;看到代码实现也很懵。不管什么网络结构&#xff0c;外面都能套一个TimeDistributed。看了几个博客&#xff0c;还是不明白&#xff0c;问了问C…

Python数据挖掘基础

一、Matplotlib 画二维图表的python库&#xff0c;实现数据可视化 &#xff0c; 帮助理解数据&#xff0c;方便选择更合适的分析方法1、折线图1.1引入matplotlibimport matplotlib.pyplot as plt %matplotlib inlineplt.figure() plt.plot([1, 0, 9], [4, 5, 6]) plt.show()1.2…

知识探索项目测试报告

⭐️前言⭐️ 本篇文章是博主基于知识探索项目所做的测试报告&#xff0c;主要涉及到的测试知识有设计测试用例、自动化测试等测试知识。 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主将持续更新学习记录收获…

基于springboot+vue的药物咨询平台

基于springbootvue的药物咨询平台 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&…

二阶段提交事务的实现和缺点

背景 说起分布式事务&#xff0c;我们最绕不开的一个话题就是该不该使用分布式事务&#xff0c;而要理解为什么做出使用与否的决定&#xff0c;就必须要提到分布式事务中的最经典的实现&#xff1a;两阶段提交事务,本文我们就简答介绍下这个两阶段提交事务以及它的优缺点 技术…

【Opencv 系列】 第6章 人脸检测(Haar/dlib) 关键点检测

本章内容 1.人脸检测&#xff0c;分别用Haar 和 dlib 目标&#xff1a;确定图片中人脸的位置&#xff0c;并画出矩形框 Haar Cascade 哈尔级联 核心原理 &#xff08;1&#xff09;使用Haar-like特征做检测 &#xff08;2&#xff09;Integral Image : 积分图加速特征计算 …