- 博客(57)
- 收藏
- 关注

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

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

原创 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
656

原创 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
629
原创 Taro.getRandomValues() 用法详解
本文介绍了Taro框架中的安全随机数生成API——Taro.getRandomValues()的用法。相比Math.random(),该API能生成加密强度的随机数,适合验证码、密钥生成等高安全场景。文章详细讲解了其基本用法、与Math.random()的区别、常见应用场景,并提供了生成UUID的代码示例。注意事项包括类型化数组长度限制、兼容性等。总结强调该API简单易用且安全可靠,推荐在加密、抽奖等场景优先使用。
2025-07-16 16:53:10
451
原创 Taro.eventCenter 用法详解与实战
Taro.eventCenter是Taro框架提供的事件总线机制,支持页面间解耦通信。本文介绍了其基本用法(on/off/trigger)和常见场景,如页面返回传值、兄弟组件通信等,并提供了React语法示例。重点强调了事件解绑、注册时机等注意事项,建议事件名加前缀防冲突。与全局状态管理相比,事件总线更适合一次性数据传递。文章还给出了页面返回传递数据的实战代码示例,帮助开发者灵活运用这一通信方式。
2025-07-16 16:52:37
350
原创 计算两个经纬度之间的距离(JavaScript 实现)
本文介绍了使用JavaScript计算两个经纬度坐标之间球面距离的方法。采用Haversine公式实现,该公式假设地球为完美球体,通过角度差的正弦余弦运算得出大圆距离。文中提供了完整的代码实现,包括将角度转弧度、计算差值、应用公式等步骤,并给出北京到上海距离的计算示例(约1068公里)。函数返回单位为米,误差在0.5%以内,适用于地图、导航等需要地理距离计算的场景。
2025-07-14 11:24:38
269
原创 React Hook 详解:原理、执行顺序与 useEffect 的执行机制
React Hooks 彻底革新了函数组件的开发模式,通过状态链表机制实现状态管理和副作用处理。Hook 必须遵循严格的调用顺序,只能在顶层使用。常用 Hook 包括状态管理(useState/useReducer)、副作用处理(useEffect/useLayoutEffect)和性能优化(useMemo/useCallback)等类别。useEffect 的执行机制尤为关键:它在 DOM 更新后异步执行,支持清理函数,多个 effect 按顺序执行但逆序清理。与同步执行的 useLayoutEffect
2025-07-14 10:15:39
930
原创 Taro 框架的打包原理与优化思路
Taro框架的打包原理与优化思路:Taro通过AST解析和多端适配实现跨平台开发,打包流程包括源码解析、资源收集、代码编译和输出。优化方向包括代码分包懒加载、Tree Shaking、资源压缩、构建缓存等。建议合理规划分包结构、按需引入组件库、压缩图片资源、开启构建缓存并定期分析包体积,同时利用Taro插件生态提升性能。这些措施可以有效减小包体积、提高构建速度和运行效率。
2025-07-14 10:03:43
444
原创 探秘 Levenshtein 距离:解码字符串间的“编辑密码”
Levenshtein距离是一种衡量字符串相似度的经典算法,通过计算将一个字符串转换为另一个字符串所需的最少编辑操作次数(插入、删除、替换)。文章介绍了其核心原理、基于动态规划的矩阵计算方法,以及在拼写检查、生物信息学、搜索引擎等领域的广泛应用。虽然算法时间复杂度较高(O(m×n)),但仍是字符串匹配的重要工具,并可通过优化方法提升效率。文末提供了JavaScript实现代码示例,展示了"kitten"到"sitting"的编辑距离为3。
2025-07-10 10:52:38
883
原创 Puppeteer 库简介:背景、用法与原理
Puppeteer 是 Google 开发的 Node.js 库,用于通过 DevTools 协议控制 Chrome/Chromium 浏览器。它支持网页自动化、爬虫、测试等场景,相比 Selenium 更轻量高效。主要功能包括截图、PDF生成、表单提交、数据抓取等。核心原理是利用 DevTools 协议与浏览器通信,支持无头/有头模式。使用时可优化性能(如禁用图片)、应对反爬(模拟用户行为),推荐重用浏览器实例并完善异常处理。Puppeteer 已成为现代 Web 自动化的重要工具,适合需要精确控制 Ch
2025-07-08 21:21:53
1055
原创 字符串的模糊匹配方法介绍
本文介绍了六种常见的字符串模糊匹配方法:1) 编辑距离(Levenshtein)计算字符变换次数;2) Jaro-Winkler距离优先匹配前缀;3) 最长公共子序列(LCS)衡量顺序相似性;4) 模糊搜索技术(Fuse.js等)用于自动补全;5) 正则表达式实现简单模糊匹配;6) 各类语言专用库(fuzzywuzzy、Lucene等)。每种方法都附有JavaScript实现代码和复杂度分析,适用于不同场景需求,从精确匹配到大规模检索,帮助开发者根据具体应用选择合适的文本相似度计算方法。
2025-07-08 19:22:36
1023
原创 npm 包 scheduler 介绍
摘要:npm 包 scheduler 是由 React 团队维护的高性能任务调度库,主要用于浏览器环境下的协作式任务调度。最新版本 0.26.0,采用 MIT 许可,无依赖且轻量,周下载量超 4200 万次。它通过优先级机制(从立即执行到空闲执行共5级)智能调度任务,避免主线程阻塞,特别适合 React 并发模式、复杂计算和动画场景。虽然目前主要服务于 React 内部,但未来可能发展为通用调度解决方案。核心 API 包括任务调度/取消接口,支持任务分片处理,比传统 setTimeout 更高效。
2025-07-08 19:16:23
753
原创 Fuse.js 模糊匹配库用法总结
Fuse.js是一个功能强大的JavaScript模糊搜索库,适用于前端和Node.js项目。它支持对数组和对象进行高效模糊查找,提供丰富配置选项如权重搜索、嵌套搜索、扩展搜索语法等。核心功能包括:支持字符串和对象数组搜索、自定义匹配阈值、逻辑查询、索引优化以及全局配置。通过keys参数可指定搜索字段,includeScore等选项可控制输出格式。Fuse.js还支持预生成索引加速搜索,适合处理大数据量场景,是前端模糊搜索的理想解决方案。
2025-07-06 00:18:07
924
原创 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
923
原创 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
803
原创 Vue 性能优化
Vue性能优化主要包括虚拟DOM优化、组件优化、数据优化和渲染优化等方面。虚拟DOM通过Diff算法减少DOM操作,组件优化使用keep-alive缓存和异步加载。数据优化采用计算属性缓存和防抖节流技术,渲染优化合理使用v-show/v-if和列表渲染技巧。此外还涉及打包优化如懒加载,以及避免内存泄漏等常见问题。综合运用这些方法可以显著提升Vue应用性能。
2025-06-15 21:57:39
441
原创 进程与线程
进程与线程是操作系统的基本概念。进程是资源分配和调度的独立单位,拥有独立内存空间;线程是CPU调度的基本单位,共享进程资源但有自己的栈空间。两者主要区别在于资源分配、地址空间、通信方式和切换开销。多进程适用于需要隔离或计算密集型任务,多线程适合I/O密集型或共享数据场景。常见IPC方式包括管道、消息队列、共享内存等。线程同步可使用互斥锁、信号量等机制。现代浏览器如Chrome采用多进程架构(每个标签页一个进程),JS则运行在单线程中通过事件循环实现异步。
2025-06-15 21:55:28
596
原创 TCP 协议
TCP协议是面向连接、可靠的传输层协议,具有三次握手建立连接、四次挥手断开连接的特点。其核心机制包括流量控制、拥塞控制(慢启动、拥塞避免、快速重传和快速恢复)和可靠传输。TCP通过序列号、确认应答、超时重传等机制确保数据传输的可靠性。现代拥塞控制算法如BBR和CUBIC优化了网络性能。理解TCP的关键在于掌握其连接管理、可靠传输原理和拥塞控制策略。
2025-06-14 21:02:40
1221
1
原创 OSI 七层网络模型
OSI七层模型是描述网络通信的标准化框架,将网络功能分为七个层次:物理层(比特传输)、数据链路层(帧组织)、网络层(路由选择)、传输层(端到端连接)、会话层(对话管理)、表示层(数据转换)和应用层(用户接口)。每层都有特定功能、协议和设备,数据从发送方自上而下封装,接收方自下而上解封装。实际应用中常结合TCP/IP四层模型,广泛应用于Web浏览、文件传输等领域,并可通过各层优化提升网络性能和安全。
2025-06-14 21:01:31
864
原创 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
584
原创 Vue 组件通信
Vue 组件通信方式总结:文章介绍了 Vue 中多种组件通信方法,包括父子组件间的 props/emit、跨层级的 provide/inject、状态管理工具 Vuex/Pinia 以及不推荐的 EventBus。详细说明了每种方式的适用场景和实现代码,并提供了最佳实践建议,如父子组件推荐使用 props/emit,跨组件推荐使用 Pinia。同时指出了常见问题如 props 单向数据流和组件解耦方案,最后列举了相关面试题及答案要点。本文对 Vue 开发者理解和选择合适的通信方式具有实用指导意义。
2025-06-12 18:28:12
391
原创 CDN 原理与应用
摘要CDN(内容分发网络)通过全球分布式节点缓存内容,显著提升网站访问速度和可靠性。其核心机制包括智能DNS解析、就近节点选择和多级缓存策略,可加速静态/动态内容分发。主要优势体现在性能优化、高可用保障和成本节约方面,广泛应用于图片、视频、API等场景。配置需关注缓存规则、回源策略和HTTPS安全,优化方向包含资源压缩、HTTP/2协议和智能监控。随着边缘计算和5G发展,CDN正与AI调度、实时渲染等新技术融合,BGP路由协议和AS自治系统是其网络架构的重要支撑。典型问题涉及缓存更新、节点选择和安全防护
2025-06-11 18:05:49
853
原创 前端项目主题切换
本文总结了6种前端项目主题切换方案:1)使用CSS变量定义主题变量和切换;2)动态加载不同CSS文件;3)通过类名切换主题;4)使用SASS/LESS预处理器定义主题;5)动态生成样式;6)使用CSS滤镜快速切换。推荐采用CSS变量方案,同时应考虑用户偏好、保存用户选择、添加过渡动画,并确保UI组件兼容主题切换。每种方案都提供了代码示例说明实现方式。
2025-06-11 18:03:08
270
原创 HTML 文本省略号
本文详细介绍了实现文本省略号的多种方式,包括单行、省略多行、响应式适配和自定义样式等。其中,单行省略通过设置 white-space、overflow 和 text-overflow 属性实现;多行省略推荐使用 -webkit-line-clamp,兼容性不佳时可用伪元素或 JavaScript 实现。文章还探讨了在表格、响应式设计中应用省略号的技巧,并提供了常见问题排查、兼容性处理、性能优化和最佳实践建议,帮助前端开发者灵活高效地处理文本溢出问题。
2025-06-10 12:41:12
591
原创 HTML 语义化
HTML 语义化指通过使用具有明确含义的标签(如<header>《nav>` 等)结构化网页内容,提升可访问性、SEO 和代码可维护性。
2025-06-10 12:38:00
831
原创 实战评测 “驭码 CodeRider 2.0” 在前端开发的真实能力!
《实战评测:驭码CodeRider 2.0前端开发能力》摘要本文深度测评了极狐GitLab推出的AI开发工具CodeRider 2.0在前端开发场景的表现。测试涵盖三个层级:基础算法生成(TAB补全和中英文注释)、小型NPM库解析(成功理解项目结构)以及React项目优化分析(精准识别Redux使用并提出优化建议)。该工具核心优势在于:1)灵活的本地/云端模型切换保障隐私;2)Loom模式下的可控任务执行流程;3)规范的上下文分析能力,擅长问题拆解。评测显示,CodeRider 2.0表现优异。
2025-06-09 23:25:37
1740
原创 JavaScript 标签加载
JavaScript脚本加载方式对比:普通script标签会阻塞HTML解析,加载后立即执行;async脚本异步加载,加载完立即执行但不保证顺序;defer脚本异步加载,HTML解析完成后按顺序执行;type="module"默认具有defer特性,支持ES6模块化,在严格模式下执行且不污染全局作用域。建议根据脚本特性选择加载方式:独立第三方用async,DOM操作用defer,模块化开发用type="module"。
2025-06-09 22:34:56
1103
原创 CSS 布局指南
《CSS 布局指南》系统讲解了现代网页布局的核心技术。主要包括 Flex(弹性盒)与 Grid(网格)两大布局方式,分别用于一维与二维布局,详细列出其容器与项目属性。还涵盖响应式布局方案,如媒体查询、vw/rem适配、CSS变量等,适配多设备环境。常见布局场景如居中、两栏、三栏、瀑布流也提供多种实现方式。最后总结了10种垂直居中的技巧及最佳实践,帮助开发者实现高效、兼容性强的布局设计。
2025-06-09 22:31:27
1245
原创 CSS 选择器与优先级
本文系统介绍了CSS选择器及其优先级规则,涵盖基础选择器(元素、类、ID)、属性选择器、伪类/伪元素选择器以及组合选择器。重点解析了CSS优先级计算机制,从高到低依次为!important、内联样式、ID选择器、类/属性/伪类选择器、元素选择器和通用选择器。文章还提供了优先级计算示例和注意事项,强调选择器性能优化建议,如避免通配符、减少嵌套层级、谨慎使用!important等,帮助开发者编写更高效、可维护的CSS代码。
2025-06-08 12:00:42
280
原创 CSS3 的特性
CSS3特性总结:主要包括三大核心特性与众多新增功能。层叠性允许样式叠加应用,遵循权重优先级和就近原则;继承性使子元素继承父元素的可继承样式;优先级通过权重计算决定样式应用顺序。新增特性涵盖:属性选择器、结构伪类等选择器扩展;盒模型调整;背景大小/定位控制;渐变效果;过渡动画;2D/3D变换;弹性(Flex)与网格(Grid)布局系统;响应式媒体查询;多列排版以及阴影效果。这些特性显著增强了CSS的样式控制能力和视觉效果表现。
2025-06-07 22:50:18
1411
原创 CSS 预处理器与工具
本文介绍了三种主流CSS预处理工具:Less、Sass/SCSS和Tailwind CSS。Less和Sass都提供变量、嵌套、混合等特性,区别在于语法(Less用@符号,Sass用$符号)。Tailwind CSS采用原子化CSS理念,通过组合工具类快速构建UI。文章还提及PostCSS和CSS Modules等辅助工具,并给出技术选型建议:小型项目适合原生CSS或Tailwind,中型推荐Less/Sass,大型项目建议Sass+PostCSS,同时要考虑团队技术栈和项目维护需求。
2025-06-07 22:49:20
524
原创 CSS 性能优化
CSS性能优化的主要方法包括:1) 选择器优化,减少嵌套层级,优先使用类选择器;2) 减少重排和重绘,通过transform、批量DOM操作等方式提高渲染效率;3) 资源优化,压缩合并CSS,使用CSS Sprites和图标字体;4) 加载优化,关键CSS内联,异步加载非关键样式;5) 其他技巧如使用CSS变量、Flexbox/Grid布局等。合理运用这些方法能显著提升页面性能,改善用户体验。
2025-06-06 23:28:50
1035
原创 ES6 扩展运算符与 Rest 参数
ES6 的扩展运算符(...)和 Rest 参数虽然使用相同语法但功能相反:扩展运算符将可迭代对象展开为单独元素,用于数组/对象复制、合并和函数参数传递;Rest 参数则将多个元素收集为数组,常用于剩余参数处理和结构赋值。两者显著简化了数组和对象操作,成为现代 JavaScript 开发的基础工具。使用中需注意扩展运算符是浅拷贝,Rest 参数必须放在参数列表末尾,且要权衡性能开销。面试常考察二者的区别、深拷贝实现及性能优化等问题。
2025-05-24 12:03:32
658
原创 ES6 模板字符串
模板字符串是ES6引入的重要特性,解决了传统字符串拼接的痛点。它使用反引号(`)包裹内容,支持字符串插值(${})和多行文本。主要特性包括:变量和表达式直接嵌入、自动保留换行格式、标签模板功能。常见应用场景有动态字符串生成、HTML模板、SQL查询构建等。相比传统拼接方式,模板字符串代码更简洁、可读性更强,但需注意性能优化和XSS安全问题。面试常考察其优势、标签模板用途及转义处理等。
2025-05-24 12:00:04
988
原创 ES6 哈希数据结构
ES6引入了Set、Map等哈希数据结构,为JavaScript提供了更强大的数据处理能力。Set存储唯一值,支持数组转换、遍历和常用操作方法。Map允许任意类型作为键,保持插入顺序,提供高效的键值操作。两者都支持与数组/对象相互转换,并提供了简洁的遍历方式。这些数据结构优化了数据存储和访问性能,是ES6的重要特性之一。
2025-05-23 23:08:44
1113
原创 ES6 新增 API 方法
ES6新增API方法概览ES6(2015)为JavaScript引入了众多实用的新API方法,主要分为数组、对象和字符串三大类。在数组方面,新增了Array.from()、Array.of()、find/findIndex、includes、flat/flatMap等方法,简化了数组的创建、查找和降维操作。
2025-05-23 23:06:31
1162
原创 WebRTC:实时通信的未来之路
WebRTC(Web Real-Time Communication)是由Google于2011年推出的开源技术标准,旨在为网页浏览器提供原生的实时音视频通信能力,无需依赖插件。其核心组件包括getUserMedia、RTCPeerConnection和RTCDataChannel,分别用于获取音视频流、建立端到端连接和传输数据。WebRTC的跨平台特性和简单易用的API使其广泛应用于视频会议、在线教育、远程医疗等场景。未来,随着5G、AI等技术的发展,WebRTC将进一步与物联网、虚拟现实等领域融合,推动
2025-05-22 23:54:58
740
原创 LESS基础用法详解
LESS 是一种扩展了 CSS 功能的动态样式语言,提供了变量、嵌套、混合、运算、函数等特性,使样式表更灵活和易维护。本文详细介绍了 LESS 的基本用法,包括变量的定义与使用、样式的嵌套、混合的创建与参数化、数值与颜色的运算、内置函数的应用、变量的作用域与覆盖、文件的导入、选择器插值、继承、注释、条件语句以及通过递归混合实现的循环。通过这些功能,开发者可以更高效地编写和管理样式代码。
2025-05-22 23:53:15
469
原创 ES6 解构赋值
ES6 解构赋值是一种简化代码的语法,允许从数组或对象中提取值并赋给变量。数组解构基于位置,支持跳过元素、设置默认值和嵌套解构;对象解构基于属性名,支持变量重命名、默认值和深层解构。实际应用场景包括函数参数解构、变量交换和模块导入。最佳实践包括使用默认值防止错误、处理空值、使用 rest 操作符收集剩余元素以及避免过度解构。面试常见问题涉及数组与对象解构的区别、默认值处理、深层解构的安全性以及支持的数据类型。
2025-05-21 09:43:36
485
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人