前端基础(之五)

Q1:   git常用的命令有哪些

git init     在当前目录下创建一个新的Git仓库

git clone  复制一个远程仓库到本地

git add     将文件添加到暂存区,准备提交

git commit  提交暂存区的更改到本地仓库,并记录提交信息

git status    查看仓库的当前状态,显示未跟踪、已修改、已暂存等文件状态

git pull        从远程仓库拉取最新的代码到本地

git push      将本地分支的更改推送到远程仓库

git merge    将分支合并到当前分支中

git diff          查看文件的修改内容,包括新增、删除、修改等

git log          查看git仓库的提交记录,包括提交者、提交时间、提交信息等

git branch    创建、查看、删除分支等操作

git checkout 切换分支或恢复文件到特定版本

git reset        撤销已提交的修改

Q2:当git merge发生冲突的时候应该怎么做

1. 识别冲突文件:检查git状态,找出那些文件处于冲突状态

git status

2. 打开冲突文件:手动编辑这些文件,找到标记为<<<<<<, =======, >>>>>>>的部分。这些标记表明了冲突的开始和结束,以及你的改动和合并进来的改动

3. 手动解决冲突:选择你想要保留的代码部分,删除或修改冲突标记符

4. 保存并关闭文件:解决冲突后,保存文件并关闭编辑器

5. 继续合并操作:使用git add命令告诉Git冲突已解决

git add <解决后的文件>

Q3:请描述图片懒加载的实现方式,以及视频懒加载的实现方式

图片懒加载的实现方式:

HTML标签设置:在img标签中添加loading属性,并将其值设置为lazy,这样页面中的图片就不会立即加载,而是等到滚动到可视区域内时才加载。

JS实现:利用Intersection Observer API来监听图片是否出现在可视区域内。如果图片进入可是区域,则加载图片。

滚动事件监听:通过监听滚动事件,当图片滚动到可视区域时,修改img标签的src属性为预先设置的真实图片地址。

元素位置计算:使用getBoundingClientRect()方法获取图片的位置信息,如果图片顶部到文档顶部的距离小于浏览器可视窗口高度加上滚动条滚动过的高度,且图片的高度加上顶部到文档顶部的距离大于滚动条滚动过的高度,则认为图片在可视区域内,

// 视频懒加载的实现方式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Lazy Load Video</title>
<style>
    .video-container {
        height: 300px;
    }
</style>
</head>
<body>
<div class="video-container">
    <video class="lazy-video" autoplay muted loop>
        <source data-src="video.mp4" type="video/mp4">
    </video>
</div>

<script>
    document.addEventListener("DOMContentLoaded", function() {
        let lazyVideos = document.querySelectorAll(".lazy-video");

        function lazyLoad() {
            lazyVideos.forEach(video => {
                if (isElementInViewport(video)) {
                    // 替换视频源
                    video.src = video.querySelector("source").getAttribute("data-src");
                }
            });
        }

        function isElementInViewport(el) {
            var rect = el.getBoundingClientRect();
            return (
                rect.top >= 0 &&
                rect.left >= 0 &&
                rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
                rect.right <= (window.innerWidth || document.documentElement.clientWidth)
            );
        }

        document.addEventListener("scroll", lazyLoad);
        window.addEventListener("resize", lazyLoad);
        window.addEventListener("load", lazyLoad);
    });
</script>
</body>
</html>

Q4:在一个页面中,还有哪些可以提升页面性能的方式

一.页面渲染相关

1.减少页面重绘和回流

2.图像压缩、切片和sprites

3.字体文件压缩

4.延迟加载/预加载资源

二.捆绑优化

1.webpack用于resolve.alias的优化(同样适用于Vite)

2.webpack对解决方案的优化(也适用于Vite)

3.webpack限定loader的加载范围(不适用于Vite)

4.使用webpack || Vite拆分代码

5.Tree Shaking (摇树优化)

6.在vite中禁用不必要的构建配置

Q5:请描述如何处理跨域问题以及在工作中常用的处理方式是什么

1.JSONP方式解决跨域

(JSONP的原理就是利用script标签不受浏览器同源策略的限制,与后端一起配合来解决跨域问题的。JSONP的优点是兼容性好,可以解决主流浏览器的跨域问题,缺点是仅支持GET请求,不安全,可能遭受xss攻击)

2.CORS方式解决跨域

(CORS方式解决跨域问题比较常用,只需要后端配置响应头Access-Control-Allow-Origin,前端无需配置,实现简单)

3.搭建Node代理服务器解决跨域

(服务端请求服务器是不受浏览器同源策略的限制的。客户端和自己搭建的代理服务器之间也存在跨域问题,所以需要再代理服务器中设置CORS)

4.Nginx反向代理解决跨域

