自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (6)
  • 收藏
  • 关注

原创 XHR与Fetch取消请求的方法及原理深度解析

本文对比了前端开发中XHR和Fetch API的请求取消机制。XHR通过abort()方法直接取消,而Fetch需结合AbortController实现。两者在取消方式、多请求控制、错误处理等方面存在差异。文章还提供了搜索框防抖、页面卸载取消请求等实用场景的代码实现,帮助开发者优化网络请求管理,提升应用性能和用户体验。

2025-09-13 21:53:52 446

原创 深入解析:preload与prefetch的区别及最佳实践

摘要:preload和prefetch是提升前端性能的关键预加载技术,但适用场景不同。preload高优先级加载当前页关键资源(如CSS、字体),避免阻塞渲染;prefetch低优先级预加载未来页面可能用到的资源(如下页JS)。核心差异:加载时机(立即vs空闲)、优先级、缓存策略及使用约束。最佳实践:preload用于首屏核心资源,prefetch预测用户行为加载非关键资源。需避免错误用法,并通过开发者工具检测效果,合理使用可显著优化页面性能。

2025-09-13 21:27:48 573

原创 React中使用Context:从基础到高级实践的全面指南

React的Context API解决了组件跨层级通信的痛点,通过创建、提供和消费三个步骤实现数据共享。基础用法包括useContext钩子、Context.Consumer组件和类组件的contextType。进阶用法支持复杂状态管理,如将状态和更新方法打包传递。对于多维度数据,建议使用多个独立Context避免性能问题。Context特别适合主题切换、用户信息等全局数据场景,能有效减少props逐层传递的冗余代码,提升应用可维护性。

2025-09-12 09:41:08 668

原创 Vue组件通信 vs React组件通信:从基础到跨框架的全面对比

Vue和React组件通信对比:Vue通过props/$emit实现父子通信,provide/inject解决跨层级问题;React采用props/回调函数,Context API应对深层组件交互。Vue推荐Pinia管理全局状态,React常用Redux。两者虽实现方式不同,但都遵循单向数据流原则,需根据项目复杂度选择合适的通信方案。

2025-09-12 01:06:41 585

原创 深入解析:Set、Map、WeakSet、WeakMap的区别与应用场景

本质:存储唯一不重复的值(原始值或对象引用)的无序集合。核心特性成员值唯一,重复添加会被忽略。可以存储任何类型的值(原始值如字符串、数字,或对象引用)。对存储的对象保持强引用(不会被垃圾回收)。set.add(1);// 两个空对象是不同引用,都会被存储// 输出:4存储内容:单一值用Set/WeakSet,键值对用Map/WeakMap。数据类型:存储原始值只能用Set/Map;存储对象且需自动回收用WeakSet/WeakMap。遍历需求。

2025-09-09 10:47:23 520

原创 React中memo/useMemo/useCallback三者的区别:从原理到实践

摘要:React性能优化中,memo、useMemo和useCallback三者的核心共性是通过缓存减少重复计算与渲染,但适用场景不同。memo用于缓存组件渲染结果,适合纯展示型子组件;useMemo缓存昂贵计算结果,适用于大数据处理;useCallback则缓存函数引用,常与memo配合使用。实践中需注意:避免过度优化,优先通过性能分析定位瓶颈,组合使用这三种API时要注意依赖项管理。性能优化应遵循"按需使用"原则,在确实存在性能问题时再针对性应用。

2025-09-09 10:46:34 831

原创 打造前端异步操作利器:从零实现实用Promise工具库

本文介绍了如何构建一个实用的前端Promise工具库,解决异步操作中的常见痛点。原生Promise在复杂场景下存在不足,作者实现了一套包含10个核心方法的工具库,覆盖请求缓存、竞态处理、并发控制等关键场景。工具库支持方法组合使用,如带缓存、超时和重试的请求。实际应用中显著减少了重复请求、解决了竞态问题并降低了代码量。这些方法设计为高阶函数,可灵活扩展,如添加请求取消或进度反馈功能。该工具库提升了开发效率和代码质量,是前端异步处理的实用解决方案。

