自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

修炼魔法中....

赛博笔记本

  • 博客(71)
  • 收藏
  • 关注

原创 React性能优化:父组件如何导致子组件重新渲染及避免策略

本文深入探讨了React中父组件导致子组件重新渲染的机制及优化策略。通过多个代码示例分析,揭示了父组件状态变化会无条件触发所有子组件重新渲染,即使props未改变。文章详细介绍了三种常见场景:基础状态变更、传递未变化的原始类型props和引用类型props,并指出引用类型props(对象和函数)因其引用地址变化而成为性能陷阱。 针对这些问题,提出了两种核心优化方案:使用React.memo进行浅比较优化,以及配合useMemo缓存引用类型值以保持引用稳定。特别是当传递对象或函数props时,必须结合useM

2025-06-24 08:44:28 1004

原创 从0到1写一个适用于Node.js的User Agent生成库

这篇文章介绍了如何从零开发一个高性能的Node.js User Agent生成库。核心内容包括:1) 分析现有方案的痛点(数据陈旧、分布不真实);2) 提出基于权重分布算法的真实UA生成方案,采用随机数池和数据缓存优化性能;3) 详细设计UA字符串构建逻辑,支持多种浏览器设备;4) 提供完整的TypeScript类型支持。文章还阐述了数据维护策略和测试体系,确保生成结果既真实可靠又高性能。该方案特别适用于爬虫、自动化测试等需要模拟真实用户行为的场景。

2025-06-06 23:27:15 1402

原创 Promise 基础详解 — 速通校招!

Promise 是 JavaScript 中处理异步操作的标准方式,旨在解决回调地狱问题,使代码更易维护。Promise 有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败),且状态一旦改变不可逆转。通过 then 和 catch 方法,可以链式处理异步操作的结果和错误。Promise 还提供了多个静态方法,如 Promise.all、Promise.race、Promise.allSettled 和 Promise.any,用于处理多个异步任务。此外,async

2025-05-18 10:14:46 665

原创 HTTP/1.1、HTTP/2 和 HTTP/3

HTTP 协议历经了三次重大版本改进,分别是 HTTP/1.x、HTTP/2 和 HTTP/3。HTTP/1.x 是最早广泛应用的版本,HTTP/1.1 通过引入 Keep-Alive 支持长连接,但依然存在队头阻塞问题,性能受限。HTTP/2 通过二进制分帧、多路复用、头部压缩和服务器推送等特性,显著提升了传输效率和并发性能,但仍受 TCP 队头阻塞影响。HTTP/3 则基于 QUIC 协议,进一步解决了 TCP 的队头阻塞问题,提供了更低的延迟和更高的可靠性。这些改进使得 HTTP 协议在 Web 世界

2025-05-11 10:00:25 656

原创 Taro 支付 API 文档详解

本文档详细介绍了Taro框架中的三个支付API:requestPayment(标准微信支付)、requestOrderPayment(自定义交易组件支付)和faceVerifyForPay(人脸支付验证)。内容涵盖各API的功能描述、适用场景、参数定义、签名算法及代码示例,并提供了API对比表和选择建议。重点强调支付签名安全、参数校验和错误处理等开发注意事项,帮助开发者正确选择和使用适合的支付接口,确保支付功能的安全性和稳定性。

2025-08-07 11:38:59 524

原创 Taro 扩展 API 深度解析与实战指南

Taro 扩展 API 实用指南摘要:本文全面介绍了 Taro 框架的扩展 API 功能,包括环境检测(getEnv、getAppInfo)、样式转换(pxTransform)、事件通信(eventCenter)、实例管理(getCurrentInstance)等核心工具。通过实战代码示例,展示了如何利用这些 API 实现多端适配、全局状态管理和性能优化。文章特别强调了环境识别和样式转换在跨平台开发中的重要性,并提供了基于事件中心的轻量级状态管理方案。这些 API 显著提升了开发效率,是构建高质量多端应用的

2025-08-07 10:29:18 469

原创 Taro Hooks 完整分类详解

