
面试题
文章平均质量分 59
yqcoder
知行合一
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
深度 SEO 优化
合理的目录结构有助于搜索引擎理解网站内容的层次关系。例如,对于一个电商网站,可以按照产品类别创建目录,像“/products/electronics/”、“/products/clothing/”等。每个目录下再细分产品型号或款式的子目录,这样搜索引擎在抓取时能更好地索引网站内容。同时,要避免目录层次过深,一般建议目录层次不超过 3-4 层,因为太深的目录结构可能会使搜索引擎爬虫难以到达和抓取内容。原创 2025-01-05 21:55:20 · 1250 阅读 · 0 评论 -
为什么 SPA 应用会提供一个 hash 路由,好处是什么
SPA 是一种网页应用程序,整个应用只有一个 HTML 页面,通过 JavaScript 动态更新页面内容来模拟多页面的应用体验。用户在使用过程中,页面不会进行整页刷新,而是局部更新,从而提供流畅的用户体验。原创 2025-01-04 00:36:35 · 499 阅读 · 0 评论 -
script 标签上有哪些属性,作用是什么
是一个布尔属性,用于异步加载脚本。当设置了`async`属性后,浏览器会在下载脚本的同时继续解析 HTML 页面,一旦脚本下载完成,就会暂停 HTML 解析,立即执行该脚本。这样可以提高页面的加载速度,特别是对于那些不依赖页面 DOM 结构和其他脚本的独立脚本非常有用。也是一个布尔属性,用于延迟脚本的执行。和`async`类似,带有`defer`属性的脚本会在浏览器继续解析 HTML 的同时进行下载。但不同的是,`defer`属性会保证脚本在整个页面解析完成后,按照脚本在文档中出现的顺序依次执行。原创 2025-01-04 00:35:20 · 1233 阅读 · 0 评论 -
如何通过设置失效时间清除本地存储的数据
localStorage`是浏览器提供的一种在本地存储数据的方式,数据没有过期时间限制。但是可以通过自己记录时间戳来模拟数据过期的功能。在存储数据时,同时存储一个时间戳,表示数据的存储时间。当读取数据时,检查当前时间与存储时间的差值,如果超过了设定的失效时间,就清除该数据。原创 2025-01-03 00:18:27 · 527 阅读 · 0 评论 -
前端如何用 canvas 做电影院选票功能
假设电影院的座位是一个矩形排列的矩阵,可以用一个二维数组来表示座位布局。例如,`0`表示空座位,`1`表示已售座位,`2`表示可选座位。原创 2025-01-03 00:16:47 · 1680 阅读 · 0 评论 -
如何判断 dom 元素是否在可视区域
getBoundingClientRect`方法返回一个 DOMRect 对象,这个对象包含了元素相对于浏览器视口的位置(`top`、`left`)和大小(`width`、`height`、`bottom`、`right`)信息。通过获取视口的高度和宽度,并与元素的位置和大小进行比较,就能判断元素是否在可视区域内。原创 2025-01-02 09:31:43 · 807 阅读 · 0 评论 -
移动端如何实现下拉刷新
在移动端,需要监听触摸事件来检测用户的下拉操作。主要涉及`touchstart`、`touchmove`和`touchend`这三个事件。首先,获取需要实现下拉刷新的元素,通常是一个包含内容的`div`或者整个`body`元素。原创 2025-01-02 09:30:17 · 803 阅读 · 0 评论 -
An object could not be cloned 错误
如果对象有自定义的属性访问器(getter 和 setter)或者不可枚举的属性,也可能导致克隆出现问题。},try {console.error("克隆出错:", error);这里对象`obj`有一个自定义的`get`访问器,`JSON.stringify`无法正确处理这种情况,导致克隆出错。原创 2025-01-01 18:49:57 · 944 阅读 · 0 评论 -
移动端如何实现上拉加载
,},原创 2025-01-01 18:48:35 · 798 阅读 · 0 评论 -
html 中前缀的 data-开头的元素属性是什么
一、自定义数据属性的定义和用途在 HTML 中,以`data-`开头的属性是自定义数据属性。这些属性主要用于在 HTML 元素中存储页面或应用程序的私有自定义数据。这种方式可以让开发者将与元素相关的额外信息直接嵌入到 HTML 标记中,方便 JavaScript 等脚本语言获取和使用这些数据。例如,在一个包含产品列表的网页中,对于每个产品元素,可能需要存储产品编号、价格等数据,这些数据可以通过`data-`属性来存储。二、语法规则`data-`属性的名称应该是全部小写字母,并且如果属性名包含原创 2024-12-31 00:25:28 · 1257 阅读 · 0 评论 -
web 应用中如何对静态资源加载失败的场景做降级处理
网络问题是常见原因之一。例如,网络不稳定、网络带宽不足或者用户处于信号较差的环境中,都可能导致静态资源(如图片、CSS 文件、JavaScript 文件等)无法正常加载。原创 2024-12-31 00:17:43 · 1059 阅读 · 0 评论 -
vue 中 nextTick 详解
在 Vue.js 中,`nextTick`是一个非常重要的概念,它用于在下次 DOM 更新循环结束之后执行延迟回调。当数据发生变化时,Vue.js 会开启一个异步更新队列,将同一事件循环内的数据变化导致的所有 DOM 更新合并到一个更新任务中,这样可以避免频繁地更新 DOM,提高性能。而`nextTick`提供了一种机制,让开发者能够在 DOM 更新完成后执行一些操作。原创 2024-12-29 11:48:08 · 837 阅读 · 0 评论 -
vue 中 ref 详解
在 Vue.js 中,`ref`是一个用于在组件中获取 DOM 元素或者子组件实例引用的属性。它提供了一种直接访问元素或组件的方式,使得我们可以在 JavaScript 代码中对它们进行操作。原创 2024-12-29 11:47:05 · 952 阅读 · 0 评论 -
v-if 和 v-for 优先级
在 Vue.js 中,`v-for`的优先级比`v-if`高。这意味着当它们同时出现在一个元素上时,`v-for`会首先被解析和执行。原创 2024-12-28 22:12:20 · 510 阅读 · 0 评论 -
v-if 和 v-show 的区别
这是一个指令,用于条件性地渲染一个元素块。当`v-if`表达式的值为`true`时,元素及其包含的子元素才会被渲染到 DOM 中;当表达式的值为`false`时,元素及其子元素会被完全移除。这意味着在切换`v-if`的条件时,Vue.js 会进行真实的 DOM 创建和销毁操作。原创 2024-12-28 22:10:44 · 562 阅读 · 0 评论 -
vue 中 keep-alive 详解
keep-alive` 是 Vue.js 提供的一个内置组件,用于缓存动态组件。当一个组件被包裹在`keep-alive`组件内部时,在组件切换过程中,该组件的状态(如组件中的数据、DOM 状态等)会被保留,而不是像普通组件那样被销毁和重新创建。这对于提高应用性能和用户体验非常有用,特别是在频繁切换组件的场景下。原创 2024-12-27 09:58:55 · 628 阅读 · 0 评论 -
vue 的生命周期
这是组件实例刚被创建时触发的第一个生命周期钩子。此时,组件的`data`和`methods`等选项还没有被初始化,数据观察(`watch`)和事件/生命周期方法也尚未被设置。这意味着在这个阶段,组件实例还只是一个空壳,不能访问组件中的数据和方法。主要用于一些初始的设置或者加载外部资源,不过由于数据和方法不可用,其应用场景相对较少。原创 2024-12-27 09:57:04 · 647 阅读 · 0 评论 -
什么是无感登录
无感登录是一种用户认证和登录的方式,它允许用户在使用某些应用、网站或者系统时,无需手动输入账号和密码等传统的登录凭证,就能自动完成登录过程,从而为用户提供便捷、流畅的登录体验。这种方式通常利用了一些技术手段来识别用户身份,让用户几乎感觉不到登录这个操作的存在。原创 2024-12-26 10:20:15 · 739 阅读 · 0 评论 -
前端节流详解
节流(Throttle)是一种在事件频繁触发场景下,限制函数执行频率的策略。与防抖不同的是,节流确保在一定时间间隔内,函数最多只执行一次。不管在这个时间间隔内事件触发了多少次,函数都按照固定的频率执行。原创 2024-12-26 10:18:53 · 720 阅读 · 0 评论 -
前端防抖详解
防抖(Debounce)是一种在事件处理中用于控制函数执行频率的技术。在前端开发中,当一个事件(如窗口滚动、鼠标移动、按键按下等)被频繁触发时,防抖机制能够确保相关的处理函数在经过一段特定的延迟时间后,如果事件不再被触发,才会执行。原创 2024-12-25 00:29:15 · 1338 阅读 · 0 评论 -
同源策略详解
同源策略(Same-Origin Policy)是浏览器的一种安全策略,它用于限制一个源(origin)的文档或者脚本如何与另一个源的资源进行交互。这里的“源”是由协议(protocol)、域名(domain)和端口(port)三部分组成。只有当两个 URL 的协议、域名和端口完全相同的时候,才被认为是同源的。原创 2024-12-25 00:27:39 · 799 阅读 · 0 评论 -
HTTP 协议规定的协议头和请求头
HTTP 协议头是 HTTP 请求和响应消息的一部分,它们包含了关于消息的各种元信息。这些信息对于客户端和服务器之间正确地传输和理解数据至关重要。协议头可以分为请求头(Request Headers)、响应头(Response Headers)和实体头(Entity Headers)。请求头是客户端发送给服务器的,用于告知服务器请求的相关信息;响应头是服务器返回给客户端的,用于告知客户端响应的相关信息;实体头主要与消息体(实体)有关,如内容类型、长度等。原创 2024-12-24 00:31:04 · 966 阅读 · 0 评论 -
svg 格式详解
SVG 是一种基于 XML(可扩展标记语言)的矢量图形格式。它用于描述二维图形,通过使用 XML 标签和属性来定义图形的形状、颜色、位置、大小等各种属性。与位图(如 JPEG、PNG)不同,矢量图形是由数学公式定义的图形元素组成,所以 SVG 图形在放大或缩小后不会出现失真的情况,能够始终保持清晰的图像质量。原创 2024-12-24 00:28:57 · 2111 阅读 · 0 评论 -
前端滚动条自定义样式
Firefox 使用不同的 CSS 属性来定制滚动条。通过`scrollbar-width`和`scrollbar-color`属性来控制滚动条的宽度和颜色组合。不过,这些属性的支持相对较新,并且可能在一些旧版本中不可用。/* Firefox中设置滚动条宽度和颜色组合 */OverlayScrollbars 是一个流行的 JavaScript 滚动条自定义插件。它提供了跨浏览器的滚动条自定义解决方案,不仅可以定制滚动条的外观(如颜色、尺寸、形状等),还可以添加动画效果、支持触摸设备等高级功能。原创 2024-12-23 00:04:23 · 991 阅读 · 0 评论 -
websocket 在 react 中使用
【代码】websocket 在 react 中使用。原创 2024-12-23 00:01:31 · 724 阅读 · 0 评论 -
精灵图和 base64 的区别
精灵图是将多个小图标或图像合并成一个大的图像文件。通过 CSS 的`background-image`和`background-position`属性来控制显示大图像中的特定部分,从而实现不同图标的显示效果。原创 2024-12-22 00:26:30 · 504 阅读 · 0 评论 -
DOM 树和渲染树有什么区别
DOM 树主要是对 HTML 文档结构的一种抽象表示,它的目的是方便 JavaScript 等脚本语言对文档进行操作。通过 DOM 树,开发者可以访问、修改文档中的元素、属性和文本内容等。原创 2024-12-22 00:22:27 · 455 阅读 · 0 评论 -
setTimeout 最小执行时间是多少
在 JavaScript 中,`setTimeout`函数的延迟时间理论上可以设置为 0 毫秒。这意味着你可以尝试让一个函数在“尽可能快”的时间内执行。然而,实际上这个函数并不会立刻执行。因为 JavaScript 是单线程的语言,即使设置了 0 延迟,`setTimeout`中的函数也需要等待当前正在执行的代码执行完毕,以及浏览器完成一些其他必要的任务(如更新 DOM、处理用户输入事件等)之后,才能被放入执行队列中等待执行。原创 2024-12-21 01:39:23 · 486 阅读 · 0 评论 -
script 标签里的 async 和 defer 有什么区别
当没有 async 和 defer 这两个属性的时候,浏览器会立刻加载并执行指定的脚本。原创 2024-12-21 01:37:42 · 711 阅读 · 0 评论 -
new 操作符详解
如果构造函数没有显式地返回一个非对象类型的值(如`undefined`、`null`、基本类型值),那么`new`操作符会自动返回这个新创建的对象。但如果构造函数返回了一个对象类型的值,那么这个返回值会被作为`new`操作符的结果返回,而不是最初创建的那个空对象。当使用`new`操作符创建对象时,新对象会继承构造函数的`prototype`对象上的属性和方法。在构造函数内部,`this`关键字指向新创建的对象。通过`new`操作符调用构造函数:使用`new`操作符可以基于构造函数创建多个对象实例。原创 2024-12-20 00:55:35 · 297 阅读 · 0 评论 -
深拷贝详解
通过递归地遍历对象的属性,对于基本类型属性直接复制,对于引用类型属性则创建一个新的对象并递归地复制其属性。return obj;let copied;原创 2024-12-20 00:51:36 · 454 阅读 · 0 评论 -
浅拷贝详解
浅拷贝是一种对象拷贝方式,它会创建一个新的对象,这个新对象的属性值会复制原始对象的属性值。但是,如果原始对象的属性值是引用类型(如对象、数组),那么新对象的相应属性只是复制了原始对象属性的引用,而不是复制引用类型本身。原创 2024-12-19 00:31:57 · 300 阅读 · 0 评论 -
前端动画实现方式
过渡用于在元素的属性发生变化时,平滑地从一个状态过渡到另一个状态。通过定义过渡的属性(如`width`、`height`、`color`等)、持续时间、过渡函数(如`ease`、`linear`等)和延迟时间,可以实现简单的动画效果。原创 2024-12-19 00:29:47 · 850 阅读 · 0 评论 -
垃圾回收机制
垃圾回收(Garbage Collection,简称 GC)是一种自动内存管理机制,用于回收程序中不再使用的内存空间。在高级编程语言(如 JavaScript)中,开发者不需要手动去释放内存,垃圾回收机制会自动检测和回收那些已经没有任何引用的对象所占用的内存,从而避免内存泄漏(Memory Leak),即内存被占用后无法释放导致可用内存不断减少的情况。原创 2024-12-18 00:18:25 · 334 阅读 · 0 评论 -
基本类型与引用类型有什么区别
基本数据类型(如数字、字符串、布尔值、undefined、null)在内存中是按值存储的。这意味着当你声明一个基本类型变量时,变量的值直接存储在变量所分配的内存空间中。原创 2024-12-18 00:17:23 · 534 阅读 · 0 评论 -
浏览器可以直接请求 websocket
浏览器原生支持 WebSocket 协议,这使得开发者可以直接在 JavaScript 代码中使用 WebSocket 来建立与服务器的双向通信通道。原创 2024-12-17 23:46:40 · 929 阅读 · 0 评论 -
DOM 包括哪些对象
这是 DOM 的核心对象,代表整个 HTML 文档。它是浏览器加载网页后生成的对象模型的入口点。原创 2024-12-17 23:45:58 · 495 阅读 · 0 评论 -
浏览器端的 js 包括哪几个部分
变量用于存储数据,在 JavaScript 中有多种数据类型,如基本数据类型(字符串、数字、布尔值、undefined、null)和引用数据类型(对象、数组、函数)。原创 2024-12-16 23:21:42 · 492 阅读 · 0 评论 -
事件冒泡机制详解
事件从最外层元素(如`document`)开始,沿着 DOM 树向目标元素传播。这个阶段就像是事件的“下行通道”,在这个过程中,事件会经过目标元素的祖先元素。不过,在捕获阶段,默认情况下,事件不会触发这些祖先元素上绑定的事件处理程序(除非使用`addEventListener`函数的第三个参数`true`来指定在捕获阶段执行处理程序)。原创 2024-12-16 23:18:07 · 760 阅读 · 0 评论 -
undefined 和 null 的区别
在 JavaScript 中,`undefined`是一个原始数据类型。它表示一个变量已经声明,但尚未被赋值。另外,函数没有明确的返回值时,默认返回`undefined`。原创 2024-12-15 23:56:27 · 531 阅读 · 0 评论