2025-09-09 01:12:07 1192

原创 Vue响应式更新 vs React状态更新:两种范式的底层逻辑与实践差异

Vue与React的更新机制对比:响应式自动追踪 vs 显式状态更新。Vue通过依赖收集实现数据修改自动触发视图更新,React则依赖setState触发虚拟DOM diff。核心差异在于:Vue追求开发便捷性(自动依赖追踪),React强调可控性(显式更新+手动优化)。选择取决于项目需求:快速开发选Vue,复杂控制选React。理解底层原理有助于性能优化和技术选型。 (149字)

2025-09-08 21:09:39 806

原创 深入解析:Vue与React的异步批处理更新机制

前端框架通过异步批处理更新来优化性能,Vue和React采用不同机制:Vue基于微任务自动合并响应式数据变更,实现细粒度更新;React通过调度器支持优先级批处理,React 18后统一了批处理行为。核心差异在于Vue更自动化,React更可控。实践建议包括集中修改数据、慎用同步更新、合理利用延迟API。两种设计都能有效减少DOM操作,开发者应根据项目需求选择合适方案。

2025-09-08 20:59:13 999

原创 Vue响应式底层原理:深入解析依赖追踪机制

Vue响应式系统依赖追踪机制解析:Vue 2通过Dep和Watcher实现双向绑定,利用Object.defineProperty的getter/setter收集和触发依赖;Vue 3升级为Effect+Track/Trigger模式,基于Proxy和WeakMap三级缓存实现更高效的依赖管理。核心差异体现在依赖存储方式、响应式实现和性能优化上,Vue 3的动态懒递归和自动去重特性使其在大型应用中表现更优。开发者需注意避免不必要的依赖以提升性能。

2025-09-08 20:44:10 768

原创 Vue的响应式底层原理:Proxy vs defineProperty

本文深入解析Vue框架响应式系统的技术演进,对比Vue 2的Object.defineProperty和Vue 3的Proxy实现方案。Vue 2通过遍历对象属性定义getter/setter实现响应式,存在无法监听新增/删除属性、数组索引修改等问题;而Vue 3采用Proxy代理整个对象,天然支持这些操作,且性能更优、扩展性更强。文章详细分析两种技术的实现原理、核心差异及优缺点,揭示Vue 3升级响应式系统的主要原因,帮助开发者深入理解Vue响应式机制。

2025-09-08 20:05:11 1282

原创 不依赖虚拟 DOM,性能依旧卓越:以 Svelte 为例解析其核心原因

Svelte通过编译时优化实现高性能,完全抛弃虚拟DOM。其核心在于:1)构建阶段静态分析组件代码,精准定位数据与DOM的映射关系;2)生成针对性更新代码直接操作DOM,避免虚拟DOM的diff计算;3)细粒度更新仅修改必要节点;4)无运行时框架开销,编译为原生JS代码。相比虚拟DOM方案,Svelte从根源上减少了不必要计算和DOM操作,通过"编译时代替运行时"的设计思路,在保持轻量化的同时实现高效渲染。

2025-09-08 19:35:51 578

原创 React中的合成事件

React合成事件是对浏览器原生事件的封装,提供跨浏览器一致性API,采用事件委托机制提升性能。其特点包括:统一事件处理接口、通过事件池优化性能(17+版本移除)、支持原生事件访问(e.nativeEvent)。开发者无需处理浏览器差异,只需使用标准事件方法如preventDefault()。合成事件简化了React组件的事件处理流程。

2025-09-08 19:24:02 352

原创 浏览器数百函数执行?三招搞定性能优化

本文介绍了三种优化浏览器大量函数执行的方法:1)使用setTimeout分批执行任务,避免主线程阻塞;2)利用requestIdleCallback在浏览器空闲时执行任务;3)将不涉及DOM操作的任务交给WebWorker处理。此外还提到了一些优化细节,如任务优先级排序、减少函数执行时间等。这些方法能有效提升页面性能,开发者可根据实际场景灵活选择。

2025-09-07 15:09:15 361

原创 javascript函数柯里化