Taro Hooks 分类详解:提供了完整的 Taro Hooks 分类指南,涵盖生命周期、用户交互、分享、系统事件和错误处理等核心功能。主要包括: 生命周期类(如 useLoad、useReady) 用户交互类(如 usePageScroll、useReachBottom) 分享相关(useShareAppMessage) 系统事件类(useResize) 错误处理类(useError) 路由相关(useRouter) 每种 Hook 都配有示例代码和使用场景说明,帮助开发者高效管理小程序生命周期和交互逻

2025-08-05 14:42:26 976

原创 Window.structuredClone() 指南

Window.structuredClone()是现代JavaScript中用于深拷贝对象的强大方法。它使用结构化克隆算法,支持循环引用、特殊对象类型(如Date、Map等)和可转移对象(如ArrayBuffer)。相比传统的JSON方法,它能更完整地复制复杂对象结构。该方法自2022年起被主流浏览器广泛支持,适用于状态管理、Web Workers通信等场景。通过可选的transfer参数,还能优化大对象传输性能。但需注意函数、DOM节点等类型不能被克隆。

2025-08-05 14:27:45 754

原创 JavaScript Object.assign 对象合并

本文深入探讨了JavaScript中的对象合并技术。首先介绍了经典的Object.assign()方法,分析了其属性覆盖机制、浅拷贝限制和访问器属性处理等特性。接着比较了现代扩展运算符与Object.assign()的差异,并提供了深拷贝合并方案,包括structuredClone()、自定义深合并函数及第三方库的使用。文章还列举了配置合并、React状态更新和Redux reducer等实际应用场景,最后给出了避免不必要合并和使用Memoization等性能优化建议。全文涵盖了从基础到高级的对象合并技术,

2025-08-05 14:23:26 333

原创 Taro 位置相关 API 介绍

Taro框架提供了三个核心位置API:Taro.getLocation用于获取用户当前位置(支持坐标系类型和高度参数),返回经纬度、速度等数据;Taro.openLocation可在系统地图查看指定位置,支持导航功能;Taro.chooseLocation允许用户在地图上选择位置,适合地址选择场景。这些API涵盖了位置获取、查看和选择等常见需求,开发者可根据业务场景灵活使用,注意处理权限拒绝等错误情况。

2025-07-28 10:21:23 924

原创 Taro 网络请求相关 API 全面解析

Taro框架提供了全面的网络请求API,包括Taro.request基础HTTP请求、Taro.uploadFile文件上传、Taro.downloadFile文件下载和Taro.connectSocket WebSocket通信。这些API具有跨平台兼容性,支持Promise调用和事件监听,可满足各类数据交互需求。开发者通过统一接口即可实现多端网络通信,提升开发效率,适用于普通请求、文件传输和实时通信等场景。Taro的持续优化将使这些API功能更强大,帮助构建更优秀的跨平台应用。

2025-07-28 10:07:47 525

原创 Vitest 用法详解及 Coverage Web 工具介绍

本文详细介绍了Vitest测试框架及其覆盖率分析工具的使用方法。首先讲解了Vitest的安装配置、测试用例编写和运行测试的基本流程,重点介绍了与Jest兼容的API特性。随后详细阐述了Coverage Web工具的功能,包括如何生成可视化覆盖率报告、启用Web界面查看代码覆盖情况,以及支持的不同报告类型。全文突出了Vitest作为前端测试新选择的高效性和易用性,特别是其内置的覆盖率分析工具如何帮助开发者提升代码质量。

2025-07-24 17:14:41 359

原创 Taro 网络 API 详解与实用案例

Taro网络API摘要 Taro框架提供了四种核心网络API:Taro.request用于发起HTTP请求,支持GET/POST等方法;Taro.uploadFile实现文件上传功能;Taro.downloadFile用于文件下载;Taro.connectSocket建立WebSocket实时通信。每个API都提供跨端支持,包含必填参数(如url)和常用参数(headers/timeout等)。文中通过React组件示例演示了各API的具体用法,包括请求处理、图片上传下载和WebSocket消息收发,帮助开

