自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 本地启动 Vben Admin 后出现多个 Network 地址?一篇文章带你完全看懂

类型地址意义Local本机访问项目Network同局域网设备访问项目192.168.254/214 等虚拟网卡,通常没用模拟后端接口。

2025-11-23 20:05:57 56

原创 Vue3 全局 API 转移详解

/ 全局配置// 全局注册组件// 全局注册指令// 全局使用插件// 创建实例new Vue({可以看到,所有的 API(configcomponentdirectiveuse等)都挂在Vue构造函数上。Vue2:全局 API 都挂在Vue构造函数上。Vue3:全局 API 都转移到了应用实例 app上。。移除了一些过时 API(Vue.extendVue.setVue.filter等)。这就是所谓的Vue 全局 API 转移,如果面试官问到,可以从原因、变化、示例、迁移方式。

2025-09-29 19:34:56 863

原创 前端优化必备 —— Tree Shaking 全面讲解

直译为“摇树”,本质上是一种消除无用代码(Dead Code Elimination)的优化技术。它会在打包过程中分析模块的依赖关系,自动删除那些没有被使用过的代码,从而减少最终产物的体积。// main.js在这里,我们只用到了add方法,minus并没有被使用。如果项目支持,打包后的文件中只会保留add,而minus会被移除。Tree Shaking = 自动删除未使用代码,减少打包体积。依赖 ESM 的静态结构,对 CommonJS 无效。配合按需导入配置,可以达到最佳效果。

2025-09-16 08:54:42 1039

原创 Uni-app 生命周期全解析

onLaunch:做登录、全局配置初始化:常用于埋点统计、应用前后台切换逻辑onLoad:页面参数接收、数据请求:常用于分页加载、数据刷新组件生命周期:常用于 DOM 操作、第三方插件初始化、清理资源。

2025-09-16 08:35:03 393

原创 前端渲染技术全解析:SSR、SSG、CSR 有什么区别?

