自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 React 学习笔记

自定义 Hook 就是封装逻辑的函数,类似 Vue 的 composable。通常把重复的逻辑提取出来,不包含业务代码。规则名字必须以use开头可以在组件间共享逻辑共享的是逻辑,不是状态本身Hook 之间可以传值,会保持最新每次渲染都会重新运行必须是纯函数事件处理函数用 useEffectEvent 包裹不要写太通用的 Hook(如useMount),保持具体使用:把 useEffect 里的逻辑提取成自定义 Hook,让组件更简洁。组件。

2025-12-20 11:31:34 719

原创 npm 发包流程整理

发布前检查:确保配置正确、构建产物完整、包名可用发布流程:登录账号 → 执行发布命令 → 首次 scoped package 需要异常回退:优先使用 dist-tag 回退,避免删除已发布的版本2FA 认证:使用 Access Token 解决 2FA 认证问题,要注意 Token 安全自动化发布:通过 Git Tag、semantic-release 或手动 workflow 实现自动化发布流程,推荐 semantic-release 流程。

2025-12-19 11:03:27 802

原创 Electron 插件重编译方案整理

优先使用,省心且更贴近 Electron 场景手动方案node-gyp可以作为备用重建方案注意保持 Python 环境、VS C++ Build Tool 和 目标架构一致。

2025-12-18 11:59:13 634

原创 Corepack 包管理器管理工具

Corepack 是Node.js 官方提供的包管理器管理工具,用于统一和管理不同版本的包管理器。启用方式:从 Node.js 16.9.0 开始内置,通过命令启用。项目配置:通过中的字段指定包管理器版本,确保团队一致性。优势:自动安装和切换包管理器版本,简化工作流程,提高团队协作效率。适用场景:适合团队协作项目,特别是需要确保构建一致性的生产环境。

2025-12-17 11:23:57 753

原创 Vue3 - 快速 Diff 算法理解

Diff 算法流程:Vue 3 的 diff 算法分为五个步骤:同步头部节点、同步尾部节点、处理新增节点、处理删除节点、处理乱序节点。通过预处理快速缩小范围,然后通过 key 映射和 LIS 算法处理复杂的节点移动场景。最长递增子序列算法:使用贪心算法 + 二分查找 + 回溯列表的方式,找出不需要移动的节点序列。通过贪心策略和二分查找找到局部最优解,然后通过回溯指针数组还原出真正的递增子序列,最小化 DOM 操作次数。关键优化。

2025-12-16 11:26:56 930

原创 Vue2 - VDOM 和双端 Diff 算法

VDOM 的核心价值:通过维护虚拟 DOM 树,减少直接操作真实 DOM 的性能开销,提供声明式编程模型,支持跨平台渲染。Diff 算法流程:数据变化触发,通过双端 diff 算法高效比较和更新节点。双端 diff 算法:使用四个指针(新旧节点的起始和结束位置)进行比较,通过四种匹配规则优先处理无需移动的节点,用最少移动解决顺序调整,时间复杂度从 O(n²) 优化为 O(n)。关键优化点:key 值帮助识别节点复用,避免不必要的重建;同层节点比较避免跨层级遍历;双端比较减少遍历范围。

2025-12-15 10:27:59 747

原创 浏览器跨标签页通信方案

MessageChannel 本质也是依赖 MessagePort 来实现的通信机制,本质和 SharedWorker 一样。如果实现跨标签页通讯,需要有中间人且支持结构化克隆算法来协助传递 port 端口信息。通过 websocket ,以服务端做中转,实现跨域通信方案。这个方案还是比较常用在 iframe 跨域通信机制中,仅记录。基于共享线程来完成通信,是独立于主线程的后台共享线程。支持同源下跨标签页通信方案,适用于广播消息方案。打开窗口,可以通过父子窗口执行通信。

2025-12-14 09:24:30 582

原创 浏览器帧渲染流程理解