2025-07-22 13:18:21 390

原创 Taro 界面交互 API 详解与实用案例

Taro框架提供了丰富的界面交互API,包括showToast(消息提示)、showModal(模态弹窗)、showLoading(加载提示)和showActionSheet(操作菜单)。这些API支持多端开发,可灵活配置参数实现不同交互场景,如成功提示、确认操作、数据加载和选项选择。本文通过代码示例演示了每个API的具体用法,帮助开发者快速掌握Taro的交互功能,提升用户体验。

2025-07-22 13:16:14 386

原创 Puppeteer核心用法详解:Cookie设置、Header限制与页面加载等待

摘要:Puppeteer核心功能详解,涵盖Cookie设置、Header限制和页面加载等待三大关键点。Cookie需通过setCookie()方法设置,注意域名和路径匹配;Header中User-Agent和Cookie需用专用方法设置;页面加载建议结合waitUntil选项、延时和readyState检查,确保动态内容完整加载。这些技巧对自动化测试和网页抓取至关重要。

2025-07-22 09:15:00 499

原创 Taro 路由相关 API 详解与实战

本文详细介绍了Taro框架中的路由API,包括6种核心方法:navigateTo(保留当前页面跳转)、redirectTo(关闭当前页面跳转)、switchTab(跳转tabBar页面)、reLaunch(关闭所有页面跳转)、navigateBack(返回上一页)和getCurrentPages(获取页面栈)。文章分析了每种API的使用场景和参数说明,并提供了代码示例和实用建议,如注意页面栈10层限制、tabBar页面跳转规则等。最后通过商品详情跳转、登录跳转等常见场景,展示了如何合理运用这些API实现流畅

2025-07-21 13:34:12 545

原创 Taro 本地存储 API 详解与实用指南

本文详细介绍了Taro框架的本地存储API,包括8个核心方法:4个异步API(setStorage、getStorage、removeStorage、clearStorage)和4个同步API(setStorageSync、getStorageSync、removeStorageSync、clearStorageSync)。文章对比了异步和同步API的使用场景,提供了每种方法的参数说明和代码示例,并给出了数据类型、容量限制、安全性等使用建议。最后列举了用户登录态管理、页面缓存等常见应用场景,帮助开发者在多端

2025-07-21 13:32:34 622

原创 Taro 生命周期相关 API 详解

Taro 3.x 提供了类似 React Hooks 的生命周期 API,简化了多端开发中的生命周期管理。本文介绍了 9 个常用 API:useDidShow(页面显示)、useDidHide(页面隐藏)、usePullDownRefresh(下拉刷新)、useReachBottom(触底加载)、usePageScroll(页面滚动)、useShareAppMessage(分享设置)、useShareTimeline(朋友圈分享)、useReady(初次渲染完成)和 useUnload(页面卸载)。这些 H

2025-07-21 13:31:11 794

原创 Taro.getRandomValues() 用法详解

本文介绍了Taro框架中的安全随机数生成API——Taro.getRandomValues()的用法。相比Math.random(),该API能生成加密强度的随机数,适合验证码、密钥生成等高安全场景。文章详细讲解了其基本用法、与Math.random()的区别、常见应用场景,并提供了生成UUID的代码示例。注意事项包括类型化数组长度限制、兼容性等。总结强调该API简单易用且安全可靠,推荐在加密、抽奖等场景优先使用。

2025-07-16 16:53:10 780

原创 Taro.eventCenter 用法详解与实战

Taro.eventCenter是Taro框架提供的事件总线机制,支持页面间解耦通信。本文介绍了其基本用法(on/off/trigger)和常见场景,如页面返回传值、兄弟组件通信等,并提供了React语法示例。重点强调了事件解绑、注册时机等注意事项,建议事件名加前缀防冲突。与全局状态管理相比,事件总线更适合一次性数据传递。文章还给出了页面返回传递数据的实战代码示例,帮助开发者灵活运用这一通信方式。

2025-07-16 16:52:37 513

