博客系统前端实现

news2024/11/17 13:29:19

目录

1.预期效果

2.实现博客列表页

3.实现博客正文页

4.实现博客登录页

5.实现博客编辑页面


1.预期效果

对前端html,css,js有大致的了解后,现在我们实现了一个博客系统的前端页面.一共分为四个页面没分别是:登陆页面,博客列表页,博客正文页,博客编辑页

我们看下四个界面

登陆页面

博客列表页 

博客正文页 

博客编辑页 

博客系统前端目录 

 

2.实现博客列表页

我们可以发现上述四个页面的导航栏,背景的样式都是相同的,所以这部分可以单独实现一个css代码,使用时直接引入即可

当实现每个页面不同效果时,再实现单独的css代码

博客列表页的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>博客列表页</title>
    <link rel="stylesheet" href="css/common.css">
    <link rel="stylesheet" href="css/blog_list.css">
</head>
<body>
    <!--1. 这是导航栏 -->
    <!-- 先实现导航栏,每个页面都得有导航栏.把导航栏样式单独放到一个common.css中,让各个页面来引用 -->
    <div class = "nav">
        <img src="image/title.png" alt="">
        <span class = "title">我的博客系统</span>
       <!-- 这个标签用来占位,将另外三个挤到导航页面右侧 -->
        <span class="spacer"></span>
        <a href="#">主页</a>
        <a href="#">写博客</a>
        <a href="#">注销</a>
    </div>
    <!-- 页面主体部分 -->
    <div class="container">
        <!-- 左侧信息 -->
        <div class="container-left">
                <!-- 表示用户信息 -->
            <div class="card">
                <!-- 头像 -->
                <img src="image/touxiang.jpg" alt="">
                <!-- 用户名 -->
                <h3>YoLo</h3>
                <a href="#">gitee地址</a>
                <div class="counter">
                    <span>文章</span>
                    <span>分类</span>
                </div>
                <div class="counter">
                    <span>2</span>
                    <span>1</span>
                </div>
            </div>
        </div>
        <!-- 右侧信息 -->
        <div class="container-right">
            <!--表示一篇博客 -->
            <div class="blog">
                <!-- 博客标题 -->
                <div class="title">
                    第一篇blog
                </div>
                <!-- 事件 -->
                <div class="date">
                    2023-3-30
                </div>
                <!-- 摘要 -->
                <div class="desc">
                    1.接收请求的过程用户在浏览器输入一个URL(统一资源定位器),此时浏览器会构造一个HTTP请求这个请求会经过网络协议栈逐层封装成二进制Bit流,最终通过物理层设备转换成光信号/电信号传输出去这些传输出去的信号,会通过一系列网络设备到达目的主机服务器收到光信号/电信号.通过网络协议栈逐层分用,还原成HTTP请求.并交给Tomcat进程进行处理(通过端口号确定进程)
                </div>
                <!-- 查看全文 -->
                <a href="#">查看全文&gt&gt;</a>
            </div>

            <!--表示一篇博客 -->
            <div class="blog">
                <!-- 博客标题 -->
                <div class="title">
                    第二篇blog
                </div>
                <!-- 事件 -->
                <div class="date">
                    2023-3-30
                </div>
                <!-- 摘要 -->
                <div class="desc">
                    2.根据请求计算响应调用的方法(doGET/doPOST)中,就能执行到我们编写的代码.我们自己的代码可以根据请求中的一些信息给, 来给HttpServletResponse对象设置一些属性,例如状态码, header, body 等
                </div>
                <!-- 查看全文 -->
                <a href="#">查看全文&gt&gt;</a>
            </div>

            <!--表示yi篇博客 -->
            <div class="blog">
                <!-- 博客标题 -->
                <div class="title">
                    第三篇blog
                </div>
                <!-- 事件 -->
                <div class="date">
                    2023-3-30
                </div>
                <!-- 摘要 -->
                <div class="desc">
                    3.返回响应被调用的方法执行完毕后,Tomcat就会自动把HttpServletResponse这个我们刚设置好的对象转换成一个符合HTTP协议的字符串,通过Socket将响应发送出去此时响应数据在服务器主机上通过网络协议栈层层封装得到二进制bit流,通过物理层硬件设备转换成光信号/电信号传输出去
                </div>
                <!-- 查看全文 -->
                <a href="#">查看全文&gt&gt;</a>
            </div>
        </div>
    </div>
