提效-点击跳转到源码

1、localhost项目

例如【鲸岛】这个中台项目启动地址是localhost。

使用chrome中的【click-to-react-component 】扩展, alt + 鼠标左键 选择dom后跳转到对应文件。

click-to-react-component的原理(来自ai)

click-to-react-component 的工作原理确实很巧妙,让我来解释一下:

  1. React DevTools 集成

// 利用 React DevTools 提供的能力
window.__REACT_DEVTOOLS_GLOBAL_HOOK__
  • 通过 Chrome 扩展机制,获取页面中的 React Fiber 树

  • 可以访问到组件的内部信息,包括源码位置

  1. 源码映射(Source Maps)

// 开发环境下 webpack 会生成 source map
//# sourceMappingURL=main.js.map
  • 利用浏览器开发者工具提供的 source map API

  • 可以将编译后的代码位置映射回源代码位置

  1. DOMReact 组件的映射

// 简化的原理示意
document.addEventListener('mouseover', (e) => {// 获取 DOM 元素对应的 React Fiberconst fiber = getFiberFromDOM(e.target);// 通过 fiber 获取源码位置const sourceLocation = getSourceLocation(fiber);
});

  1. 编辑器通信

// 使用特殊协议打开编辑器
window.open(`vscode://file/${filePath}:${line}:${column}`);

主要区别:

  1. code-inspector-plugin 需要在构建时注入信息

  2. click-to-react-component 利用已有的开发工具基础设施

    1. React DevTools

    2. Source Maps

    3. Chrome 扩展 API

这就是为什么 click-to-react-component 不需要修改项目代码就能工作,因为它巧妙地利用了开发环境下已经存在的这些工具和信息。

2、非localhost项目

比如fs这类电商项目,这里使用 code-inspector 的打包插件。

使用

  1. 安装npm插件

npm install code-inspector-plugin -D 
//其他包版本过低就用命令:  npm install code-inspector-plugin -D --legacy-peer-deps

  1. 在打包中使用这个插件

fs中修改configs/webpack.dev.js


const { codeInspectorPlugin } = require('code-inspector-plugin');plugins: [codeInspectorPlugin({bundler: 'webpack',}),]

  1. 项目启动后用 shift + alt + 鼠标左键 选择组件

原理(来自ai)

让我来解释一下 code-inspector 的核心工作原理:

  1. 编译时注入

  • 通过 webpack/vite 等构建工具的插件系统,在编译过程中为每个组件注入位置信息

  • 主要包含:文件路径、行号、列号等源码位置信息

  1. 运行时定位

// 简化的原理示意
{// 开发环境下会注入类似这样的代码__CODE_INSPECTOR__: {filePath: 'src/components/Button.jsx',line: 10,column: 5}
}

  1. 事件监听

  • 监听组合键(Alt+Shift)的按下

  • 添加鼠标移动事件监听器

  • 在 DOM 元素上显示遮罩层和位置信息

  1. IDE 通信

  • 使用 vscode:// 等协议打开编辑器

  • 通过 URL 参数传递文件路径和位置信息

  • 编辑器接收到请求后定位到对应位置

  1. 开发环境限制

if (process.env.NODE_ENV === 'development') {// 只在开发环境下注入代码plugins.push(['code-inspector-plugin', {bundler: 'webpack'}]);
}

主要优点:

  1. 无侵入性 - 不需要修改源代码

  2. 性能影响小 - 只在开发环境生效

  3. 支持多种框架 - React/Vue/Svelte 等

这就是为什么在你的 babel 配置中需要添加这个插件,它需要在编译阶段注入必要的位置信息。

其他类似的插件

  1. locatorjs,这个插件提供chrome扩展

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/907244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FeignClient发送https请求时的证书验证原理分析

背景 微服务之间存在调用关系,且部署为 SSL 协议时,Feignt 请求报异常: Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find vali…

性能优化关键:link、script和meta的正确打开方式

link 标签的主要属性及其作用 属性是否必填作用描述示例值rel是定义当前文档与链接资源的关系(必须属性)。常见值:stylesheet, icon, preload, preconnect 等。rel"stylesheet" rel"icon"href是指定链接资源的URL。href…

Linux `less` 命令深度解析与高阶应用指南

Linux `less` 命令深度解析与高阶应用指南 一、核心功能解析1. 基本作用2. 与类似工具对比二、选项系统详解1. 常用基础选项2. 高阶选项组合三、高阶应用场景1. 日志分析系统2. 代码审查系统3. 数据管道处理四、特殊文件处理1. 大文件优化查看2. 二进制文件分析五、交互式命令大…

影刀RPA-20-高级操作题2

一、题目 二、链接 方法一:影刀应用分享: 高级考试题2-第二次 方法二:影刀应用分享: 高级考试题2 三、代码 方法一: import xbot from xbot import print, sleep from .import package from .package import variables as glv from xbot…

C# NX二次开发-获取面法向和UV等数据

通过ufun函数UF_MODL_ask_face_props可以获取到面的法向数据和UV和半径等数据。 代码如下: double[] uvs new double[4];double[] param new double[2];double[] point new double[3];double[] u1 new double[3];double[] v1 new double[3];double[] u2 new d…

SpringBoot整合Sa-Token:实现RBAC权限模型

