调试react源代码的步骤 全网最优雅的 React 源码调试方式 被教程坑了一把,react 在 19 版本以后就删除了 umd 的构建方式,导致原作者文章中提供的方法失效了。 具体表现为,在将 react 和 react-dom 替换为外部引用(即包含react编译后的源代码到react源代码的映射的map文件)的时候,文件系统不支持 cjs 类型的模块引用。本身项目是由 webpack 打包起来的,但是当作者将 rea 2025-01-29 #教程
react 整体架构 要理解一个技术,首先要知道一个前提,技术是用来解决问题的。那么,对于 react,这个前端领域最流行的技术框架之一,它要解决的问题是什么? 问题就是,传统的前端网页开发的效率很低。无论是 html 标签、 css 样式编写,还是 js 代码对相关元素的操作,尤其是在项目规模越来越大的情况下,项目的开发维护都是个大问题。那为什么 react 出现之前没有面临代码规模大的问题——因为 v8 引擎出现之 2025-01-23 #技术框架
passive的语义和它的作用之间的关联 从语义角度解释 passivepassive 的字面意思是 “被动的” 或 “不主动干预的”。在事件监听器中,passive 的含义与它的语义高度契合,具体体现为: 1. 被动的监听器 默认行为:浏览器在触发某些事件(如 touchmove、scroll)时会等待事件监听器执行完成,以检查是否调用了 preventDefault() 来阻止默认行为。 passive: true 的含义:声明监 2025-01-22 #技术细节
奇怪的换行 在一个 div 元素内部渲染了很多 span 子元素,并且 div 的样式被定义为: 12width: 50%;overflow: hidden; 正常情况下,不在 div 内容区域的元素都会被隐藏。 但是偶尔有元素,不按预想的方式溢出隐藏,而是直接换行了。 使我百思不得其解。 问了chatgpt 后,觉得可能是样式没有正常生效。观察了一番,看到了每次换行前的一个元素是包含空格的。类似: 1 2024-09-24 #编程难题
一条奇怪的 return 语句 12345678910111213141516171819202122232425262728293031if (newVal) { let size = 0 let deg = 450 const intervalId = setInterval(() => { if (size >= 332) { clearInterval(in 2024-09-22 #编程难题
JS/TS 调试方法总结 对于 js 文件: 运行命令:node xx.js 调试命令(需要 IDE 的配合, 以 vscode 为例): 开启 ctrl+shift+p 开启 auto attach, 启动程序后自动 attach debugger process 到 nodejs process 在专门的js debug 控制台运行程序(JavaScript Debug Terminal) 设置 launch.jso 2024-07-29 #源代码分析
Node 模块系统介绍 今天又被模块系统坑了一把,所有来做个总结。 1234567891011121314151617namespace SynchronousExecution { function greet(): void { const readlineSync = require("readline-sync"); let name: string = readlin 2024-07-24 #源代码分析
Vue2 scheduler 源代码分析 在 Vue2 中,调度器(scheduler) 模块主要负责管理和协调多个 Watcher 的更新。它的作用是在 Vue 应用中高效地处理依赖变化,确保响应式数据变化时,相关的视图能够以优化地形式进行。 主要作用包括: 批量更新 调度器模块通过将多个 Watcher 的更新操作批量处理,避免在一次事件循环中进行多次 DOM 更新。这减少了不必要地渲染,提高了性能 去重 在同一事件循环中,如果 2024-07-18 #源代码分析
vitest 是如何调试 ts 文件的(chatgpt 回答) 问:vitest 是如何调试 ts 文件的 Vitest 是一个快速的单元测试框架,它可以与 TypeScript 结合使用,并支持对 TypeScript 文件进行调试。Vitest 利用 Vite 的强大功能,自动处理 TypeScript 文件的编译和调试。下面是 Vitest 如何调试 TypeScript 文件的工作原理和相关配置。 Vitest 如何调试 TypeScript 文件1. 2024-07-12 #源代码分析