</body>
</html>

&gt代表>,直接输入>会被当成标签 

common.css

存放的是导航栏,背景的样式.每个页面都会用到,上述详情页直接引入该代码 

/* 写样式的起手式,先取出浏览器的公共样式,并且设置border-box,避免元素盒子被内边距和边框撑大 */
*{
    margin: 0;
    padding: 0;
    box-sizing:border-box;
}
html,body{
    /* html是页面最顶层元素,高度100% (相对父元素来说)和父元素是一样高的 
        对html标签来说,父元素就是浏览器窗口
        body父亲是html,设为100%.意思是body和html一样高,此时,body和html的高度都是和浏览器一样高
        不设置高度,默认设置取决于内部的内容多少
    */

    height: 100%;
}
body{
    background-image: url(../image/background_image.png);
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center center;
}
.nav{
    /*  
    导航栏设置
    宽度:和父元素相同
    块级元素默认:width:100%
    */
    width: 100%;
    height: 50px;
    background-color: rgba(62, 56, 56, 0.7);
    color: aliceblue;
    /*导航栏里面的元素设置弹性布局*/
    display: flex;
    /* 垂直居中 */
    align-items: center;

}
.nav img{
    width: 40px;
    height: 40px;
    /* 添加边距 */
    margin-left: 30px;
    margin-right: 10px;
    /*  图标变圆
        把内切圆半径设置成宽度的一半,就圆形了
    */
    border-radius: 50%;
}

.nav a{
    color: aliceblue;
    /* 去掉下划线 */
    text-decoration: none;
    /* 让几个a标签不要贴在一起,加上内边距 
        此处使用外边距也行,内边距更好,内边距是元素的内容,可增大用户点击面积
    */
    padding: 0 10px;
}

.nav .spacer{
    width: 70%;
}

/* 页面主体部分 */
.container{
    /* 主体部分宽度 */
    width: 1000px;
    /* 主体部分高度.整个页面高度减去设置的导航栏高度 */
    height: calc(100% - 50px);
    /* 这里-两端必须有空格 */
    margin: 0 auto;
    /* 让我们先能看见 */
    /* background-color:#505050; */
    /* 设置弹性布局 */
    display: flex;
    /* 水平居中 */
    align-items: center;
    justify-content: space-between;
}
.container-left{
    /* 100%相对于父元素,它的父元素是container,已设置过了 */
    height: 100%;
    width: 200px;
    /* background-color: #fff; */
}
.container-right{
    /* 100%相对于父元素,它的父元素是container,已设置过了 */
    height: 100%;
    /* 留一个缝隙 */
    width: 795px;
    /* background-color: #df2222; */
    background-color: rgb(255, 255, 255,0.8);
    border-radius: 10px;

    /* 让元素带滚动条 */
    /* 如果内容溢出,加上滚动条,如果内容没有溢出,不加滚动条 */
    overflow: auto;
}

/* 左侧信息栏 */
.card{
    background-color: rgb(255, 255, 255,0.8);
    border-radius: 10px;
    padding: 30px;
}

/* 用户头像  上下左右留30 长宽140px*/
.card img{
    width: 140px;
    height: 140px;
    border-radius: 50%;
}

/* 用户名 */
.card h3{
    /* 文字居中 */
    text-align: center;
    /* 让文字和上下都有边距  建议使用内边距 */
    padding: 10Px;
}

/* 码云地址 
    a标签是行内元素,设置居中要先设置成块级元素再居中
*/
.card a{
    
    text-align: center;
    display: block;
    color: #505050;
    text-decoration: none;
    padding: 10px;
}

/*文章分类  */
.card .counter{
/* 弹性布局 使得元素水平方向均匀排列 */
    display: flex;
    justify-content: space-around;
    padding: 5px;
}

   去掉下划线
   text-decoration: none;