定义CSR 是最常见的渲染模式,页面首次加载时,服务器只返回一个空的 HTML 页面和对应的 JavaScript 脚本文件。真正的页面内容会在浏览器端由 JS 执行、框架运行后再生成。工作原理用户访问页面 → 浏览器向服务器请求资源。服务器返回index.html(通常只有一个根节点div#app)和打包好的 JS 文件。浏览器下载并执行 JS,框架(Vue/React)在客户端“挂载”应用,生成完整的 DOM。用户看到最终页面内容。优缺点✅ 优点前后端分离,开发效率高。

2025-09-12 15:21:27 1483

原创 Vue3 应对后端接口返回十万条数据的解决方案

能改接口➝ 优先分页,最简单、最高效。必须一次性拿十万条➝ 虚拟列表是标配。有计算需求➝ Web Worker + 虚拟列表。记住,前端性能优化的核心就是减少真实 DOM 数量。

2025-09-12 10:41:22 857

原创 Vue3 Suspense 全面解析:轻松处理异步组件与数据加载

Vue3 中的<Suspense>异步组件加载(如路由懒加载)异步数据请求(如接口请求数据后渲染)它通过fallback占位 UI 优雅地解决了异步等待期间的空白问题,让用户体验更流畅。日常开发中,配合和使用 Suspense,可以让异步逻辑的写法更加简洁清晰。

2025-09-09 09:54:03 1158

原创 如何实现 Vuex 中的 Store 插件

Vuex 插件机制为我们提供了一种优雅的方式,去扩展 Store 的功能。核心要点是:插件就是一个函数,接收store作为参数;可以通过监听 mutation;可以通过监听 action;可以结合本地存储、日志系统等,实现强大的功能。状态持久化(保存到 localStorage/sessionStorage);日志调试;埋点/数据上报;权限拦截;跨标签页同步。掌握了 Vuex 插件,你的项目会更加灵活可控!

2025-09-09 09:40:07 497

原创 JavaScript 闭包的实现原理详解

在 JavaScript 中,闭包(Closure)指的是:当一个函数可以记住并访问它所在的词法作用域,即使这个函数在词法作用域之外被调用时,也依然能够访问该作用域中的变量。换句话说,闭包就是函数和其周围状态(词法环境)的引用的组合。函数可以“记住”并访问它定义时的作用域。函数 + 词法环境。应用:数据封装、回调函数、柯里化、模块化。注意点:可能引发内存泄漏,需要合理使用。

2025-09-06 09:38:53 858

原创 在 ES6 中如何提取深度嵌套的对象中的指定属性

层层判断 (&&—— 兼容性最好,但代码冗长。解构赋值—— 简洁,但需要确定层级存在。可选链运算符 (?—— 推荐,优雅且安全。配合空值合并运算符 (??—— 可以设置默认值。封装工具函数—— 适合动态路径或通用需求。在现代项目中,推荐优先使用???组合,既简洁又安全。

2025-09-06 09:14:17 867

原创 Git rm 命令与系统 rm 命令的区别详解

命令是否删除工作区文件是否更新 Git 索引提交后是否记录删除rm✅ 是❌ 否❌ 否git rm✅ 是✅ 是✅ 是❌ 否✅ 是✅ 是rm只是文件系统的删除,不会通知 Git。git rm是 Git 的命令,既删文件又更新 Git 状态。rm:只是操作系统的命令,单纯删除文件,Git 不知道。git rm:Git 命令,删除文件的同时更新索引,确保删除操作能被提交。所以,在需要让 Git 知道文件被删除时,一定要用git rm,而不仅仅是rm。

2025-09-05 09:03:07 695

原创 一文搞懂 Vite 配置文件 vite.config.js

vite.config.js 是 Vite 的核心配置文件,几乎所有定制化需求都在这里实现。server(开发服务器)、(路径别名)、plugins(插件)、build(构建优化)。可以根据不同环境(开发/生产)动态返回不同配置。如果你之前是用 webpack 的,可能会觉得 Vite 的配置简洁得多,这也是 Vite 能够快速流行的原因之一。

2025-09-05 08:47:39 2175

原创 Vite 环境变量与全局变量详解

环境变量(Environment Variables),顾名思义就是根据不同的运行环境,来提供不同的配置。开发环境(development):调试本地接口,输出调试日志。测试环境(test):连接测试服务器。生产环境(production):关闭调试日志,使用正式接口。这样可以避免在项目中硬编码,提升可维护性。在.env文件中书写时,必须以 VITE_前缀开头,才会暴露给前端代码使用。VITE_APP_TITLE=我的开发环境VITE_APP_TITLE=生产环境应用环境变量:通过.env。

2025-09-03 19:41:30 1394

原创 TypeScript Awaited:一招搞定异步函数返回值类型

在中,AwaitedT :??简单理解就是:如果传入的是Promise,它会递归“拆解”出内部的类型;如果传入的不是Promise,直接返回原始类型;对null和undefined会特殊处理,保持不变。Awaited<T>是 TypeScript 4.5 引入的工具类型,用于提取Promise最终返回的值类型。实际开发中,尤其是接口请求函数、异步工具函数,配合ReturnType使用最常见。

2025-09-02 14:09:24 486

原创 JavaScript 中实例化与非实例化的区别与应用场景

实例化(Instantiation)指的是通过构造函数(Constructor)或类(Class)创建一个具体的对象实例(Instance)。在 JavaScript 中,通常使用new关键字来完成实例化。const p1 = new Person("张三", 20);// 实例化// 张三Person是一个构造函数;new Person("张三", 20)就是对Person的实例化,返回了一个具体的对象。实例化:用new调用构造函数/类,返回对象实例,适合创建可复用的对象结构。不实例化。

2025-09-01 08:50:38 424

原创 Node.js 的流(Stream)是什么?有哪些类型?

Node.js中的Stream(流)是处理大数据的高效方式,它通过分块传输数据,避免一次性加载导致的内存问题。

2025-08-29 10:43:46 803

原创 Node.js 的模块化规范是什么?CommonJS 和 ES6 模块有什么区别?

在前端和后端开发中,模块化几乎是必不可少的一个话题。无论是 Node.js 还是现代浏览器环境,我们都离不开模块化的支持。今天我们就来聊聊 Node.js 中的模块化规范,以及最常见的两种模块体系:CommonJS 和 ES6 Module (ESM)。

2025-08-28 13:50:02 1192

原创 Vue3 新特性 defineModel 全面解析:让 v-model 写法更优雅

Vue3.3引入的defineModel语法糖极大简化了v-model的使用。相比传统props+emit方式,defineModel允许直接声明响应式变量实现双向绑定,支持类型定义、多v-model和校验规则。特别适用于表单组件和需要多个v-model的复杂场景。虽然仅支持Vue3.3+版本且对复杂逻辑有限制,但能显著提升组件开发效率,推荐在兼容项目中优先使用。

2025-08-27 09:55:49 1417

原创 开发必看:四大环境(Dev/Test/Pre/Pro)详解

多环境隔离能避免测试影响用户体验、降低安全风险,并便于问题追踪。掌握环境区分有助于理解开发流程和快速定位问题。

2025-08-26 08:40:38 1408

原创 Vue3 新特性详解:用 Effect 作用域优雅管理副作用

Vue3的EffectScope是管理响应式副作用的核心工具,它能将多个effect、watch和computed等副作用打包管理。通过effectScope()创建作用域,

2025-08-25 09:20:09 1264

原创 Vue3 状态管理:Pinia 从入门到进阶全解析

在 Vue3 项目开发中,组件之间共享数据是一个很常见的问题。比如用户登录信息、购物车、主题设置,如果只依赖 props/emit,随着项目复杂度增加会变得十分混乱。在 Vue2 时代,我们常用 Vuex 来解决这个问题。而在 Vue3 时代,Pinia 成为了更推荐的解决方案。

2025-08-21 09:10:29 968

原创 ES6 中的 Proxy 全面讲解

Proxy 是 ES6 引入的一个强大功能,意思是“代理”。它可以用来拦截对象的操作,并在操作时进行自定义的逻辑处理。

2025-08-20 08:56:09 1012

原创 Vue3 组合式 API 核心 —— setup() 函数详解

在 Vue3 中,组合式 API(Composition API) 是一大亮点,而其中的核心就是 setup() 函数。很多初学者在写 Vue3 组件时会看到 setup(),但可能对它的执行时机、参数和返回值还比较迷糊。今天我们就系统地讲解一下 Vue3 中的 setup()。

2025-08-19 10:02:43 1292

原创 JavaScript 树形数据扁平化全攻略(递归/迭代/flatMap)

本文介绍了前端开发中将树形结构数据转换为普通数组的方法。树形数据常见于菜单、组织架构等场景,但直接处理存在不便。文章分析了三种转换方法:递归实现(代码简洁)、迭代实现(避免栈溢出)和flatMap实现(语法简洁)。

2025-08-18 08:59:19 779

原创 JavaScript forEach() 与 for 循环 return 行为全解析

在 JavaScript 中,forEach() 和传统的 for 循环都可以用来遍历数组,但它们在使用 return 时有着本质的区别。很多初学者在 forEach() 中尝试用 return 提前退出循环时,会发现并没有达到预期效果。今天我们就来深入分析一下。

2025-08-16 09:58:09 1472

原创 JavaScript 中 return 的作用与区别——写与不写到底差在哪?

JavaScript中的return语句有两个核心作用:1.返回函数执行结果;2.立即结束函数执行。不写return时函数默认返回undefined,写了return才能返回指定值并终止后续代码执行。常见错误包括忘记写return导致返回undefined,以及箭头函数使用大括号时必须显式return。return是函数的出口,决定是否带返回值退出,遇到undefined问题时首先应检查是否遗漏了return语句。

2025-08-15 08:34:45 1205

原创 Vue 2 和 Vue 3 响应式原理深度对比

在前端开发中,响应式系统是 Vue 的核心之一,它让数据与视图自动保持同步。从 Vue 2 到 Vue 3,响应式实现方式发生了质的变化,不仅性能更好,还解决了 Vue 2 的一些历史局限。本文将从 底层原理、性能表现、功能支持、开发体验 四个方面,对比 Vue 2 和 Vue 3 的响应式系统。

2025-08-14 08:41:20 1436

原创 JavaScript 中 let、var、const 的区别详解

在 JavaScript 中,声明变量的方式主要有三种:var、let 和 const。它们看似只是语法不同,但在作用域、提升(Hoisting)、可变性等方面有明显区别。本文将详细讲解它们的特性和使用场景。

2025-08-13 15:07:55 885

原创 MVVM 与 MVC 的区别及应用场景详解

在软件开发中,架构模式的选择直接影响项目的可维护性、扩展性以及开发效率。MVVM(Model-View-ViewModel) 和 MVC(Model-View-Controller) 是两种常见的架构模式,它们都旨在实现关注点分离,但在设计思想、数据流方向和适用场景上存在显著差异。本文将深入探讨两者的区别,并结合实际场景说明它们的应用价值。

2025-08-12 08:34:41 1659

原创 Node.js 中的 fs 模块详解:文件系统操作全掌握

本篇博客将带你系统性地了解 fs 模块的常用方法、同步与异步差异,以及实际应用场景中的示例代码,助你轻松掌握 Node.js 文件系统操作。

2025-08-08 09:36:37 934

原创 HTTP响应状态码详解:前端开发者必备的Web通信指南

HTTP状态码是Web开发中不可或缺的核心概念,它们是服务器对客户端请求的标准化响应标识。通过理解状态码的含义和用途,开发者可以快速定位问题、优化用户体验,并提升系统健壮性。本文将从分类、常见场景、实际应用和解决策略四个方面,深入解析HTTP响应状态码的奥秘。

2025-08-07 09:21:36 1004

原创 Node.js Buffer深入浅出:二进制数据处理的核心利器

在Node.js中,Buffer是处理二进制数据的核心模块。由于JavaScript早期缺乏对二进制的支持,Node.js通过Buffer类实现了对原始内存的直接分配和操作,使其成为处理TCP流、文件系统操作、图像处理等场景的基石。

2025-08-06 10:49:34 856

原创 DNS:互联网世界的“电话簿”——深入解析域名系统

当你在浏览器输入 www.csdn.net 时,电脑如何找到正确的服务器?背后功臣就是DNS!本文带你彻底搞懂DNS的工作原理、层级结构、查询过程及常见问题。

2025-08-05 13:28:43 654

原创 深入浅出:计算机进程与线程详解

本文深入探讨了操作系统中进程与线程的核心概念。同时提供了C++和Python的编程示例,以及解决线程安全和进程通信的实践方案。理解进程与线程的关系对开发高效稳定的程序具有重要意义。

2025-08-04 10:49:34 1128

原创 JavaScript 中的 Map 映射:从基础到实践

在 JavaScript 开发中,Map 是一种非常重要的数据结构,它允许开发者以键值对的形式存储和操作数据。无论是处理动态数据、管理复杂对象,还是优化内存使用,Map 都提供了强大的功能。本文将深入解析 Map 的核心概念、常用方法、使用场景,并与数组的 map() 方法进行对比,帮助你全面掌握这一工具。

2025-08-02 10:26:39 834

原创 SKU算法详解:从生成到优化的完整实践

SKU算法是电商系统中管理商品库存的核心技术,通过多属性笛卡尔积生成所有可能的商品组合。

2025-08-01 09:05:27 1607

原创 JavaScript 中 Object.assign 的深度解析与实战指南

在 JavaScript 开发中,对象操作是高频需求之一。ES6 引入的 Object.assign 方法为对象的合并与拷贝提供了简洁高效的解决方案。然而,许多开发者对其底层原理和潜在陷阱了解不足。本文将从基础用法出发,结合实际场景,深入解析 Object.assign 的核心特性。

2025-07-31 14:06:19 1123

原创 ES6中import与export的用法详解

在JavaScript开发中,模块化是提升代码可维护性和复用性的核心理念。ES6(ECMAScript 2015)引入了原生的模块化系统,通过export和import关键字实现模块的导出与导入。本文将深入解析export和import的用法,并结合示例代码帮助开发者快速掌握这一特性。

2025-07-30 10:32:08 1711

原创 JavaScript 中的宏任务与微任务

JavaScript 的单线程特性使其一次只能执行一个任务,但通过事件循环机制,它能够高效处理异步操作。事件循环将任务分为宏任务(Macrotasks)和微任务(Microtasks),它们在执行优先级和用途上有所不同。本文将详细探讨宏任务和微任务的定义、类型、执行机制以及实际应用场景,帮助开发者更好地理解和优化异步代码。

2025-07-29 14:09:52 2378

原创 JavaScript中的Promise.all方法详解

在现代JavaScript开发中,异步编程是不可或缺的一部分。Promise作为处理异步操作的核心工具,提供了多种组合方法,其中最强大的之一就是Promise.all。本文将深入探讨Promise.all的工作原理、使用场景和最佳实践。

2025-07-28 11:46:27 778

空空如也

空空如也

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

TA关注的人

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