原创 计算两个经纬度之间的距离(JavaScript 实现)

本文介绍了使用JavaScript计算两个经纬度坐标之间球面距离的方法。采用Haversine公式实现,该公式假设地球为完美球体,通过角度差的正弦余弦运算得出大圆距离。文中提供了完整的代码实现,包括将角度转弧度、计算差值、应用公式等步骤,并给出北京到上海距离的计算示例(约1068公里)。函数返回单位为米,误差在0.5%以内,适用于地图、导航等需要地理距离计算的场景。

2025-07-14 11:24:38 437

原创 React Hook 详解:原理、执行顺序与 useEffect 的执行机制

React Hooks 彻底革新了函数组件的开发模式,通过状态链表机制实现状态管理和副作用处理。Hook 必须遵循严格的调用顺序,只能在顶层使用。常用 Hook 包括状态管理(useState/useReducer)、副作用处理(useEffect/useLayoutEffect)和性能优化(useMemo/useCallback)等类别。useEffect 的执行机制尤为关键:它在 DOM 更新后异步执行,支持清理函数,多个 effect 按顺序执行但逆序清理。与同步执行的 useLayoutEffect

2025-07-14 10:15:39 1195

原创 Taro 框架的打包原理与优化思路

Taro框架的打包原理与优化思路:Taro通过AST解析和多端适配实现跨平台开发,打包流程包括源码解析、资源收集、代码编译和输出。优化方向包括代码分包懒加载、Tree Shaking、资源压缩、构建缓存等。建议合理规划分包结构、按需引入组件库、压缩图片资源、开启构建缓存并定期分析包体积,同时利用Taro插件生态提升性能。这些措施可以有效减小包体积、提高构建速度和运行效率。

2025-07-14 10:03:43 624

原创 探秘 Levenshtein 距离:解码字符串间的“编辑密码”

Levenshtein距离是一种衡量字符串相似度的经典算法,通过计算将一个字符串转换为另一个字符串所需的最少编辑操作次数(插入、删除、替换)。文章介绍了其核心原理、基于动态规划的矩阵计算方法,以及在拼写检查、生物信息学、搜索引擎等领域的广泛应用。虽然算法时间复杂度较高(O(m×n)),但仍是字符串匹配的重要工具,并可通过优化方法提升效率。文末提供了JavaScript实现代码示例,展示了"kitten"到"sitting"的编辑距离为3。

2025-07-10 10:52:38 901

原创 Puppeteer 库简介:背景、用法与原理

Puppeteer 是 Google 开发的 Node.js 库,用于通过 DevTools 协议控制 Chrome/Chromium 浏览器。它支持网页自动化、爬虫、测试等场景,相比 Selenium 更轻量高效。主要功能包括截图、PDF生成、表单提交、数据抓取等。核心原理是利用 DevTools 协议与浏览器通信,支持无头/有头模式。使用时可优化性能(如禁用图片)、应对反爬(模拟用户行为),推荐重用浏览器实例并完善异常处理。Puppeteer 已成为现代 Web 自动化的重要工具,适合需要精确控制 Ch

2025-07-08 21:21:53 1113

原创 字符串的模糊匹配方法介绍

本文介绍了六种常见的字符串模糊匹配方法:1) 编辑距离(Levenshtein)计算字符变换次数;2) Jaro-Winkler距离优先匹配前缀;3) 最长公共子序列(LCS)衡量顺序相似性;4) 模糊搜索技术(Fuse.js等)用于自动补全;5) 正则表达式实现简单模糊匹配;6) 各类语言专用库(fuzzywuzzy、Lucene等)。每种方法都附有JavaScript实现代码和复杂度分析,适用于不同场景需求,从精确匹配到大规模检索,帮助开发者根据具体应用选择合适的文本相似度计算方法。

2025-07-08 19:22:36 1161

原创 npm 包 scheduler 介绍