让元素带滚动条,如果内容溢出,加上滚动条,如果内容没有溢出,不加滚动条

    overflow: auto;

blog_list.css

实现的是博客列表专用的样式(题目,日期,段落居中,段落缩进等) 

/* 博客列表页专用的实现样式 */


/* 设置容器元素样式 */

.blog{
    width: 100%;
    padding: 20px;
}

/* 标题 */
.blog .title{
    font-size: 24px;
    font-weight: 700;
    text-align: center;
    padding: 10px;
}

/* 日期 */
.blog .date{
    text-align: center;
    color: #08bc6e;
    padding: 10px;
}

/*缩进 处理摘要 */
.blog .desc{
    text-indent: 2em;
}

/* 查看全文 */
.blog a{
    /* 转块级元素 */
    display: block;
    width: 120px;
    height: 40px;
    /* 水平居中 */
    margin-top: 20px ;
    margin-left: auto;
    margin-right: auto;
    /* 设置边框 */
    border:2px solid black;

    /* 文字水平居中 */
    text-align: center;
    /* 文字垂直居中 */
    line-height: 40px;
    
    /* 去掉下划线 */
    text-decoration: none;
    /* 文字黑色 */
    color: black;
    border-radius: 3px;

    /* 给鼠标悬停加上过渡效果 */
    transition: all 0.3s;
}

/*悬停变色 */
.blog a:hover{
    color: white;
    background:#666;
}

像a标签这样的行内元素不好处理,先转成块级元素然后再处理 

缩进
.blog .desc{
    text-indent: 2em;
}

给鼠标悬停加上过渡效果
    transition: all 0.3s;
}

悬停变色
.blog a:hover{
    color: white;
    background:#666;
}

 3.实现博客正文页

blog_detail.html

博客正文,引入common.css,添加正文内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>博客详情页</title>
    <link rel="stylesheet" href="css/common.css">
    <link rel="stylesheet" href="css/blog_detail.css">
</head>
<body>
    <!-- 添加导航栏 -->
    <!--1. 这是导航栏 -->
    <!-- 先实现导航栏,每个页面都得有导航栏.把导航栏样式单独放到一个common.css中,让各个页面来引用 -->
    <div class = "nav">
        <img src="image/title.png" alt="">
        <span class = "title">我的博客系统</span>
       <!-- 这个标签用来占位,将另外三个挤到导航页面右侧 -->
        <span class="spacer"></span>
        <a href="#">主页</a>
        <a href="#">写博客</a>
        <a href="#">注销</a>
    </div>
    <div class="container">
        <!-- 左侧信息 -->
        <div class="container-left">
                <!-- 表示用户信息 -->
            <div class="card">
                <!-- 头像 -->
                <img src="image/touxiang.jpg" alt="">
                <!-- 用户名 -->
                <h3>YoLo</h3>
                <a href="#">gitee地址</a>
                <div class="counter">
                    <span>文章</span>
                    <span>分类</span>
                </div>
                <div class="counter">
                    <span>2</span>
                    <span>1</span>
                </div>
            </div>
        </div>
        <!-- 右侧信息 -->
        <div class="container-right">
            <!-- 博客标题 -->
            <h3 class = "title">我的第一篇博客</h3>
            <!-- 发布时间 -->
            <div class="date">2023-3-30</div>
            <!-- 正文 -->
            <div class="content">
                <p>
                    1.接收请求的过程用户在浏览器输入一个URL(统一资源定位器),此时浏览器会构造一个HTTP请求这个请求会经过网络协议栈逐层封装成二进制Bit流,最终通过物理层设备转换成光信号/电信号传输出去这些传输出去的信号,会通过一系列网络设备到达目的主机服务器收到光信号/电信号.通过网络协议栈逐层分用,还原成HTTP请求.并交给Tomcat进程进行处理(通过端口号确定进程)
                </p>
                <p>
                    2.根据请求计算响应调用的方法(doGET/doPOST)中,就能执行到我们编写的代码.我们自己的代码可以根据请求中的一些信息给, 来给HttpServletResponse对象设置一些属性,例如状态码, header, body 等
                </p>
                <p>
                    3.返回响应被调用的方法执行完毕后,Tomcat就会自动把HttpServletResponse这个我们刚设置好的对象转换成一个符合HTTP协议的字符串,通过Socket将响应发送出去此时响应数据在服务器主机上通过网络协议栈层层封装得到二进制bit流,通过物理层硬件设备转换成光信号/电信号传输出去
                </p>
            </div>
        </div>
    </div>