柯里化是一种将多参数函数转换为单参数函数链的技术。本文展示了一个通用的JavaScript柯里化工具函数实现,通过判断参数数量决定执行原函数或继续收集参数。示例包括加法运算、用户信息处理和对象属性访问,演示了柯里化在参数复用、延迟执行和函数组合方面的优势。该技术能增强代码灵活性和模块化,是函数式编程的重要特性,被Lodash等主流库广泛采用。

2025-09-06 01:14:03 219

原创 理解js中的迭代器

JavaScript迭代器(Iterator)是ES6引入的统一数据遍历机制,核心是定义了一个包含next()方法的对象。每次调用next()返回{value, done},实现有状态的遍历。可迭代对象(如数组、Map)通过Symbol.iterator方法提供迭代器。迭代器支持for...of、解构赋值、展开运算符等语法,解决了不同数据结构遍历方式碎片化的问题。手动实现迭代器需要定义状态维护逻辑,而Generator函数可简化这一过程。迭代器机制为JavaScript提供了标准化的数据访问接口。

2025-09-01 00:48:10 896

原创 使用CSS创建带三角形指示器的气泡框

本文介绍了如何使用纯CSS创建带三角形指示器的气泡框。通过HTML基础结构和CSS样式实现,包括圆角矩形容器和利用边框技巧生成的三角形。关键点在于使用::after伪元素、边框属性设置以及精确定位技术。这种方法无需JavaScript或图片,简单高效,适合网页提示框、对话框等UI元素。文章还提供了完整代码示例并建议了可能的改进方向,如响应式设计、动画效果等。这种纯CSS实现方案轻量且易于定制。

2025-06-24 17:34:16 941

原创 使用JavaScript检测网络连接状态与性能指标

摘要:本文介绍了JavaScript中Navigator API的网络检测功能,包括基础在线状态检查和详细网络信息获取。通过navigator.onLine检测连接状态,利用navigator.connection获取网络类型、下载速度等参数。文章提供了完整示例代码展示实时网络监控的实现,并列举了自适应内容加载、离线提示等应用场景。同时指出需注意浏览器兼容性、隐私保护和数据准确性等问题。这些技术有助于开发响应式Web应用,特别适用于媒体密集型或需要离线支持的场景。

2025-06-10 00:22:10 680

原创 在Vue或React项目中使用Tailwind CSS实现暗黑模式切换:从系统适配到手动控制

在现代Web开发中,暗黑模式(Dark Mode)已成为提升用户体验的重要功能。本文将带你使用Tailwind CSS在React项目中实现两种暗黑模式控制方式:系统自动适配和手动切换。

2025-06-07 10:27:42 1081

原创 使用 SASS 与 CSS Grid 实现鼠标悬停动态布局变换效果

这篇文章介绍了一个纯CSS实现的3x3彩色格子网格交互效果。当鼠标悬停任意格子时,所在行和列会放大显示。主要技术点包括:CSS Grid布局构建基础网格,SASS循环生成9种不同颜色,利用:has()选择器监听悬停状态,结合SASS数学模块和列表操作动态调整行列比例。整个效果仅需少量HTML和SASS代码,无需JavaScript,但需注意:has()在Firefox的兼容性问题。该方案展示了现代CSS结合预处理器的强大表现力。

2025-06-01 00:32:15 835

原创 浏览器强缓存还未过期,但服务器资源已经变了怎么办?

本文探讨了前端开发中浏览器强缓存机制带来的经典问题:当服务器资源更新但浏览器仍在缓存有效期内时,用户无法获取最新版本。文章首先回顾了强缓存的原理,然后分析了问题场景及其原因,进而提供了三种解决方案:使用文件名hash(最佳实践)、缩短缓存时间+协商缓存、请求参数版本号。最后给出了不同资源的缓存策略推荐,强调通过资源唯一标识和合理缓存策略来兼顾性能与更新。核心要点是:文件名加hash可彻底解决问题,同时实现长期缓存和即时更新。

2025-05-24 23:47:04 971

原创 Flexbox中的flex-shrink和flex-grow属性