(nginx通过反向代理解决跨域也是利用了服务器请求服务器不受浏览器同源策略的限制实现的。)

5.postMessage方式解决跨域

6.Websocket方式解决跨域

Q6:使用代理的时候,出现了跨域cookie没有带上的情况,应该怎么办

1.设置代理服务器响应头

Access-Control-Allow-Credentials: true

Access-Control-Allow-Orifin:客户端域名

2.设置withCredentials属性

xhr.withCredentials = true

3.注意代理服务器的配置

4.检查CORS配置

5.使用同源代理

Q7.  请描述如何实现一个可以在弹窗中打开多个弹窗的功能,就像是一个多层级的弹窗窗口?

<button onclick="openPopup()">打开弹窗</button>
<div id="popupContainer"></div>
let popupStack = []; // 用于存储弹窗的栈

function openPopup() {
    // 创建弹窗内容
    let popupContent = document.createElement("div");
    popupContent.classList.add("popup");
    popupContent.innerHTML = `
        <button onclick="openPopup()">打开弹窗</button>
        <button onclick="closePopup()">关闭弹窗</button>
    `;

    // 将弹窗内容添加到弹窗容器中
    document.getElementById("popupContainer").appendChild(popupContent);

    // 将弹窗内容添加到弹窗栈中
    popupStack.push(popupContent);
}

function closePopup() {
    // 从弹窗栈中取出最后一个弹窗内容并移除
    let lastPopup = popupStack.pop();
    if (lastPopup) {
        lastPopup.remove();
    }
}
.popup {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 300px;
    height: 200px;
    background-color: #fff;
    border: 1px solid #ccc;
    padding: 10px;
    z-index: 999;
    overflow: auto;
}

Q8.  let 和const的区别是什么?为什么const不能变?如何实现一个const?

let和const的区别是:

let 声明的变量可以改变,包括其值和类型

const声明的变量是不可变的,必须在声明时初始化,且不能在后续代码中重新赋值

const不能变的原因:

1.防止重复赋值:使用const声明的变量一旦被赋值,就不能再次赋值给其他的值。这样可以避免程序出现意外的值覆盖,提高代码的可读性和可靠性。

2.代码可预测性:通过使用const声明不可变变量,可以使代码更易于推理和理解。在阅读代码时,可以知道这个变量在整个程序中不会发生改变,有助于减少程序出错的可能性。

3.优化代码

对于Javascript引擎来说,使用const声明的变量可以帮助引擎做出更好的优化,提高代码的执行效率。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

lettcode179.最大数

问题描述&#xff1a; 给定一组非负整数 nums&#xff0c;重新排列每个数的顺序&#xff08;每个数不可拆分&#xff09;使之组成一个最大的整数。 注意&#xff1a;输出结果可能非常大&#xff0c;所以你需要返回一个字符串而不是整数。 示例一&#xff1a; 输入nums [10…

街景图片语义分割后像素类别提取,用于计算各种指标。

语义分割代码见之前博文&#xff08;免费&#xff09;&#xff1a;deeplabv3街景图片语义分割&#xff0c;无需训练模型&#xff0c;看不懂也没有影响&#xff0c;直接使用。cityscapes 语义分割之后&#xff0c;如下图&#xff0c;想要统计各类像素所占的比例&#xff0c;用于…

2024 MathorCup C 题 物流网络分拣中心货量预测及人员排班

一、问题重述 电商物流网络在订单履约中由多个环节组成&#xff0c;图1是一个简化的物流网络示意图。其中&#xff0c;分拣中心作为网络的中间环节&#xff0c;需要将包裹按照不同流向进行分拣并发往下一个场地&#xff0c;最终使包裹到达消费者手中。分拣中心管理效率的提升&…

初识 React:安装和初步使用指南

文章目录 前言一、React 是什么&#xff1f;1.组件化开发2.虚拟 DOM3.单向数据流4.生态系统丰富 二、安装1.准备工作2.下载react 三、探索 React 应用总结 前言 在当今的 Web 开发领域&#xff0c;React 已经成为了一个备受推崇的技术。它的组件化、灵活性和高效性使得它成为了…

MySQL中InnoDB的行级锁

InnoDB 实现了以下两种类型的行锁。 共享锁&#xff08;S&#xff09;&#xff1a;又称为读锁&#xff0c;简称S锁&#xff0c;共享锁就是多个事务对于同一数据可以共享一把锁&#xff0c;都能访问到数据&#xff0c;但是只能读不能修改。 排他锁&#xff08;X&#xff09;&am…

时间同步服务项目练习

一.配置server主机要求如下&#xff1a; 1.server主机的主机名称为 ntp_server.example.com 2.server主机的IP为&#xff1a; 172.25.254.100 3.server主机的时间为1984-11-11 11&#xff1a;11&#xff1a;11 4.配置server主机的时间同步服务要求可以被所有人使用 更改主机名…