</body>
</html>

blog_detail.css

博客详情页使用的样式

/* 这是博客详情页使用 */

/*  标题*/
.container-right .title{
    text-align: center;
    padding: 10px;
}

/*日期  */
.container-right .date{
    color: #1fbf76;
    text-align: center;
    padding: 10px;
}

/*缩进 处理摘要 */
.container-right .content p{
    text-indent: 2em;
    padding: 10px 30px;
}

 4.实现博客登录页

login.html

引入commom.css添加对话框

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>登陆页面</title>
<link rel="stylesheet" href="css/common.css">
<link rel="stylesheet" href="css/login.css">
</head>
<body>
    <!-- 这个页面咩有注销按钮 -->
     <!--1. 这是导航栏 -->
    <!-- 先实现导航栏,每个页面都得有导航栏.把导航栏样式单独放到一个common.css中,让各个页面来引用 -->
    <div class = "nav">
        <img src="image/title.png" alt="">
        <span class = "title">我的博客系统</span>
       <!-- 这个标签用来占位,将另外三个挤到导航页面右侧 -->
        <span class="spacer"></span>
        <a href="#">主页</a>
        <a href="#">写博客</a>
        <!-- <a href="#">注销</a> -->
    </div>

    <!-- 正文部分 -->
    <!-- 贯穿整个页面的的容器 -->
    <div class="login-container">
        <!-- 垂直水平居中的对话框 -->
        <div class="login-dialog">
            <h3>登录</h3>
            <div class="row">
                <span>用户名</span>
                <!-- placeholder="手机号/邮箱"这个属性用来设置框内默认的文本 -->
                <input type="text" id="username" placeholder="手机号/邮箱">
            </div>
            <div class="row">
                <span>密码</span>
                <input type="password" id = "password">
            </div>
            <div class="row">
                <button id = "submit">登录</button>
            </div>
        </div>
       
    </div>
</body>
</html>

 <input type="text" id="username" placeholder="手机号/邮箱"> 

placeholder="手机号/邮箱"   

对话框中显示文本,点击后消失,没有输入内容又会出现

 

login.css

登录页面的样式

/* 这个文件是写登录页面样式 */

.login-container{
    width: 100%;
    height: 100%;
    /* background-color: rgb(130, 0, 0); */
    /* 使对话框水平垂直居中 */
    display: flex;
    justify-content: center;
    align-items: center;
}

.login-dialog{
    width: 380px;
    height: 330px;
    /* background-color: #fff; */
    /* display: flex; */
    background-color:rgba(255, 255, 255, 0.8);
    border-radius: 10px;
}

.login-dialog h3{
    text-align: center;
    padding: 50px;
}
.login-dialog .row{
    height: 50px;
    display: flex;
    justify-content: center;
    align-items: center;
}

.login-dialog .row span{
    width: 100px;

}
#username, #password{
    width: 200px;
    height: 40px;
    border-radius: 5px;
    border: none;

    /* 放大字体 */
    font-size: 17px;
    padding: 5px;
}

/* 提交按钮 */
#submit{
    width: 300px;
    height: 40px;
    border-radius: 5px;
    border: none;
    color: aliceblue;
    background-color:#27c079;
}

#submit:active{
    /* 点击变色 */
    background-color: darkgrey;
}

5.实现博客编辑页面

编辑器:markdown

引入 editor.md

editor.md 是一个开源的页面 markdown 编辑器组件

1)从官网上下载到压缩包. 放到目录中. 目录结构如下

2) 引入 editor.md

注意<script src="js/jquery.min.js"></script>要在下面三个之前引入

