D:\dev\electron7\src\electron\lib\renderer\window-setup.ts
window.open
history接口实现
在browser进程中接收到back事件,真正做back的又传回给了chromium内核,通过web contents的loadURL接口。
声明:
_loadURL的绑定定义在:D:\dev\electron7\src\electron\shell\browser\api\atom_api_web_contents.cc
这里在同文件中又实现:
跑到了内核的
D:\dev\electron7\src\electron\spec-main\chromium-spec.ts
三、electron定义自定义的接口:D:\dev\electron7\src\electron\electron.d.ts 如IpcRenderer, ipcMain
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-YWan5SYykTMjdDNlRGNxQTZlFmY0QGZ2MDMkVmYiZGMhJjM18CX1AzLchDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL4M3Lc9CX6MHc0RHaiojIsJye.gif)
View Code
这个electron.d.ts声明是自动生成的。electron会根据json格式的说明文档,自己分析生成。
比如ipcRenderer的文档在:D:\dev\electron7\src\electron\docs\api\ipc-renderer.md,在文档中添加新的方法声明:
electron借助doc parser(https://github.com/electron/docs-parser),生成,filenames.auto.gni ,electron-api.json。
借助构建脚本 electron/build.gn
根据输入文件 inputs = auto_filenames.api_docs
它找的是filename.auto.gni 里面的定义的模块,最终生成
四、ipcRendererInternal 是electron内部的消息传递,它和对外提供的 其实用的一个ipc通道,通过第一个参数internal的boolean值控制是否发往外部。
D:\dev\electron7\src\electron\lib\renderer\ipc-renderer-internal.ts
供外部的ipc调用的实现
D:\dev\electron7\src\electron\lib\renderer\api\ipc-renderer.js
electron/internal/browser/ipc-main-internal
ipc的c++实现:D:\dev\electron7\src\electron\shell\renderer\api\atom_api_renderer_ipc.cc