前端面试实战补丁24.3.7

1.CSS的position属性

在CSS中,position属性用于指定元素的定位方式。position属性有以下几个可能的值:

  1. static

    • 默认值。元素按照文档流进行定位,不会被特别地定位,也不会受到toprightbottomleftz-index属性的影响。
  2. relative

    • 相对定位。元素相对于其正常位置进行定位,可以通过设置toprightbottomleft属性来调整元素的位置,相对于其自身的初始位置进行偏移。相对定位不会影响其他元素的布局。
  3. absolute

    • 绝对定位。元素相对于其最近的非静态定位祖先元素进行定位,如果没有非静态定位的祖先元素,则相对于最初的包含块进行定位。可以通过设置toprightbottomleft属性来调整元素的位置。绝对定位会脱离文档流,不会影响其他元素的布局。
  4. fixed

    • 固定定位。元素相对于浏览器窗口进行定位,始终保持在视口的固定位置,即使页面滚动也不会改变其位置。可以通过设置toprightbottomleft属性来调整元素的位置。
  5. sticky

    • 粘性定位。元素在跨越特定阈值前为相对定位,之后为固定定位。可以通过设置toprightbottomleft属性来调整元素的位置。粘性定位是相对于视口或包含它的滚动容器来定位的。

这些position属性的不同取值使得我们可以实现各种复杂的布局效果和交互效果。

2.vue阻止事件冒泡

使用事件修饰符 .stop:在 Vue 模板中,你可以使用 .stop 修饰符来阻止事件继续传播。这个修饰符告诉 Vue 在触发事件后立即调用 event.stopPropagation() 方法。例如:

<button @click.stop="handleClick">阻止事件冒泡</button>

使用事件对象:你也可以在事件处理函数中手动调用事件对象的 stopPropagation() 方法来阻止事件传播。例如:

<button @click="handleClick">阻止事件冒泡</button>methods: {handleClick(event) {event.stopPropagation();// 处理点击事件的逻辑}
}

3.一般什么样的属性定义成原型属性,什么样的定义成实例属性

在JavaScript中,通常将那些对于类的每个实例都是独特的且会随着实例化而变化的属性定义为实例属性,而那些对于类的所有实例都是共享的且在整个类中保持不变的属性定义为原型属性。

具体来说:

  1. 原型属性

    • 原型属性是定义在类的原型上的属性,它们被所有该类型的实例共享。
    • 原型属性通常用于存储方法和静态属性,因为它们对于所有实例来说是相同的,且不会随着实例化而变化。
    • 例如,类的原型上的方法(如构造函数中定义的方法)和静态属性(通过在类本身上直接定义的属性)通常是原型属性。
  2. 实例属性

    • 实例属性是定义在每个对象实例上的属性,每个对象实例都有自己的一组实例属性。
    • 实例属性通常在对象创建时通过构造函数或其他方法动态添加到对象上。
    • 实例属性对于每个对象实例来说是唯一的,可以通过实例本身进行修改和访问。

例如,在JavaScript中,构造函数内部定义的属性通常是实例属性,而在构造函数的原型上定义的方法通常是原型属性。这样做可以节省内存,因为所有实例共享相同的方法和属性,而不是每个实例都有自己的副本。

4.ES6转成ES5

  1. Babel

    • Babel 是一个流行的 JavaScript 编译器,它可以将 ES6+ 代码转换为 ES5 代码。
    • 使用 Babel 需要安装相应的包和插件,比如 @babel/core@babel/preset-env 等。
    • 通过命令行或配置文件指定需要转换的源代码文件和输出目录,然后使用 Babel 命令进行转换。
    • 这是最常见、最灵活的方法之一。
  2. Webpack

    • Webpack 是一个流行的前端构建工具,它也可以用来转换 ES6 代码。
    • 在 Webpack 的配置中,可以使用 babel-loader 加载器来处理 ES6+ 代码,同时配置 Babel 相关的选项。
    • 这种方法适用于项目已经使用了 Webpack 进行构建的情况。
  3. 在线转换工具

    • 有许多在线工具可以帮助你将 ES6 代码转换为 ES5,例如 Babel REPL(https://babeljs.io/repl)。
    • 在这些工具中,你只需将你的 ES6 代码粘贴到输入框中,然后它会自动生成对应的 ES5 代码。
    • 这种方法适用于简单的转换需求,但对于大型项目来说可能不够灵活和方便。
  4. IDE 插件

    • 许多现代的集成开发环境(IDE)都提供了支持 ES6 转 ES5 的插件,比如 VSCode 中的 Babel 插件。
    • 这些插件可以在你编辑代码时自动将 ES6 代码转换为 ES5,并提供实时反馈。
  5. Vite 提供了对 ES6 语法的原生支持,因此你可以在项目中直接编写 ES6 代码而无需进行额外的转换。Vite 使用原生 ES 模块(ESM)作为默认的模块系统,利用现代浏览器的原生支持来提供快速的开发体验和构建速度。

        要在 Vite 项目中使用 ES6 语法,你只需编写你的 JavaScript 文件,并在你的 HTML 文件中引入它们。Vite 会自动处理你的 ES6 代码,并在构建时将其转换为兼容性更好的 ES5 代码,以确保在旧版浏览器中的兼容性。

5.强缓存,协商缓存

强缓存和协商缓存是在Web开发中用于优化网页加载速度的两种常见技术。

  1. 强缓存

    • 强缓存是通过在客户端(例如浏览器)和服务器之间的HTTP协议头中设置特定的标志来实现的。
    • 当浏览器首次请求一个资源时,服务器会返回资源的响应,并在HTTP响应头中设置缓存标识,例如Cache-ControlExpires。这些标识告诉浏览器该资源可以在一段时间内直接从本地缓存中获取,而不需要向服务器发起请求。
    • 当浏览器再次请求该资源时,它会首先检查本地缓存,并根据缓存标识来决定是否需要向服务器发起请求。如果缓存尚未过期,则浏览器直接从本地缓存中获取资源,而不必再次向服务器请求。
  2. 协商缓存

    • 协商缓存是在缓存过期后,浏览器向服务器发起请求,服务器根据资源的最新情况来确定是否需要返回资源的新版本。
    • 当资源的缓存过期后,浏览器向服务器发送请求,并在HTTP请求头中包含一些条件,例如If-Modified-SinceIf-None-Match。这些条件告诉服务器上次请求的资源的最后修改时间或ETag(实体标签),以便服务器根据这些条件判断资源是否已经更新。
    • 如果资源没有更新,则服务器会返回一个状态码为304(Not Modified),告诉浏览器可以继续使用本地缓存。否则,服务器会返回新的资源,包括更新的HTTP响应头和资源内容。

通过这两种缓存机制,可以有效地减少服务器的负载和提高网页加载速度,从而提升用户体验。

6.前端设置cookie时有哪些参数

在前端设置Cookie时,可以使用一些参数来指定Cookie的各种属性。以下是常用的参数:

  1. name

    • Cookie的名称。
  2. value

    • Cookie的值。
  3. expires

    • Cookie的过期时间,可以是一个GMT格式的日期字符串或一个Date对象。
    • 如果不设置该参数,默认为会话Cookie,即在浏览器关闭时自动删除。
  4. max-age

    • Cookie的最大存活时间,以秒为单位。与expires参数类似,但是是相对于当前时间的时间间隔。
  5. domain

    • Cookie的有效域名,限制了哪些网站可以访问该Cookie。
    • 默认为当前域名。
  6. path

    • Cookie的有效路径,限制了哪些路径下的网页可以访问该Cookie。
    • 默认为当前路径。
  7. secure

    • 布尔值,表示该Cookie是否仅能通过HTTPS协议传输。
  8. httpOnly

    • 布尔值,表示该Cookie是否仅能通过HTTP或HTTPS协议传输,而不允许被JavaScript访问。
  9. sameSite

    • 设置Cookie的SameSite属性,用于防止跨站请求伪造(CSRF)攻击。

这些参数可以根据需要在前端代码中设置,以控制Cookie的行为和限制。

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

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

相关文章

2024 PhpStorm激活,分享几个PhpStorm激活的方案

文章目录 PhpStorm 公司简介我这边使用PhpStorm的理由PhpStorm 2023.3 最新变化AI Assistant 预览阶段结束 正式版基于 LLM 的代码补全测试代码生成编辑器内代码生成控制台中基于 AI 的错误解释 Pest 更新PHP 8.3 支持#[\Override] 特性新的 json_validate() 函数类型化类常量弃…

effective c++ 笔记 条款41-46

条款41&#xff1a;了解隐式接口和编译器多态 显式接口和运行期多态&#xff1a; 面向对象的世界总是以显式接口和运行期多态解决问题 显式接口的构成&#xff1a; 函数名称&#xff0c;参数类型&#xff0c;返回类型&#xff0c;常量性也包括编译器产生的copy构造函数和copy …

142.环形链表II

142.环形链表II 力扣题目链接(opens new window) 题意&#xff1a; 给定一个链表&#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 为了表示给定链表中的环&#xff0c;使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;索引从 0…

Linux性能分析之CPU实战

本课程专注于教授学员如何利用各种工具和技术来分析Linux系统中的CPU性能问题。通过实际操作和案例研究&#xff0c;学员将深入了解CPU性能优化和故障排除&#xff0c;提升其在Linux环境下的技能水平。 课程大小&#xff1a;1.9G 课程下载&#xff1a;https://download.csdn.…

例行性工作(at,crontab)

目录 单一执行的例行性工作at 语法 选项 时间格式 at的工作文件存放目录 at工作的日志文件 实例 命令总结&#xff1a; 循环执行的例行性工作crond 语法 选项 crontab工作调度对应的系统服务 crontab工作的日志文件 用户定义计划任务的文件所在目录 动态查看 crontab文件格式 文…

js拓展-内置对象

目录 1. 数组对象 1.1 数组的四种方式 1.2 JS中数组的特点 1.3 常用方法 2. 日期对象 2.1 日期对象的创建 2.2 日期对象的方法 2.3 案例&#xff1a;输出现在的时间 3. 全局对象 3.1 字符串转换成数字类型 3.2 编码解码函数 1. 数组对象 注&#xff1a;数组在JS中是一…

企业如何进行数据分析,实现科学决策和业务增长

在当今信息时代&#xff0c;数据已经成为企业运营和发展的重要资源。企业拥有大量的数据&#xff0c;包括但不限于销售数据、客户数据、市场数据、企业内部管理数据等等&#xff0c;这些数据记录了企业的运营状况和业务发展情况。但是&#xff0c;这些数据如果不进行分析和利用…

尤雨溪:Vue 未来展望新的一轮

十年&#xff0c;一个既漫长又短暂的时光跨度&#xff0c;对于技术世界来说&#xff0c;更是沧海桑田的瞬间。在这十年里&#xff0c;Vue.js 从无到有&#xff0c;从默默无闻到蜚声全球&#xff0c;不仅改变了前端开发的面貌&#xff0c;更成为了无数开发者手中的得力工具。 在…

软件开发未来发展方向

传统的软件开发行业未来的趋势将会是更加自动化和智能化。随着人工智能和机器学习技术的发展&#xff0c;软件开发过程中的一些重复性、繁琐的工作将会被自动化取代&#xff0c;从而提高开发效率和质量。同时&#xff0c;随着物联网、大数据和云计算等技术的成熟&#xff0c;软…

react项目请求无法自动携带上一次请求的JSESSIONID

存在问题 页面依次发起多次请求&#xff0c;服务端会根据有无携带Set-Cookie从而生成新的JSESSIONID返回&#xff0c;前端需要在后续请求自动携带该值&#xff08;浏览器行为&#xff0c;无需代码控制&#xff09; 但目前的情况为&#xff1a;前端请求无法自动携带&#xff0c;…

建图以及DFS、BFS模板

(/≧▽≦)/~┴┴ 嗨~我叫小奥 ✨✨✨ &#x1f440;&#x1f440;&#x1f440; 个人博客&#xff1a;小奥的博客 &#x1f44d;&#x1f44d;&#x1f44d;&#xff1a;个人CSDN ⭐️⭐️⭐️&#xff1a;传送门 &#x1f379; 本人24应届生一枚&#xff0c;技术和水平有限&am…

蓝桥杯---列名

题目链接&#xff1a;列名 直接模拟出来了 import java.math.BigInteger; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class Main {public static void main(String[] args) {StringBuilder snew String…

高效实用|ChatGPT指令/提示词/prompt/AI指令大全,基础版

大家好&#xff0c;我是淘小白~ 整理了一些关于chatpgt的指令文档分享给大家~ 如果对你有用记得点赞、关注、收藏哦~ 基础版指令主要用于简单任务和场景&#xff0c;英语翻译&#xff0c;发散问答&#xff0c;文章故事写作&#xff0c;周报生成等&#xff0c;在使用过程中&a…

Pytest教程:详解Pytest的三种多级断言方法

当涉及到测试代码时&#xff0c;多级断言可以提供更全面的测试覆盖&#xff0c;并且允许开发者一次性检查多个方面的代码行为。在 Pytest 中&#xff0c;有三种主要的方式来实现多级断言&#xff1a;使用多个普通的 assert 语句、使用 pytest-assume 插件以及使用 pytest-check…

【RT-DETR有效改进】全新的SOATA轻量化下采样操作ADown(轻量又涨点,附手撕结构图)

一、本文介绍 本文给大家带来的改进机制是利用2024/02/21号最新发布的YOLOv9其中提出的ADown模块来改进我们的Conv模块,其中YOLOv9针对于这个模块并没有介绍,只是在其项目文件中用到了,我将其整理出来用于我们的RT-DETR的项目,经过实验我发现该卷积模块(作为下采样模块)…

Node:解决Error: error:0308010C:digital envelope routines::unsupported的四种解决方案

问题描述&#xff1a; 报错&#xff1a;Error: error:0308010C:digital envelope routines::unsupported 报错原因&#xff1a; 主要是因为 nodeJs V17 版本发布了 OpenSSL3.0 对算法和秘钥大小增加了更为严格的限制&#xff0c;nodeJs v17 之前版本没影响&#xff0c…

多路归并总结

1.鱼塘钓鱼 1262. 鱼塘钓鱼 - AcWing题库 多路归并的模型。 对于每个鱼塘构成的等差数列&#xff0c;我们每次在数列最头部进行选择&#xff0c;选完后再顺延到下一个数即可。我们可以通过维护一个包含所有等差序列首元素的大根堆&#xff0c;使每次可以很容易地选出最大的数…

Vivado使用记录(未完待续)

一、Zynq开发流程 二、软件安装 三、软件使用 字体大小修改&#xff1a;Setting、Font 四、Vivado基本开发流程 1、创建工程 Quick Start 组包含有 Create Project&#xff08;创建工程&#xff09;、 Open Project&#xff08;打开工程&#xff09;、 Open Example Project&…

List之ArrayList、LinkedList深入分析

集合 Java 集合&#xff0c; 也叫作容器&#xff0c;主要是由两大接口派生而来&#xff1a;一个是 Collection接口&#xff0c;主要用于存放单一元素&#xff1b;另一个是 Map 接口&#xff0c;主要用于存放键值对。对于Collection 接口&#xff0c;下面又有三个主要的子接口&…