<!-- 引入 editor.md 的依赖 -->
<link rel="stylesheet" href="editor.md/css/editormd.min.css" />
<script src="js/jquery.min.js"></script>

<script src="editor.md/lib/marked.min.js"></script>
<script src="editor.md/lib/prettify.min.js"></script>
<script src="editor.md/editormd.js"></script>

 3) 初始化 editor.md

// 初始化编辑器
var editor = editormd("editor", {
    // 这里的尺寸必须在这里设置. 设置样式会被 editormd 自动覆盖掉.
    width: "100%",
    // 高度 100% 意思是和父元素一样高. 要在父元素的基础上去掉标题编辑区的高度
    height: "calc(100% - 50px)",
    // 编辑器中的初始内容
    markdown: "# 在这里写下一篇博客",
    // 指定 editor.md 依赖的插件路径
    path: "editor.md/lib/"
});

blog_edit.html

博客编辑页代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>博客编辑页</title>
    <link rel="stylesheet" href="css/common.css">
    <link rel="stylesheet" href="css/blog_edit.css">
    <script src="js/jquery.min.js"></script>
    <!-- 或者直接写网络路径 src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.3/jquery.min.js" -->
    <!-- 引入md的依赖 -->
    <link rel="stylesheet" href="editor.md/css/editormd.min.css" />
    <script src="editor.md/lib/marked.min.js"></script>
    <script src="editor.md/lib/prettify.min.js"></script>
    <script src="editor.md/editormd.js"></script>
</head>
<body>
    <!-- 这个页面咩有注销按钮 -->
     <!--1. 这是导航栏 -->
    <!-- 先实现导航栏,每个页面都得有导航栏.把导航栏样式单独放到一个common.css中,让各个页面来引用 -->
    <div class = "nav">
        <img src="image/title.png" alt="">
        <span class = "title">我的博客系统</span>
       <!-- 这个标签用来占位,将另外三个挤到导航页面右侧 -->
        <span class="spacer"></span>
        <a href="#">主页</a>
        <!-- <a href="#">写博客</a> -->
        <a href="#">注销</a>
    </div>

    <!-- 编辑区的容器 -->
    <div class="blog-edit-container">
        <div class="title">
            <input type="text" id="title" placeholder="请输入文章标题">
            <button id="submit">发布文章</button>
        </div>
    <!-- 博客编辑器,这里用id是为了和markdown编辑器对接而设置的 -->
        <div id="editor">

        </div>
    </div>
    <script>
     // 初始化编辑器
        var editor = editormd("editor", {
            // 这里的尺寸必须在这里设置. 设置样式会被 editormd 自动覆盖掉.
            width: "100%",
            // 高度 100% 意思是和父元素一样高. 要在父元素的基础上去掉标题编辑区的高度
            height: "calc(100% - 50px)",
            // 编辑器中的初始内容
            markdown: "# 在这里写下一篇博客",
            // 指定 editor.md 依赖的插件路径
            path: "editor.md/lib/"
        });
    </script>
</body>
</html>

blog_edit.css

博客编辑页专用样式

/* 这个页面用来写编辑文章 */

.blog-edit-container{
    width: 1000px;
    height: 100%;
    /* background-color: #ffdc00; */
    margin: 0 auto;
}

.blog-edit-container .title{
    height: 50px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    
}

#title{
    height: 40px;
    width: 895px;
    border-radius: 6px;
    border: none;
    font-size: 20px;
    /* 去掉鼠标悬停后出现的轮廓线 */
    outline: none;
    /* 设置输入框半透明 */
    background-color: rgba(255,255,255,0.6);
}
#submit{
    height: 40px;
    width: 100px;
    border-radius: 6px;
    border: none;
    color: black;
    background-color:orange;
}
/* 使用伪类设置鼠标点击后不再透明 */
/* 伪类选择器选择的是元素的状态,正常选择器选择元素 */
#title:focus{
    background-color: rgba(255,255,255);
}
#submit:active{
    /* 点击变色 */
    background-color: darkgrey;
}
#editor{
    border-radius: 10px;
    opacity: 80%;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/409857.html

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

