自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 typeof和instanceof

typeof和instanceof是JavaScript中用来检测变量类型的两个不同的操作符。

2024-06-26 23:22:00 269

原创 vue响应式原理

Vue的响应式系统通过Observer、Dep和Watcher的协同工作,实现了数据的自动追踪和视图的自动更新。这种机制极大地简化了状态管理和界面更新,是Vue框架在构建复杂应用时的强大支持。

2024-06-26 22:03:54 449

原创 JS中BOM和DOM的区别

总之,DOM和BOM虽然都是JavaScript的组成部分,但它们关注和操作的内容不同,DOM更侧重于文档内部的结构和内容,而BOM更侧重于浏览器窗口和与浏览器交互的方法。在JavaScript中,BOM(浏览器对象模型)和DOM(文档对象模型)是两个核心的API,它们分别关注不同的浏览器功能。

2024-06-26 17:51:07 299

原创 vue中v-bind和v-model有什么区别

都是指令,用于实现数据和DOM元素之间的双向绑定,但它们的使用场景和功能有所区别。是Vue提供的一种简化表单元素数据绑定的方式,而。则提供了更通用的数据绑定功能。:属性名="表达式"

2024-06-25 21:29:22 953

原创 v-model中.lazy、.number、.trim

这些修饰符可以单独使用,也可以组合使用,以实现更精细的数据处理和控制。使用这些修饰符可以帮助开发者减少对输入数据的额外处理,并提高应用的用户体验。如果转换失败(比如用户输入了非数字的字符),它会返回原始的字符串。这在处理用户输入时非常有用,因为用户经常会在输入时不小心添加空格。这意味着数据更新会在输入框失去焦点时发生,而不是在输入过程中立即发生。Vue.js 提供了一些修饰符(modifiers),这些修饰符可以用来指定不同的行为。是一个非常核心的指令,它主要用于在表单输入和应用状态之间建立双向绑定。

2024-06-25 21:26:57 608

原创 JS中bind、call、apply之间有什么区别

方法则返回一个新函数,可以延迟执行,并且可以预设一些参数。在实际开发中,可以根据需要选择最合适的方法来改变函数的调用上下文。方法都是预定义的函数原型方法,这三个方法都可以用来改变函数的调用上下文,也就是。都会立即执行函数,区别在于参数传递的方式不同,JavaScript 中的。

2024-06-25 21:01:41 419

原创 Vue3.0里为什么要用Proxy API替代的defineProperty API

在 Vue 2 中,对于数组的变化检测需要重写数组的原型方法,而在 Vue 3 中,利用 Proxy 可以直接对数组进行拦截,使得数组的响应式处理更加简洁和自然。:Proxy 是 ES6 引入的特性,虽然在旧版浏览器上可能不被支持,但在现代浏览器中,Proxy 的支持已经非常良好,而 Vue 3.0 作为一个现代化的框架,采用 Proxy 可以更好地与最新的 JavaScript 特性兼容。

2024-06-25 20:55:13 361

原创 HTTP缓存

HTTP缓存是一种重要的性能优化手段,主要用于减少网络延迟、节省带宽和减轻服务器的负载。通过合理配置和利用这些HTTP缓存类型,可以显著提高Web应用的性能和用户体验。

2024-06-25 19:24:10 210

原创 JS哪些操作会造成内存泄漏