摘要:npm 包 scheduler 是由 React 团队维护的高性能任务调度库,主要用于浏览器环境下的协作式任务调度。最新版本 0.26.0,采用 MIT 许可,无依赖且轻量,周下载量超 4200 万次。它通过优先级机制(从立即执行到空闲执行共5级)智能调度任务,避免主线程阻塞,特别适合 React 并发模式、复杂计算和动画场景。虽然目前主要服务于 React 内部,但未来可能发展为通用调度解决方案。核心 API 包括任务调度/取消接口,支持任务分片处理,比传统 setTimeout 更高效。

2025-07-08 19:16:23 781

原创 Fuse.js 模糊匹配库用法总结

Fuse.js是一个功能强大的JavaScript模糊搜索库,适用于前端和Node.js项目。它支持对数组和对象进行高效模糊查找,提供丰富配置选项如权重搜索、嵌套搜索、扩展搜索语法等。核心功能包括:支持字符串和对象数组搜索、自定义匹配阈值、逻辑查询、索引优化以及全局配置。通过keys参数可指定搜索字段,includeScore等选项可控制输出格式。Fuse.js还支持预生成索引加速搜索,适合处理大数据量场景,是前端模糊搜索的理想解决方案。

2025-07-06 00:18:07 944

原创 Turndown.js: 优雅地将 HTML 转换为 Markdown

Turndown.js是一个强大的JavaScript库,用于将HTML转换为Markdown格式。它支持CommonMark标准、GitHub Flavored Markdown特性,并可在Node.js和浏览器环境中使用。该库提供智能过滤、可扩展性强的自定义规则,以及灵活的配置选项。通过简单的API调用,开发者可以快速转换HTML字符串或DOM节点,还能通过插件扩展功能或保留特定HTML标签。Turndown.js以其优雅的设计和强大的功能,成为HTML与Markdown互转的理想解决方案。

2025-07-03 10:14:04 1050

原创 Model Context Protocol TypeScript SDK 基本用法指南

Model Context Protocol (MCP) TypeScript SDK 开发指南摘要:MCP是一种规范LLM与外部工具交互的开放协议,其TypeScript SDK为开发者提供了构建客户端和服务端的工具集。本文介绍了基本使用方法:服务端通过McpServer定义资源、工具和提示,使用Zod进行输入输出验证;客户端通过Client类连接服务端,调用工具、获取资源及提示。示例展示了基于标准输入/输出的通信方式,包括服务端初始化、工具定义和客户端调用流程。该SDK支持Node.js和浏览器环境,

2025-07-03 10:06:52 968

原创 Vue 性能优化

Vue性能优化主要包括虚拟DOM优化、组件优化、数据优化和渲染优化等方面。虚拟DOM通过Diff算法减少DOM操作,组件优化使用keep-alive缓存和异步加载。数据优化采用计算属性缓存和防抖节流技术,渲染优化合理使用v-show/v-if和列表渲染技巧。此外还涉及打包优化如懒加载,以及避免内存泄漏等常见问题。综合运用这些方法可以显著提升Vue应用性能。

2025-06-15 21:57:39 536

原创 进程与线程

进程与线程是操作系统的基本概念。进程是资源分配和调度的独立单位,拥有独立内存空间;线程是CPU调度的基本单位,共享进程资源但有自己的栈空间。两者主要区别在于资源分配、地址空间、通信方式和切换开销。多进程适用于需要隔离或计算密集型任务,多线程适合I/O密集型或共享数据场景。常见IPC方式包括管道、消息队列、共享内存等。线程同步可使用互斥锁、信号量等机制。现代浏览器如Chrome采用多进程架构(每个标签页一个进程),JS则运行在单线程中通过事件循环实现异步。

2025-06-15 21:55:28 625

原创 TCP 协议

TCP协议是面向连接、可靠的传输层协议,具有三次握手建立连接、四次挥手断开连接的特点。其核心机制包括流量控制、拥塞控制(慢启动、拥塞避免、快速重传和快速恢复)和可靠传输。TCP通过序列号、确认应答、超时重传等机制确保数据传输的可靠性。现代拥塞控制算法如BBR和CUBIC优化了网络性能。理解TCP的关键在于掌握其连接管理、可靠传输原理和拥塞控制策略。

