前端基础(之五)

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.mzph.cn/bicheng/310.shtml

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

相关文章

头歌平台云计算实验

云计算 Hive综合应用案例——用户学历查询1 查询每一个用户从出生到现在的总天数2 同一个地区相同的教育程度的最高收入3 统计各级学历所占总人数百分比 Hive综合应用案例——用户学历查询 1 查询每一个用户从出生到现在的总天数 ---------- 禁止修改 ----------drop databas…

测试一下 Meta Llama3-70b-Instruct-q8

测试一下 Meta Llama3-70b-Instruct-q8 0. 引言1. 测试 Meta Llama3-70b-Instruct-q8 0. 引言 今天&#xff0c;Meta 正式介绍Meta Llama 3&#xff0c;Meta 开源大型语言模型的下一代产品。 这次发布包括具有80亿&#xff08;8B&#xff09;和700亿&#xff08;70B&#xff0…

5G 边缘计算如何赋能工业自动化生产线?

5G边缘计算为工业自动化生产线带来的赋能主要体现在以下几个方面&#xff1a; 低延迟与高可靠性&#xff1a;5G网络的低延迟特性对于工业自动化是至关重要的&#xff0c;特别是在需要快速响应的生产线上。边缘计算可以在数据产生地点附近处理数据&#xff0c;从而进一步减少通信…

LeetCode-最大子数组和

每日一题 今天刷到的是一道利用动态规划解决的题目 题目要求 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-…

指纹浏览器如何高效帮助TikTok账号矩阵搭建?

TikTok的账号矩阵&#xff0c;可能听起来还比较陌生&#xff0c;但随着TikTok业务已经成为吃手可热的跨境业务&#xff0c;TikTok多账号矩阵已成为流行策略。但它有什么优点呢&#xff1f;操作多个帐户会导致被禁止吗&#xff1f;如何有效地建立账户矩阵开展业务&#xff1f;这…

第十三章数据质量10分

原则&#xff1a;重要的数据先开始。 重点&#xff1a;PDCA&#xff1b;评估数据质量维度&#xff1b;根因分析&#xff1b;数据质量报告13.1 引言 有数据质量团队&#xff08;Data Quality Program Team&#xff09;。 数据质量团队负责与业务和技术数据管理专业人员协作&…

CANfestival 主机进入预操作态(preOperational)自动发送复位节点指令。

核心是iam_a_slave ,这个是字典生产的时候自动生成的。

【Flutter】多语言方案一:flutter_localizations 与 GetX 配合版

系列文章目录 多语言方案&#xff1a;flutter_localizations 与 GetX 配合版&#xff0c;好处&#xff1a;命令行生成多语言字符串的引用常量类&#xff0c;缺点&#xff1a;切换语言以后&#xff0c;主界面需要手动触发setState&#xff0c;重绘将最新的Locale数据设置给GetM…

使用LangChain和Llama-Index实现多重检索RAG

大家好&#xff0c;在信息检索的世界里&#xff0c;查询扩展技术正引领着一场效率革命。本文将介绍这一技术的核心多查询检索&#xff0c;以及其是如何在LangChain和Llama-Index中得到应用的。 1.查询扩展 查询扩展是一种信息检索技术&#xff0c;通过在原始查询的基础上增加…

基于Springboot的简历系统

基于SpringbootVue的简历系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页 简历模板 招聘会 求职论坛 系统公告 后台登录 后台首页 用户管理 简历模板 模板…

uniapp中scroll-view初始化的时候 无法横向滚动到某个为止

项目需求 实现日历&#xff08;13天&#xff09;默认高亮第六天 并定位到第六 左边右边各六天&#xff08;可以滑动&#xff09; 直接上代码 <template><scroll-view class"scroll-X":show-scrollbar"true" :scroll-x"scrollable":…

OpenHarmony网络组件-Mars

项目简介 Mars 是一个跨平台的网络组件&#xff0c;包括主要用于网络请求中的长连接&#xff0c;短连接&#xff0c;是基于 socket 层的解决方案&#xff0c;在网络调优方面有更好的可控性&#xff0c;暂不支持HTTP协议。 Mars 极大的方便了开发者的开发效率。 效果演示 编译…

产废端实时音视频监控系统在运输车辆驾驶室中的应用

实时音视频监控系统可通过在运输车辆驾驶室安装音视频摄录设备&#xff0c;实现将运输车辆内部及周围环境音视频数据通过移动网络实时回传指挥中心的功能。 前端摄录设备主要负责采集车内外的视音频信息&#xff0c;为了保障车辆及运输人员 的安全&#xff0c;应合理选择摄录设…

【多线程】定时器 | 线程池 | 实现MyTimer | 实现MyThreadPoll | 工厂模式 | 构造方法 | 参数种类

文章目录 定时器&线程池一、定时器1.标准库中的定时器2.实现定时器 二、线程池1.线程池的概念线程池&#xff1a; 2.标准库当中的线程池工厂模式 Executors 创建线程池1.自适应线程池2.固定数量线程池3.只有单个线程的线程池4.设定延迟时间后执行命令的线程池 ThreadPoolEx…

BNB链融合

BNB Chain融合 BNB Chain目前有BNB智能链&#xff08;BSC&#xff09;&#xff0c;BNB信标链 BNB信标链&#xff1a;用作质押和投票的治理层&#xff0c;采用BEP-2代币标准BNB智能链(BSC)&#xff1a;用作EVM兼容层&#xff0c;提供DApp、DeFi服务、共识层、多链支持和其他Web3…

阿里云服务器上配置Docker 以及常用命令讲解

目录 一、认识docer二、在阿里云服务器上配置Docker三、底层原理4、常用命令&#xff08;1&#xff09;Docker中常见镜像命令&#xff08;2&#xff09;Docker中常见容器命令&#xff08;3&#xff09;日志查看命令&#xff08;4&#xff09;进入容器的命令与拷贝命令 一、认识…

【目标检测】Focal Loss

Focal Loss用来解决正负样本不平衡问题&#xff0c;并提升训练过程对困难样本的关注。 在一阶段目标检测算法中&#xff0c;以YOLO v3为例&#xff0c;计算置信度损失&#xff08;图中第3、4项&#xff09;时有目标的点少&#xff0c;无目标的点多&#xff0c;两者可能相差百倍…

009 springboot整合mybatis-plus 增删改查 ajax 登录退出accessToken

文章目录 ConfigRegistCenter.javaMybatisplusConfig.javaCustomerController.javaReceiveAddressJsonController.javaCustomer.javaLoginCustomer.javaReceiveAddress.javaJwtInterceptor.javaCustomerMapper.javaReceiveAddressMapper.javaCustomerServiceImpl.javaReceiveAd…

华为OD-C卷-路口最短时间问题[200分]Java 100%

题目描述 假定街道是棋盘型的,每格距离相等,车辆通过每格街道需要时间均为 timePerRoad; 街道的街口(交叉点)有交通灯,灯的周期 T(=lights[row][col])各不相同; 车辆可直行、左转和右转,其中直行和左转需要等相应 T 时间的交通灯才可通行,右转无需等待。 现给出…

【1524】java投票管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 投票管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…