在 JavaScript 中,如果两个对象互相引用,形成一个循环引用,垃圾回收器可能无法识别这些循环引用的对象,从而不能释放它们的内存。:闭包可以捕获外部函数的变量,如果闭包长时间存在,并且它捕获的变量也不再被外部环境所需要,那么这些变量就不会被垃圾回收,从而导致内存泄漏。:当页面上的 DOM 元素被移除或替换后,如果没有清除与这些元素相关联的事件监听器或数据,那么这些元素及相关数据可能会留在内存中。),但忘记清除,或者回调函数引用了不再需要的对象,这可能导致内存泄漏。:如果设置了定时器(如。

2024-06-25 18:58:52 448

原创 JS数据类型

JavaScript 中有多种数据类型,可以分为两大类:基本数据类型(Primitive Data Types)和引用数据类型(Reference Data Types)。

2024-06-25 12:00:18 337

原创 CSS中的BFC

BFC(Block Formatting Context)是 CSS 中的一个概念,它定义了块级盒子的布局规则。BFC是一个独立的渲染区域,它决定了块级盒子如何布局,以及与其他元素的关系和相互作用。

2024-06-25 11:51:00 425

原创 axios常用的请求方式

Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js 环境。它允许开发者以简单和直观的方式发送HTTP 请求。

2024-06-25 10:37:22 337

原创 webpack怎么配置?用到了哪些loader?

Webpack 是一个现代 JavaScript 应用程序的静态模块打包器(modulebundler),它在开发过程中将应用程序所需的各种资源(如 JavaScript, JSON, CSS, SCSS, LESS, 图片等)打包成一个或多个 bundle,这些 bundle 适用于浏览器。Webpack 的配置是通过一个名为的配置文件来完成的,该文件通常位于项目的根目录下。

2024-06-25 10:18:55 271

原创 Vue-router有哪几种路由守卫

Vue Router提供了多种路由守卫,用于控制路由的导航过程。这些守卫可以在不同的阶段对路由进行拦截和控制,以实现诸如权限验证、页面访问控制等功能。

2024-06-25 09:40:59 562

原创 promise和async的区别

Promise和都是 JavaScript 中用于处理异步操作的机制,但它们的使用方式和目的有所不同。下面是Promise和。

2024-06-25 09:21:59 471

原创 JS是单线程,为什么JS能有异步任务

JavaScript 是单线程的,这意味着它只有一个调用栈和一个内存堆。然而,JavaScript 的异步行为是通过事件循环和回调队列来实现的,这使得它能够在等待某些操作(如网络请求或定时器)完成时继续执行其他任务。

2024-06-25 08:52:09 566

原创 JS数组去重的方式有哪些

这些方法各有优缺点,选择哪种方法取决于具体的需求和场景。例如,使用 Set 是最简洁的方法,但如果需要考虑兼容性(如不支持 ES6 的环境),则可能需要选择其他方法。方法可以用来创建一个新数组,其中包含满足某个条件的元素。通过检查元素的索引是否为第一次出现,可以实现去重。通过检查结果数组中是否已存在当前元素,可以实现去重。通过创建一个对象或 Map,可以利用键的唯一性来去重数组。方法检查新数组中是否已包含当前元素,可以实现去重。方法,可以创建一个去重的新数组。利用对象的键唯一性,结合。方法,可以实现去重。

2024-06-25 08:50:46 220

原创 Vuex怎么实现数据持久化

在 Vuex 中,当你刷新页面时,所有 Vuex 存储的数据都会丢失,因为 Vuex存储在内存中,而页面刷新会清除内存中的数据。为了在页面刷新后仍然保留数据,你可以将数据持久化到浏览器的本地存储(如 localStorage或 sessionStorage)中。

2024-06-25 08:46:09 335

原创 CSS中实现元素水平垂直居中的方式有哪些

每种方法都有其适用的场景,选择哪种方法取决于具体的需求和兼容性要求。通过将元素的display属性设置为table-cell,并使用vertical-align和text-align来实现居中。通过在父元素上使用伪元素来创建一个占位符,然后通过设置margin来实现居中。CSS Grid是另一种强大的布局系统,也可以用来实现元素的水平垂直居中。通过将元素的定位设置为绝对定位,并使用transform属性来调整位置。Flexbox是一个现代的布局模型,可以轻松实现元素的水平垂直居中。

2024-06-24 23:58:01 353

原创 TCP和UDP的区别

TCP(传输控制协议)和 UDP(用户数据报协议)是互联网协议族(TCP/IP)中的两种核心传输层协议,它们在数据传输的方式和特性上有显著的区别。

2024-06-24 23:04:36 542

原创 TS中interface和type的区别

更灵活,可以用于定义各种类型,包括联合类型和元组。在实际开发中,选择使用。都可以用来定义对象的类型,但它们之间存在一些差异。更适合用于定义对象的形状,并且支持声明合并和。往往取决于个人或团队的偏好和项目的具体需求。在 TypeScript 中,

2024-06-24 21:17:54 628

原创 Vuex中的重要核心属性

这些核心属性共同构成了 Vuex 的状态管理机制,使得在大型单页应用中管理状态变得更加容易和可维护。通过使用这些属性,开发者可以确保状态的变化是可预测的,并且可以轻松地追踪状态的变化。应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 是一个专为 Vue.js。

2024-06-24 21:03:21 1391

原创 JS延迟加载的方式有哪些

JavaScript延迟加载(也称为懒加载)是一种优化网页性能的技术,它允许脚本在页面加载完成后再执行,从而加快页面初始加载速度。选择哪种延迟加载方式取决于你的具体需求和使用场景。例如,对于简单的脚本加载,可以使用。对于复杂的应用程序,可能需要使用模块加载器或打包工具的代码分割功能。

2024-06-24 20:51:09 408

原创 export和export default的区别

都用于导出模块中的内容,但它们在使用方式和行为上有一些区别。如果模块中有多个功能需要导出,可以使用。如果模块主要提供一个功能或类,可以使用。在实际使用中,可以根据需要选择使用。同时,一个模块中可以同时使用。在ES6模块系统中,

2024-06-24 19:02:56 423

原创 ES6中Module和CommonJS模块有什么区别

ES6中的模块(通常称为ES模块或ESM)与CommonJS模块在语法、加载机制和行为上有显著的区别。

2024-06-24 18:22:11 283

原创 JS中的三种事件模型

传统事件模型是最早的事件处理方式,它通过将事件处理函数直接赋值给 HTML 元素的属性或 DOM 对象的属性来实现。这种方式简单直观,但功能有限,不支持事件捕获和事件流的概念。IE 事件模型是旧版本 Internet Explorer 浏览器使用的事件处理方式,它与标准事件模型类似,但使用的是。方法来绑定和解绑事件处理函数。这种方式更加灵活和强大,支持多个事件处理函数绑定到同一个事件上。标准事件模型是由 W3C 定义的,它引入了事件捕获和事件冒泡的概念,并提供了。方法,并且只支持事件冒泡,不支持事件捕获。

2024-06-24 18:03:21 333

原创 HTTP状态码

HTTP状态码是由服务器返回给客户端(通常是一个网络浏览器或一个HTTP客户端应用程序)的三位数字代码,它们表示了对应的HTTP请求是否成功,并描述了请求失败的原因。

2024-06-18 19:06:43 640

原创 样式选择器优先级

CSS选择器的优先级顺序遵循特异性规则,从高到低依次是:内联样式、ID选择器、类选择器/属性选择器/伪类、元素选择器/伪元素。如果特异性相同,则后定义的样式优先。!important可以提高样式的优先级,但应避免滥用。理解这些规则有助于编写可预测和可维护的CSS代码。

2024-06-14 09:42:10 428

原创 src和href的区别

在HTML中,src(source的简写)和href(HypertextReference的简写)都是属性,但它们用于不同的目的和元素,并且有不同的行为。

2024-06-11 11:07:06 315

原创 模板字符串

模板字符串(Template Literals)是在ES6(ECMAScript 2015)中引入的一种新的字符串表示法,它提供了构建字符串的更加强大和灵活的方式。模板字符串可以通过反引号(``)(而不是普通的单引号(’ ')或双引号(" "))来定义,并且支持字符串插值和多行字符串等新特性。

2024-06-10 16:49:21 226

原创 Redux实现状态管理

Action 是一个简单的 JavaScript 对象,它描述了一个行为,通常有一个type字段来表示行为类型。:Reducer 是一个纯函数,它接收当前的状态和一个 Action,返回新的状态。:Store 是 Redux 提供的一个对象,它将 Action 和 Reducer 联系在一起,并持有整个应用的状态。:你可以订阅 Store 的更新,或者分发 Actions 来改变状态。

2024-06-08 22:52:18 504 1

原创 Vue Router——hash模式和 history模式

选择哪种模式主要取决于你的需求以及目标浏览器的兼容性。如果你需要一个看起来更像传统网页的 URL 或者是在做SEO优化,History 模式可能是更好的选择,只要确保你的服务器配置能正确处理 SPA 的路由请求。如果你更关注兼容性或者不想额外配置服务器,那么 Hash 模式可能是更方便的选项。

2024-06-07 23:29:30 486

原创 computed属性和 watch侦听器的区别

计算属性适用于复杂的逻辑计算,特别是当你需要根据数据的变化得到一个新的值时。侦听器适用于当数据变化需要执行异步操作或较为复杂的业务逻辑时。计算属性是基于依赖的缓存,并且是自动追踪依赖,而侦听器需要手动设置并且不进行缓存。在选择使用计算属性还是侦听器时,最好根据你的特定场景和需求来决定。通常,计算属性是首选,因为它们更简洁,往往更易于维护。

2024-06-07 20:28:45 467

原创 TypeScript未知泛型——unknown和any

在 TypeScript 中,如果你想要表示一个泛型变量,但你不知道或不关心它具体是什么类型,你可以使用any类型。然而,any类型会绕过类型检查,这可能不是你想要的。为了保持类型安全性,TypeScript 提供了一个特殊的类型unknown,它可以用来表示任何类型的值,但在使用之前需要进行类型检查或类型断言。unknown。

2024-06-07 18:12:04 355

原创 TypeScript

TypeScript 是一种由微软开发和维护的开源编程语言。它是 JavaScript 的一个超集,这意味着它扩展了 JavaScript的语法,使得任何有效的JavaScript代码也可以是TypeScript代码。TypeScript的主要目标是帮助开发者在编写大型应用程序时捕捉更多的错误并使代码更易于理解和维护。

2024-06-07 11:14:17 173

原创 浏览器——渲染管道

浏览器的渲染管道(或渲染流程)是一系列步骤,浏览器通过这些步骤把HTML、CSS和JavaScript代码转换成用户看到的网页。这个过程相当复杂且高度优化,涉及到多个重要的阶段。

2024-06-07 10:40:59 469

原创 transform 和 opacity 属性不会触发重排的原因

使用transform和opacity属性进行动画处理时,这些属性的变化不会触发重排的原因在于浏览器的渲染管道和硬件加速机制。

2024-06-07 10:03:40 665

原创 重绘和重排

在Web开发中,重绘(Repaint)和重排(Reflow)是两种浏览器处理DOM元素视觉变化的过程,它们是Web性能优化的关键考虑点。

2024-06-07 09:37:24 440

原创 Json和Map的区别

在JavaScript中,JSON(JavaScript ObjectNotation)实际上并不是一种数据类型,而是一种数据格式,用于存储和交换数据。JSON格式通常使用JavaScript对象字面量(ObjectLiteral)来表示,这是一种键值对的集合,其中键是字符串,值可以是任何数据类型。JavaScript中的对象字面量(Object Literal)和Map。

2024-06-07 08:34:51 886

原创 箭头函数和普通函数的区别

箭头函数和普通函数(特别是在ES5中定义的函数表达式和函数声明)在JavaScript中具有若干重要的区别。这些区别影响了它们的行为和使用场景,从而使开发者能够根据具体需求选择合适的函数类型。通过这些区别,你可以根据不同的需求和场合选择使用箭头函数或普通函数。箭头函数为JavaScript编程提供了灵活性和简洁性,而普通函数则提供了更多的功能性和适用范围。

2024-06-06 19:48:56 322

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除