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