浏览器以事件循环为驱动,每帧中先处理任务与微任务,如果到达 VSync 时机,则根据是否需要更新内容,执行 RAF 和 渲染管线(样式、布局、绘制、光栅化、合成),在下一次垂直同步时由 GPU 将结果显示到屏幕,后续根据是否有剩余时间进入空闲回调阶段。Vsync 的周期决定了 RAF 的执行周期重绘阶段其实不会执行绘制操作,只是对构建了绘图指令的数据结构并提交给合成器线程,真正绘制是在 Vsync 信号发出后的合成阶段(第9步)。

2025-12-13 22:09:02 1547

原创 浏览器事件循环和Node事件循环理解

浏览器事件循环:基于 messagepump 实现,执行顺序为宏任务 → 微任务 → 渲染(可选)→ 下个周期。同步代码在宏任务内部执行,微任务在单个循环周期内会全部执行完毕,宏任务每个周期只执行一个。Node.js 事件循环:基于 libuv 实现,分为多个阶段(timers、I/O callbacks、poll、check、close callbacks),每个阶段执行完毕后会执行微任务队列(nextTick 优先级最高),然后进入下一个阶段。关键区别。

2025-12-12 11:06:32 773

原创 浏览器垃圾回收(GC)理解

标记清除和引用计数是最经典的两种回收方案,红宝书里也逐重讲解了两种垃圾回收方案。

2025-12-11 10:21:27 748

原创 如何给 IP 地址部署 HTTPS

以上是关于 IP 地址申请 HTTPS 的流程。虽然最后项目部署出了点问题,但总算把如何给 IP 地址部署 HTTPS 的疑问给解决了。整体流程比较顺畅,不会有太多的卡点。

2025-12-10 09:27:11 1201 1

原创 Service Worker离线缓存理解

Service Worker 生命周期:注册→ install(预缓存)→ waiting(待旧 SW 退出)→activate(接管页面)→running(处理 fetch/push/sync 事件)→ idle/terminated(空闲终止)。Service Woker 离线缓存使用流程:定义 SW 文件 → 监听 install 添加缓存 、 activate 中处理旧缓存 、fetch 中匹配网络缓存 → 注册 SW。

2025-12-09 07:24:09 864

原创 SSE 实现方案实践

本文介绍了SSE(Server-Sent Events)技术及其在前端开发中的应用。SSE是一种基于HTTP的轻量级服务器推送方案,支持单向实时消息流,适合日志推送、AI流式生成等场景。文章重点讨论了原生SSE的局限性(仅支持GET请求)及两种POST请求实现方案:基于axios的onDownloadProgress监听和微软开发的fetch-event-source库。后者通过fetch API实现SSE功能,内置窗口恢复重连、错误捕获等特性,支持自定义请求头和中断控制。

2025-12-08 11:00:52 346

原创 JavaScript - 结构化克隆算法概要整理

结构化克隆算法(Structured Cloning Algorithm)是用于复制复杂 JavaScript 对象的算法,广泛应用于postMessage()、IndexedDB、Worker数据传递等场景。与 JSON 序列化的区别:比JSON.stringify()支持更多类型(如 Date、Map、二进制数据等),但仍有局限性(如不支持函数)。错误对象(Error 及其子类,如 TypeError、RangeError 等):部分环境支持,复制时会保留错误消息和堆栈信息。对象字面量(Object)

2025-12-08 10:53:18 158

原创 简单实现Vuepress博客首页

Vuepress简介VuePress 是一个极简静态网站生成器,它包含由 Vue 驱动的主题系统和插件 API,它的诞生初衷是为了支持 Vue 及其子项目的文档需求。官方中文文档环境搭建在此之前要先安装好 node.js 和 webpacknode.js 安装 : node.js官网webpack 安装 :npm install webpack -g本文主要针对 Vuepress首先打开控制台( win+R 输入 CMD )输入以下命令#win安装vuepress,-g代表全局安装

2020-05-11 18:00:27 2949

空空如也

空空如也

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

TA关注的人

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