flex-shrink 和 flex-grow 是 CSS Flexbox 布局中的两个关键属性,分别用于控制弹性项目在容器空间不足或有多余空间时的行为。flex-shrink 定义了项目在空间不足时的收缩比例,数值越大,收缩越多,默认值为 1,设置为 0 可禁止收缩。flex-grow 则定义了项目在有多余空间时的伸展比例,数值越大,伸展越多,默认值为 0,设置为 0 可保持初始宽度。通过合理使用这两个属性,可以实现灵活且自适应的布局,确保页面在不同屏幕尺寸下保持良好的显示效果。

2025-05-16 16:25:19 740

原创 node.js事件循环详解

Node.js 中的事件循环是一个高效的异步处理机制,它允许 Node.js 在单线程中处理大量的并发 I/O 请求,而不会阻塞程序的执行。理解事件循环的机制对于优化 Node.js 应用程序的性能至关重要,尤其是在处理大量 I/O 操作时。通过合理使用异步 API 和微任务、宏任务的优先级,可以确保应用程序能够高效地执行并响应请求。

2025-04-23 00:22:03 1263

原创 详解Node.js中的setImmediate()函数

setImmediate()的主要作用是将回调函数推送到事件循环的"Check"阶段。无论延迟时间是多少,它都会在当前事件循环周期的末尾执行,而不是等到下一个事件循环周期。

2025-04-23 00:08:27 1140 2

原创 深入理解 setTimeout:原理、问题与最佳实践

本文全面讲解了 JavaScript 中 setTimeout 的使用方法,包括语法、定时器 ID 管理、常见的 this 指向问题及其解决方案,分析了延迟不准确的原因,如事件循环和最小延迟限制,并展示了其在防抖、任务分片和动画控制中的实际应用,最后总结了常见问题和优化建议,帮助开发者更高效地使用定时器处理异步任务。

2025-04-21 09:52:28 393

原创 requestAnimationFrame() 详解:优化动画性能

requestAnimationFrame()是实现高效流畅动画的首选 API。它与浏览器的刷新机制深度集成,能够最大限度地减少性能开销,并自动暂停后台任务,有效节省资源。无论是简单的 UI 动画,还是复杂的游戏渲染,都能提供卓越的性能表现。

2025-04-21 09:29:50 1068

原创 浏览器重绘 vs 重排:性能优化必须懂的两大概念

在这篇博客中,深入探讨了浏览器渲染过程中两个关键概念——重绘(Repaint)和重排(Reflow)。解释了这两者的区别、它们如何影响页面性能,以及为何transform属性的使用可以有效提高页面渲染效率。通过理解这些基础知识,开发者可以优化网页表现,避免不必要的性能瓶颈。

2025-04-19 20:18:06 706

原创 详细解释浏览器是如何渲染页面的?

浏览器渲染页面的整个流程从接收到HTML文本开始,经过 HTML 解析、样式计算、布局、分层、绘制、光栅化 等多个阶段。每个阶段通过不同线程协作,确保页面高效渲染。

2025-04-19 20:01:26 958

原创 深入理解前端安全:CSRF与XSS攻击详解

CSRF(Cross-Site Request Forgery,跨站请求伪造),听起来像个高大上的术语,但其实它就是恶搞用户的日常操作。攻击者通过引诱已认证用户访问恶意网站,利用用户的身份发起未授权请求。结果?用户可能会无意中执行一些危险操作,比如转账、修改密码等。XSS(Cross-Site Scripting,跨站脚本攻击)就像是Web页面上的“病毒”,攻击者通过注入恶意脚本到网页,借此窃取数据或执行不法行为。不同于CSRF,它直接攻击浏览器环境,让用户的浏览器成为攻击的“战场”。

2025-04-19 17:44:02 2410

原创 解密 JavaScript 原型链:易懂版

对象找爹靠__proto__,函数当爹靠prototype。属性查找往上爬,直到null才停下。

2025-04-17 11:20:21 753

原创 JavaScript 原型链深度解析:继承与属性共享的核心机制