Android开发基础:Activity之间的跳转 向下一个Activity传递数据 给上一个Activity返回数据

目录 一&#xff0c;使用Intent在Activity之间跳转 1.显示使用Intent 2.隐式使用Intent 二&#xff0c;携带数据的跳转 1.Bundle 三&#xff0c;返回数据给上一个Activity 1.registerForActivityResult 一&#xff0c;使用Intent在Activity之间跳转 一个Android应用中包…

APEX开发过程中需要注意的小细节5.5

oracle保留小数点后两位的函数 在日常开发中经常用到百分比做数据对比&#xff0c;但是有可能得到的数据是一个多位小数&#xff0c;结果如下所示&#xff1a; 如果想截取部分小数如保留小数点后两位可以怎么做呢&#xff1f; 在Oracle中&#xff0c;可以使用ROUND函数来四舍…

请警惕,这10本期刊已被SCI剔除,部分涉嫌灌水

科睿唯安于4月15日更新了SCIE、SSCI、AHCI、ESCI四大数据库最新收录期刊目录。 2024年第一版——2024年1月24日更新 2024年第二版——2024年2月19日更新 2024年第三版——2024年3月18日更新 2024年第四版——2024年4月15日更新 本次目录中共收录期刊23368本。 【SCIE数据…

档案集中管理的痛点怎么解决?

档案集中管理可能面临的痛点包括以下几个方面&#xff1a; 1. 档案分类和整理困难&#xff1a;档案集中管理会面临大量档案的分类和整理工作&#xff0c;可能导致混乱和困难。 解决方法&#xff1a; - 建立统一的档案分类规范和流程&#xff0c;确保所有档案都能按照规定的方式…

《QT实用小工具·二十九》托盘图标控件

1、概述 源码放在文章末尾 托盘图标控件 可设置托盘图标对应所属主窗体。 可设置托盘图标。 可设置提示信息。 自带右键菜单。 下面是demo演示&#xff1a; 项目部分代码如下&#xff1a; #ifndef TRAYICON_H #define TRAYICON_H/*** 托盘图标控件* 1. 可设置托盘图标…

Unity类银河恶魔城学习记录12-17 p139 In game UI源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI.cs using UnityEngine;public class UI : MonoBehaviour {[SerializeFie…

仿真科普|从设计到研发,CAE仿真技术为汽车智造保驾护航

2024年3月28日&#xff0c;对于汽车产业来说&#xff0c;是历史性的一天&#xff0c;作为近年汽车行业发布会流量最大的一次&#xff0c;小米SU7的发布让整个汽车圈为之沸腾&#xff0c;成功收割全平台热搜。时至今日&#xff0c;小米汽车依然热度不减。 随着“蔚、小、理、特…

Docker镜像,什么是Docker镜像,Docker基本常用命令【搜索,镜像下载,镜像删除,创建容器,导入到处镜像】及其镜像的分层

docker镜像 1.1什么是镜像&#xff0c;镜像基础 1.1.1 镜像的简介 镜像是一种轻量级&#xff0c;可执行的独立软件包&#xff0c;也可以说是一个精简的操作系统。镜像中包含应用软件及应用软件的运行环境&#xff0c;具体来说镜像包含运行某个软件所需的所有内容&#xff0c;…

4*5的矩阵(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int i 0;int j 0;int result 0;//嵌套循环输出&#xff1b;for (i 1; i < 4; i){//列…

基于Python dlib的实时人脸识别,附源码

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

Linux进程与管理,计划任务

1.虚拟内存统计 vmstat可以用来监控CPU使用&#xff0c;进程状态&#xff0c;内存使用&#xff0c;虚拟内存使用&#xff0c;硬盘输入输出状态等信息。 字段解释&#xff1a; procs进程信息&#xff1a;r&#xff1a;等待运行的程序数&#xff1b;b&#xff1a;不可被唤醒的进…

【电控笔记3.5】三相逆变器

基础 大小调变指标ma 频率调变指标mf 载波频率:pwm频率

wps导出pdf文献引用不能跳转解决办法

问题描述 本科论文参考文献使用wps设置交叉引用&#xff0c;但导出pdf后无法跳转引用 尝试 用office word打开文件word版跳转没有问题&#xff0c; 另存为pdf或导出pdf。 但是pdf版跳转完全错误。 16跳到14.但是总体而言都是跳到包含该序号的页 要求不高的话也可以&#x…

【IC前端虚拟项目】接口分析与agent组件生成

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 到目前为止关于环境的准备工作都已经完成了,甚至验证环境的大体结构我们也已经画好了,再来看一下: 于是乎呢就可以大张旗鼓的开始咱们验证环境的搭建了!看上面这个结构图,里面除了mvu作为DUT,其他…
最新文章