2025-06-14 21:02:40 1238 1

原创 OSI 七层网络模型

OSI七层模型是描述网络通信的标准化框架,将网络功能分为七个层次:物理层(比特传输)、数据链路层(帧组织)、网络层(路由选择)、传输层(端到端连接)、会话层(对话管理)、表示层(数据转换)和应用层(用户接口)。每层都有特定功能、协议和设备,数据从发送方自上而下封装,接收方自下而上解封装。实际应用中常结合TCP/IP四层模型,广泛应用于Web浏览、文件传输等领域,并可通过各层优化提升网络性能和安全。

2025-06-14 21:01:31 872

原创 Vue 生命周期

Vue生命周期详述了组件从创建到销毁的全过程。Vue2的8个生命周期钩子(beforeCreate/created/beforeMount/mounted/beforeUpdate/updated/beforeDestroy/destroyed)分别对应初始化、挂载、更新和销毁阶段。Vue3改用组合式API,需导入onMounted等钩子函数,setup取代beforeCreate/created,命名也有所变化。最佳实践包括:在created初始化数据,在mounted操作DOM,在销毁前清理资源。

2025-06-12 18:30:24 594

原创 Vue 组件通信

Vue 组件通信方式总结:文章介绍了 Vue 中多种组件通信方法,包括父子组件间的 props/emit、跨层级的 provide/inject、状态管理工具 Vuex/Pinia 以及不推荐的 EventBus。详细说明了每种方式的适用场景和实现代码,并提供了最佳实践建议,如父子组件推荐使用 props/emit,跨组件推荐使用 Pinia。同时指出了常见问题如 props 单向数据流和组件解耦方案,最后列举了相关面试题及答案要点。本文对 Vue 开发者理解和选择合适的通信方式具有实用指导意义。

2025-06-12 18:28:12 396

原创 CDN 原理与应用

摘要CDN(内容分发网络)通过全球分布式节点缓存内容,显著提升网站访问速度和可靠性。其核心机制包括智能DNS解析、就近节点选择和多级缓存策略,可加速静态/动态内容分发。主要优势体现在性能优化、高可用保障和成本节约方面,广泛应用于图片、视频、API等场景。配置需关注缓存规则、回源策略和HTTPS安全,优化方向包含资源压缩、HTTP/2协议和智能监控。随着边缘计算和5G发展,CDN正与AI调度、实时渲染等新技术融合,BGP路由协议和AS自治系统是其网络架构的重要支撑。典型问题涉及缓存更新、节点选择和安全防护

2025-06-11 18:05:49 866

原创 前端项目主题切换

本文总结了6种前端项目主题切换方案:1)使用CSS变量定义主题变量和切换;2)动态加载不同CSS文件;3)通过类名切换主题;4)使用SASS/LESS预处理器定义主题;5)动态生成样式;6)使用CSS滤镜快速切换。推荐采用CSS变量方案,同时应考虑用户偏好、保存用户选择、添加过渡动画,并确保UI组件兼容主题切换。每种方案都提供了代码示例说明实现方式。

2025-06-11 18:03:08 293

原创 HTML 文本省略号

本文详细介绍了实现文本省略号的多种方式,包括单行、省略多行、响应式适配和自定义样式等。其中,单行省略通过设置 white-space、overflow 和 text-overflow 属性实现;多行省略推荐使用 -webkit-line-clamp,兼容性不佳时可用伪元素或 JavaScript 实现。文章还探讨了在表格、响应式设计中应用省略号的技巧,并提供了常见问题排查、兼容性处理、性能优化和最佳实践建议,帮助前端开发者灵活高效地处理文本溢出问题。

2025-06-10 12:41:12 654

原创 HTML 语义化

HTML 语义化指通过使用具有明确含义的标签(如<header>《nav>` 等)结构化网页内容,提升可访问性、SEO 和代码可维护性。

2025-06-10 12:38:00 840

空空如也

空空如也

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

TA关注的人

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