相关文章

功能:vue:浏览器打印小票、打印参数配置

一、需求说明 1、要实现点击打印小票按钮&#xff0c;弹出预览弹框&#xff0c;点击弹框里面的打印&#xff0c;则实现浏览器打印预览&#xff0c;以及浏览器打印。 2、根据对应需求可以做步骤的加减&#xff0c;本例多了一个本地预览。 3、环境&#xff1a;pc端打印、chrome浏…

在 TypeScript 中导入 JavaScript 包,解决声明文件报错问题

前言 如果你在 TypeScript 中引入了一个纯 JavaScript 包&#xff0c;那很有可能会看到这样的报错&#xff1a; Could not find a declaration file for module ‘koumoul/vjsf/lib/VJsf’. ‘c:/*/node_modules/koumoul/vjsf/lib/VJsf.js’ implicitly has an ‘any’ type. …

uniapp拍照+上传后台 + pc端上传后台

uniapp 一、拍照&#xff0c;拿到本地路径 首先调用uniapp的api实现拍照 uni.chooseImage({sourceType: [camera,album],//拍照或是打开系统相册选择照片count: 3, //最多三张success(res) {if (Array.isArray(res.tempFilePaths)) {//最多选择三张&#xff0c;如果多选删掉…

新安webpack插件后编译报错compiler.plugin is not a function

安装使用generate-asset-webpack-plugin时报错TypeError&#xff1a;compiler.plugin is not a function&#xff0c;网上搜索了一下大概就是webpack5与这些插件不匹配。推荐的方法几乎都是换一个适配的插件版本&#xff0c;但我所需要的这个插件在npm上最近更新时间是7年前&am…

Vue 之 插件 轮播组件 vue-awesome-swiper 的简单使用整理

Vue 之 插件 轮播组件 vue-awesome-swiper 的简单使用整理 目录 Vue 之 插件 轮播组件 vue-awesome-swiper 的简单使用整理 一、简单介绍 二、安装 vue-awesome-swiper 三、引入&#xff08;全局或局部引入&#xff09; 四、简单使用 一、简单介绍 Vue 开发的一些知识整理…

八个步骤实现一个Web项目(在线聊天室)

实现一个在线网页的聊天室 Hello&#xff0c;今天给大家带来的是我的一个Web项目的开发过程的相关步骤&#xff0c;这个项目实现的功能是一个Web在线聊天室&#xff0c;简单的来说就是实现在网页版的聊天框&#xff0c;能够实现对于用户信息进行注册&#xff0c;登录&#xff…

vue3、ts如何封装 axios,使用mock.js

今天我们一起来看一看 vue3ts如何优雅的封装axios&#xff0c;并结合 mock.js 实现敏捷开发&#xff1b; 但是我们要注意区分 Axios 和 Ajax &#xff1a; Ajax 是一种技术统称&#xff0c;技术内容包括&#xff1a;HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要…

Vue首次加载太慢之性能优化

Vue首次加载太慢之性能优化前言一、防止编译文件中出现map文件二、vue-router 路由懒加载三、使用gzip压缩四、使用CDN加载第三方库第一步&#xff1a;引入资源第二步&#xff1a;添加配置第三步&#xff1a;去掉原有的引用五、去掉代码中的console.log前言 首页加载很慢的问题…

Vite4 + Vue3 + vue-router4 动态路由

动态路由&#xff0c;基本上每一个项目都能接触到这个东西&#xff0c;通俗一点就是我们的菜单是根据后端接口返回的数据进行动态生成的。表面上是对菜单的一个展现处理&#xff0c;其实内部就是对router的一个数据处理。当然你只对菜单做处理也是可以的&#xff0c;但是没有任…

js中的内存泄漏

简版 内存泄漏一般是指变量的内存没有及时的回收&#xff0c;导致内存资源浪费。一般有三种情况出现内存泄露比较多。&#xff08;1&#xff09;常见的声明了一个全局变量&#xff0c;但是又没有用上&#xff0c;那么就有点浪费内存了&#xff0c;&#xff08;2&#xff09;定…

