天天看点

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