天天看點

electron中重寫js 内置函數 需要重新核心編譯

 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

electron中重寫js 内置函數 需要重新核心編譯
electron中重寫js 内置函數 需要重新核心編譯

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