zthxxx / react-dev-inspector

jump to local IDE code directly from browser React component by just a simple click
https://react-dev-inspector.zthxxx.me
MIT License
1.16k stars 68 forks source link

请问在微前端架构下,需要怎么配置? #21

Closed baqihg closed 3 years ago

baqihg commented 3 years ago

我们的架构是一个主应用,加 n 多个子应用,所有的子应用都通过路由配置加载到主应用上(所以无法在子应用上包裹 Inspector 组件

我是这么进行配置的: 1、在主应用里面增加了 Inspector 组件来包裹入口。
2、在主应用的 webpack 配置里增加对应的 dev-server, loader, process.env.pwd 配置。
3、在子应用里配置 webpack 的 loader 和 process.env.pwd 配置。

但是这样就会导致子应用里面的文件无法跳转,原因是因为 loader 解析的时候,附加在 dom 上的只是一个相对路径 https://github.com/zthxxx/react-dev-inspector/blob/65279bf5cdc7ba6086f7ce2d29bca8d314950a6c/src/plugins/webpack/inspector-loader.ts#L93-L96 只是在点击的时候,调用的 gotoEditor 方法里面进行了 process.env.pwd 和相对路径的拼接 https://github.com/zthxxx/react-dev-inspector/blob/65279bf5cdc7ba6086f7ce2d29bca8d314950a6c/src/Inspector/utils/inspect.ts#L38-L45 那我在子应用的 webpack 里面的process.env.pwd 配置就相当于没有效果了。(因为只有主应用才有 Inspector,所以对应的 process.env.pwd 也是从主应用获取的。

请问是否可以直接在 loader 解析的时候,附加在 dom 上的就是一个绝对地址呢?这样会不会有什么问题? 或者可以直接把 pwd 加在 loader 的配置中,然后在 loader 解析的时候和相对地址拼接(相当于把 gotoEditor 的拼接提前到了 loader 解析阶段,这样是否可行?

baqihg commented 3 years ago

关于把 pwd 放在 loader 配置中,我大概实现了下,可以参考下。 在我们的架构中可以成功跳转,具体 pr 在 https://github.com/zthxxx/react-dev-inspector/pull/22

zthxxx commented 3 years ago

@baqihg 感谢使用和反馈呢~ 你的改法(loader 阶段拼接绝对路径)是在我最开始设计阶段有明确考虑到的,并且被否定掉了,

有 冗余度 / 可读性 / 安全性 (大部分全都冗余,影响可读性,并且编译时机器的绝对路径不应该被泄漏到前端 (如某些特定的编译场合)) 等问题,

但同时你的这个需求也是有已考虑了优化方案的(只是还没做),即 移除 process.env.pwd 把绝对路径拼接从前端运行时,移动到后端 editor launch middleware 中

(原本的 middleware 只接受绝对路径,改成接受相对路径就可以了,middleware 在 webpack server 中启动,能直接拿到 pwd)

baqihg commented 3 years ago

@zthxxx node 端我不是很懂😂,想问下 webpack server 怎么确认要跳转的是哪个子应用呢? 按我的理解 goToEditor 是主应用的前端调用的,那也就会发送到主应用对应的 webpack server 上,而不会直接调用子应用的 webpack server 还是说在 dom 上增加别的属性,用来转发到对应的 server ?

zthxxx commented 3 years ago

@baqihg 试试这个版本呢 react-dev-inspector@1.3.1