原型链的本质:对象通过__proto__连接形成链式结构,从而实现属性和方法的继承。最佳实践避免直接操作__proto__,推荐使用和来处理原型。在构造函数中定义引用类型属性,避免多个实例共享同一原型属性。对于类的继承,建议使用class语法,它是对原型链继承的封装,使得代码更简洁易懂。

2025-04-17 11:12:18 1070

原创 TCP协议详解:互联网背后的“老大哥”

三次握手,不多不少,刚刚好。

2025-04-16 15:34:09 626

原创 深入理解CSS定位:一文搞懂Static、Relative、Absolute、Fixed、Sticky的应用与区别

CSS定位是网页布局的核心技术之一,掌握各种定位方式对于前端开发者至关重要。本文将详细介绍CSS中的五种主要定位方式:静态定位、相对定位、绝对定位、固定定位和粘性定位,并通过实例展示它们的应用场景和差异。

2025-04-16 15:07:35 1121

原创 使用 Sass 打造动态星空背景效果

在前端开发中,视觉效果越来越受到重视。本文将通过一个生动的示例,讲解如何利用 Sass 构建一个具有动态星空滚动效果的背景页面,同时也系统介绍 Sass 的核心功能与实践技巧。

2025-04-15 14:35:37 907

原创 Vite到底是构建工具还是脚手架?前端工程化的“厨子”和“菜谱”

如果你还在用Webpack,试试Vite吧——毕竟,谁不想吃上秒上的菜呢?别急,我们就用“做饭”的比喻,轻松搞懂它们的区别!因为Vite把两者结合得太好了!刚学前端时,你是不是也被各种工具名词绕晕过?

2025-04-14 23:22:26 1198

原创 用Webpack 基础配置快速搭建项目开发环境

Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具,但是Webpack有大量的配置项,对新手不太友好,但是我们可以根据的init命令根据项目需求快速生成webpack的配置文件,本文将手把手教你如何用 Webpack 和 npm 快速搭建一个基础开发环境。

2025-04-14 22:49:10 699

原创 Webpack中的文件指纹:给资源戴上个“名牌”

文件指纹就像是给你的资源穿上了“高科技外衣”,不仅能让浏览器和CDN精确识别文件版本,还能避免因缓存问题带来的各种麻烦。无论是Hash、Chunkhash还是Contenthash,各有千秋,你只需选出最适合你项目的那一款。快乐构建,从有“名牌”的资源开始!

2025-04-12 17:23:34 1066

原创 Vue2和Vue3响应式的基本实现

在 Vue 框架中,数据的响应式是其核心特性之一。当页面数据发生变化时,我们希望界面能自动更新,而不是手动操作 DOM。这就需要对数据进行监听,并在数据变更时触发 UI 重新渲染。Vue2 和 Vue3 在实现响应式的方式上有所不同,Vue2 主要依赖,而 Vue3 则引入了Proxy,大大优化了响应式系统的性能和灵活性。它们都是通过函数来封装响应式对象,方便读取或更新数据时能够进行其他的操作。

2025-03-30 13:56:13 659

原创 前端会话控制技术:cookie/session/token

理解cookie/session/token如何实现会话控制

2025-03-23 13:14:01 738

原创 React Router使用方法

教你怎么学会使用React Router

2025-03-21 16:12:45 1707

计算机网络课程设计(网络拓扑图、平面覆盖图、引线图、供电图、设备清单及方案)

做学校CD栋实验楼及体育场、网球场的无线有线网络一体化建设

2021-11-08

运筹学课程设计(银行排队叫号模型)

运筹学课程设计(银行排队叫号模型)、java模拟实现代码、PPT、总报告文档

2021-10-04

学生宿舍管理系统(web前端+数据库).rar

学生宿舍管理系统源程序+数据库

2021-10-03

java调用MD5加密方式计算摘要值(有界面)

java调用MD5加密方式计算摘要值(有界面)

2021-10-04

软考历年真题.zip(2019年以前历年)

历年软考真题

2021-11-08

使用密码和salt值联合密码加密实现登录注册功能

使用密码和salt值联合密码使用md5加密实现登录注册功能,有界面、数据库、java实现

2021-10-04

空空如也

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

TA关注的人

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