Java系列文章 文章目录 Java系列文章前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备 二、表结构设计2.1 ER图示例2.2 数据库表设计2.2.1 用户表2.2.2 角色表2.2.3 部门表2.2.4 权限表 三、SpringBoot整合Sa-Token3.1 sa-token基础配置3.1.1 Maven配置3…

工商业储能的“智慧大脑”:解密 Acrel-2000ES EMS 的核心功能与价值

安科瑞电气顾强 市场背景:工商业储能加速崛起 2022年中国已并网的储能项目中,用户侧并网占比为8.36%,其中工商业储能占据了用户侧高达98.6%的份额。驱动这一市场发展的关键因素日益显著: 1.峰谷价差扩大: 全国各省市…

vue+threeJs 根据屏幕调整gltf模型的大小、重心、并更换骑车整体颜色

嗨,我是小路。今天主要和大家分享的主题是“vuethreeJs 根据屏幕调整gltf模型的大小、重心、并更换骑车整体颜色”。 项目案例示意图 1.整体更换gltf模型的颜色 定义:整体代码如下。颜色是事先设定的 const colorAry reactive(["rgb(21…

03 基于 java udp 做一个dns服务器 和 一个dns代理服务器

前言 这个也是 来自于一个朋友的需求 最终的目的是实现一个 dns 代理服务器, 当然 这本质也是一个 dns 服务器 并且 dns 代理服务器是依赖于 一个 dns 服务器的, 因此 顺便给一个 dns 服务器的 demo 这里 主要是 基于 udp 的一个 dns 请求, 响应数据的交互 dns 服务器 …

【HITCSAPP 哈工大计算机系统期末大作业】 程序人生-Hello’s P2P

计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 计算机与电子通信类 学   号 2023112915 班   级 23L0505 学 生 杨昕彦 指 导 教 师 刘宏伟 计算机科学…

第十周作业

一、CSRF 1、DVWA-High等级 2、使用Burp生成CSRF利用POC并实现攻击 二、SSRF:file_get_content实验,要求获取ssrf.php的源码 三、RCE 1、 ThinkPHP 2、 Weblogic 3、Shiro

PTA刷题笔记(难度预警!!!有详解)

7-18 二分法求多项式单根 代码如下&#xff1a; ​ #include <stdio.h> #include <math.h>// 定义多项式函数 double polynomial(double x, double a3, double a2, double a1, double a0) {return a3 * x * x * x a2 * x * x a1 * x a0; }// 二分法求根函数 do…

打破传统范式,线上 3D 画展彰显多元亮点

&#xff08;一&#xff09;沉浸式体验&#xff0c;身临其境赏画​ 线上 3D 画展运用先进的 3D 建模和虚拟现实&#xff08;VR&#xff09;技术&#xff0c;高度还原了真实的展厅环境 。展厅内的布局、灯光&#xff0c;甚至墙壁的质感都被完美复刻&#xff0c;让观众仿佛置身于…

Docker架构详解

一,Docker的四大要素&#xff1a;Dockerfile、镜像(image)、容器(container)、仓库(repository) 1.dockerfile&#xff1a;在dockerfile文件中写构建docker的命令,通过dockerbuild构建image 2.镜像&#xff1a;就是一个只读的模板&#xff0c;镜像可以用来创建docker容器&…

【工具类】常用的工具类——CollectionUtil

目录 cn.hutool.core.collection.CollectionUtil集合创建集合清空集合判空集合去重集合过滤集合转换集合合并集合交集集合差集集合是否包含元素集合是否包含指定元素&#xff08;自定义条件&#xff09;集合分页集合分组集合转字符串元素添加元素删除根据属性转Map获取元素获取…

从零起步搭建基于华为云构建碳排放设备管理系统的产品设计

目录 &#x1f33f; 华为云 IoT&#xff1a;轻松上手碳排放设备管理系统搭建 &#x1f30d; 逐步搭建搭建规划 &#x1f680; 一、系统蓝图&#xff1a;5大核心模块&#xff0c;循序渐进 1️⃣ 设备管理与数据采集层 2️⃣ 数据传输与协议转换层 3️⃣ 数据处理与分析层…

华为OD机试真题—— 小明减肥(2025B卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

2025 B卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

数据结构 -- 插入排序(直接插入排序和希尔排序)

插入排序 算法思想 每次将⼀个待排序的记录按其关键字大小插入到前面已排好序的子序列中&#xff0c;直到全部记录插入完成。 代码实现 void InsertSort(int A[],int n){int i,j,temp;for(i 1;i<n;i){if(A[i]<A[i-1]){temp A[i]; //用temp暂存A[i]for(ji-1;j>…

word中表格拉不动以及插入图片有间距

word中的表格宽度和高度怎么调整都改不了&#xff0c;可以将选中表格—右键—段落—取消勾选下图中的两项。 word中表格插入图片始终有间隙&#xff0c;怎么也消除不了间隙&#xff0c;可以在表布局—单元格边距—修改上下左右边距为0即可

网络抓包命令tcpdump及分析工具wireshark使用

文章目录 环境文档用途详细信息 环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 8,Linux x86-64 Red Hat Enterprise Linux 7,Linux x86-64 SLES 12,银河麒麟 &#xff08;鲲鹏&#xff09;,银河麒麟 &#xff08;X86_64&#xff09;,银河麒麟&#xff08;龙…