- API协议
- FIXME 注释
- 计划重写的 API (5.0)
- new BrowserWindow({ webPreferences })
- nativeWindowOpen
- webContents.findInPage(text[, options])
- 计划重写的 API (4.0)
- app.makeSingleInstance
- app.releaseSingleInstance
- app.getGPUInfo
- win_delay_load_hook
- 重大的API更新 (3.0)
- app
- BrowserWindow
- clipboard
- crashReporter
- nativeImage
- process
- screen
- session
- Tray
- webContents
- webFrame
- <webview>
- Node Headers URL
- 重大的API更新 (2.0)
- BrowserWindow
- menu
- nativeImage
- process
- webContents
- webFrame
- <webview>
- 重复的 ARM 资源
API协议
这里将记录重大更改,并在可能的情况下向JS代码添加弃用警告,在这更改之前至少会有一个重要版本.
FIXME 注释
代码注释中添加的FIXME字符来表示以后的版本应该被修复的问题. 参考 https://github.com/electron/electron/search?q=fixme
计划重写的 API (5.0)
new BrowserWindow({ webPreferences })
不推荐使用以下 webPreferences 选项默认值,以支持下面列出的新默认值。
| 属性 | 不推荐使用的默认值 | 新的默认值 |
|---|---|---|
contextIsolation | false | true |
nodeIntegration | true | false |
webviewTag | nodeIntegration 未设置过则是 true | false |
nativeWindowOpen
使用 nativeWindowOpen 选项打开的子窗口将始终禁用 Node.js 集成。
webContents.findInPage(text[, options])
wordStart 和 medialCapitalAsWordStart 选项被删除。
计划重写的 API (4.0)
以下列表包含了Electron4.0计划重写的API
app.makeSingleInstance
// 废弃app.makeSingleInstance(function (argv, cwd) {})// 替换为app.requestSingleInstanceLock()app.on('second-instance', function (argv, cwd) {})
app.releaseSingleInstance
// 废弃app.releaseSingleInstance()// 替换为app.releaseSingleInstanceLock()
app.getGPUInfo
app.getGPUInfo('complete')// 现在的行为将与macOS下的`basic`设置一样app.getGPUInfo('basic')
win_delay_load_hook
在为 Windows 构建本机模块时,将使 win_delay_load_hook 变量值 位于 binding.gyp 模块,必须为 true (这是默认值)。 如果这个钩子 不存在,那么本机模块将无法在 Windows 上加载,并出现错误 消息如 无法找到模块。 查看 原生模块指南 以获取更多信息.
重大的API更新 (3.0)
以下包含了Electron 3.0中重大的API更新
app
// 弃用app.getAppMemoryInfo()// 替换为app.getAppMetrics()// 弃用const metrics = app.getAppMetrics()const { memory } = metrics[0] // 弃用的属性
BrowserWindow
// Deprecatedlet optionsA = { webPreferences: { blinkFeatures: '' } }let windowA = new BrowserWindow(optionsA)// Replace withlet optionsB = { webPreferences: { enableBlinkFeatures: '' } }let windowB = new BrowserWindow(optionsB)// Deprecatedwindow.on('app-command', (e, cmd) => {if (cmd === 'media-play_pause') {// do something}})// Replace withwindow.on('app-command', (e, cmd) => {if (cmd === 'media-play-pause') {// do something}})
clipboard
// 过时的clipboard.readRtf()// 替换为clipboard.readRTF()// 过时的clipboard.writeRtf()// 替换为clipboard.writeRTF()// 过时的clipboard.readHtml()// 替换为clipboard.readHTML()// 过时的clipboard.writeHtml()//替换为clipboard.writeHTML()
crashReporter
// 过时的crashReporter.start({companyName: 'Crashly',submitURL: 'https://crash.server.com',autoSubmit: true})// 替换为crashReporter.start({companyName: 'Crashly',submitURL: 'https://crash.server.com',uploadToServer: true})
nativeImage
// 弃用nativeImage.createFromBuffer(buffer, 1.0)// 替换为nativeImage.createFromBuffer(buffer, {scaleFactor: 1.0})
process
// Deprecatedconst info = process.getProcessMemoryInfo()
screen
// 弃用screen.getMenuBarHeight()// 替换为screen.getPrimaryDisplay().workArea
session
// 过时的ses.setCertificateVerifyProc(function (hostname, certificate, callback) {callback(true)})// 替换为ses.setCertificateVerifyProc(function (request, callback) {callback(0)})
Tray
// 过时的tray.setHighlightMode(true)// 替换为tray.setHighlightMode('on')// 过时的tray.setHighlightMode(false)// 替换为tray.setHighlightMode('off')
webContents
// 弃用webContents.openDevTools({ detach: true })// 替换为webContents.openDevTools({ mode: 'detach' })// 移除webContents.setSize(options)// 没有该API的替代
webFrame
// 弃用webFrame.registerURLSchemeAsSecure('app')// 替换为protocol.registerStandardSchemes(['app'], { secure: true })// 弃用webFrame.registerURLSchemeAsPrivileged('app', { secure: true })// 替换为protocol.registerStandardSchemes(['app'], { secure: true })
<webview>
// 移除webview.setAttribute('disableguestresize', '')// 没有该API的替代// 移除webview.setAttribute('guestinstance', instanceId)// 没有该API的替代// 键盘监听器在webview标签中不再起效webview.onkeydown = () => { /* handler */ }webview.onkeyup = () => { /* handler */ }
Node Headers URL
这是在构建原生 node 模块时在 .npmrc 文件中指定为 disturl 的 url 或是 —dist-url 命令行标志.
过时的: https://atom.io/download/atom-shell
替换为: https://atom.io/download/electron
重大的API更新 (2.0)
以下包含了Electron 2.0中重大的API更新
BrowserWindow
// 过时的let optionsA = { titleBarStyle: 'hidden-inset' }let windowA = new BrowserWindow(optionsA)//替换为let optionsB = { titleBarStyle: 'hiddenInset' }let windowB = new BrowserWindow(optionsB)
menu
// 移除menu.popup(browserWindow, 100, 200, 2)// 替换为menu.popup(browserWindow, { x: 100, y: 200, positioningItem: 2 })
nativeImage
// 移除nativeImage.toPng()// 替换为nativeImage.toPNG()// 移除nativeImage.toJpeg()// 替换为nativeImage.toJPEG()
process
process.versions.electron和process.version.chrome将成为只读属性, 以便与其他process.versions属性由Node设置。
webContents
// 移除webContents.setZoomLevelLimits(1, 2)// 替换为webContents.setVisualZoomLevelLimits(1, 2)
webFrame
// 移除webFrame.setZoomLevelLimits(1, 2)// 替换为webFrame.setVisualZoomLevelLimits(1, 2)
<webview>
// 移除webview.setZoomLevelLimits(1, 2)// 替换为webview.setVisualZoomLevelLimits(1, 2)
重复的 ARM 资源
每个 Electron 发布版本包含两个相同的ARM版本,文件名略有不同,如electron-v1.7.3-linux-arm.zip 和 electron-v1.7.3-linux-armv7l.zip 添加包含v7l前缀的资源向用户明确其支持的ARM版本,并消除由未来armv6l 和 arm64 资源可能产生的歧义。
为了防止可能导致安装器毁坏的中断,不带前缀的文件仍然将被发布。 从2.0版本起,不带前缀的文件将不再发布。
更多详细情况,查看 6986 和 7189。