【Vue3】用Element Plus实现列表界面

&#x1f3c6;今日学习目标&#xff1a;用Element Plus实现列表界面 &#x1f603;创作者&#xff1a;颜颜yan_ ✨个人格言&#xff1a;生如芥子&#xff0c;心藏须弥 ⏰本期期数&#xff1a;第四期 &#x1f389;专栏系列&#xff1a;Vue3 文章目录前言效果图目录简介修改vite…

uniapp微信小程序实现连接低功耗蓝牙打印功能

微信小程序项目中有使用到蓝牙连接打印&#xff0c;参考官方文档做了一个参考笔记&#xff0c;这样使用的时候就按着步骤查看。 uni-app蓝牙连接 蓝牙&#xff1a; 1、初始化蓝牙 uni.openBluetoothAdapter(OBJECT) uni.openBluetoothAdapter({success(res) {console.log(…

毫米波雷达的硬件架构与射频前端

说明 本篇博文梳理(车载)毫米波雷达的系统构成&#xff0c;特别地&#xff0c;对其射频前端各部件做细节性的原理说明。本篇博文会基于对这方面知识理解的加深以及读者的反馈长期更新内容和所附资料&#xff0c;有不当之处或有其它有益的参考资料可以在评论区给出&#xff0c;我…

vue3.x结合element-plus如何使用icon图标

基于 Vue 3的Element Plus如何使用icon图标 首先注意Element Plus版本&#xff1a;官网如图所示&#xff0c; 基于vue3的具体如何使用&#xff1a; 参考官网文档&#xff1a; 1.首先选择一种方式安装 2.然后全局注册图标 在main.js或main.ts文件中引入&#xff1a; import …

【web前端开发】CSS文字和文本样式

文章目录前言字体大小字体粗细字体样式字体font复合属性文本缩进文本水平对齐方式文本修饰线行高颜色标签水平居中⭐思维导图前言 本篇文章主要讲解CSS中的文字和文本样式及一些实用技巧.文章最后有思维导图. 字体大小 属性名:font-size 取值: 数字px 注意: 谷歌浏览器默认…

无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]

这是我在学习 JSTL 时产生的错误。没有使用 Maven 。 是手动引入 JSTL 包&#xff08;jstl.jar 和 standard.jar&#xff09;。在请求转发到 .jsp 界面&#xff0c;再没有使用 JSTL 语句前是通的&#xff0c;使用 JSTL 后就会报错。org.apache.jasper.JasperException: 无法在w…

【Vue】filter 过滤器用法

文章目录一、全局过滤器二、局部过滤器一、全局过滤器 语法&#xff1a; Vue.filter(name,function) - name: 过滤器名称 - function: 执行函数&#xff0c;必须有一个过滤后的返回值使用方法&#xff1a;变量名 | 过滤器名称 {{name | function()}}示例&#xff1a; <!D…

webpack的安装

webpack是当前前端最热门的前端资源模块化管理和打包工具。 安装webpack 首先要安装Node.js&#xff0c;Node.js自带了软件包管理工具npm&#xff0c;可以使用npm安装各种插件。Webpack至少需要Node.js v0.6版本&#xff0c;直接安装最新版就好了。 1.nodeJs官网&#xff0c…

Luckysheet本地导入时报错‘luckysheet‘ is not defined【已解决】

本文包含luckysheet本地安装以及报错解决&#xff0c;性子急可以直接按照目录划拉&#xff01; 目录 一、本地导入 二、报错luckysheet is not defined解决 最近正在开发的项目中需要类excel功能的东西&#xff0c;经过调研后决定用luckysheet&#xff0c;Luckysheet在线表格…

vite + vue3 —— vue地图大屏项目

​回顾 前期 ​ 前端利器 —— 提升《500倍开发效率》 传一张设计稿&#xff0c;点击一建生成项目 好牛_0.活在风浪里的博客-CSDN博客如果非要说它有什么缺点&#xff0c;那么我觉得就是它会&#xff0c;让你cv大法都没处使&#xff01;&#xff01;&#xff01;比如…