• 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 选项默认值,以支持下面列出的新默认值。

    属性不推荐使用的默认值新的默认值
    contextIsolationfalsetrue
    nodeIntegrationtruefalse
    webviewTagnodeIntegration 未设置过则是 truefalse

    nativeWindowOpen

    使用 nativeWindowOpen 选项打开的子窗口将始终禁用 Node.js 集成。

    webContents.findInPage(text[, options])

    wordStartmedialCapitalAsWordStart 选项被删除。

    计划重写的 API (4.0)

    以下列表包含了Electron4.0计划重写的API

    app.makeSingleInstance

    1. // 废弃
    2. app.makeSingleInstance(function (argv, cwd) {
    3. })
    4. // 替换为
    5. app.requestSingleInstanceLock()
    6. app.on('second-instance', function (argv, cwd) {
    7. })

    app.releaseSingleInstance

    1. // 废弃
    2. app.releaseSingleInstance()
    3. // 替换为
    4. app.releaseSingleInstanceLock()

    app.getGPUInfo

    1. app.getGPUInfo('complete')
    2. // 现在的行为将与macOS下的`basic`设置一样
    3. app.getGPUInfo('basic')

    win_delay_load_hook

    在为 Windows 构建本机模块时,将使 win_delay_load_hook 变量值 位于 binding.gyp 模块,必须为 true (这是默认值)。 如果这个钩子 不存在,那么本机模块将无法在 Windows 上加载,并出现错误 消息如 无法找到模块。 查看 原生模块指南 以获取更多信息.

    重大的API更新 (3.0)

    以下包含了Electron 3.0中重大的API更新

    app

    1. // 弃用
    2. app.getAppMemoryInfo()
    3. // 替换为
    4. app.getAppMetrics()
    5. // 弃用
    6. const metrics = app.getAppMetrics()
    7. const { memory } = metrics[0] // 弃用的属性

    BrowserWindow

    1. // Deprecated
    2. let optionsA = { webPreferences: { blinkFeatures: '' } }
    3. let windowA = new BrowserWindow(optionsA)
    4. // Replace with
    5. let optionsB = { webPreferences: { enableBlinkFeatures: '' } }
    6. let windowB = new BrowserWindow(optionsB)
    7. // Deprecated
    8. window.on('app-command', (e, cmd) => {
    9. if (cmd === 'media-play_pause') {
    10. // do something
    11. }
    12. })
    13. // Replace with
    14. window.on('app-command', (e, cmd) => {
    15. if (cmd === 'media-play-pause') {
    16. // do something
    17. }
    18. })

    clipboard

    1. // 过时的
    2. clipboard.readRtf()
    3. // 替换为
    4. clipboard.readRTF()
    5. // 过时的
    6. clipboard.writeRtf()
    7. // 替换为
    8. clipboard.writeRTF()
    9. // 过时的
    10. clipboard.readHtml()
    11. // 替换为
    12. clipboard.readHTML()
    13. // 过时的
    14. clipboard.writeHtml()
    15. //替换为
    16. clipboard.writeHTML()

    crashReporter

    1. // 过时的
    2. crashReporter.start({
    3. companyName: 'Crashly',
    4. submitURL: 'https://crash.server.com',
    5. autoSubmit: true
    6. })
    7. // 替换为
    8. crashReporter.start({
    9. companyName: 'Crashly',
    10. submitURL: 'https://crash.server.com',
    11. uploadToServer: true
    12. })

    nativeImage

    1. // 弃用
    2. nativeImage.createFromBuffer(buffer, 1.0)
    3. // 替换为
    4. nativeImage.createFromBuffer(buffer, {
    5. scaleFactor: 1.0
    6. })

    process

    1. // Deprecated
    2. const info = process.getProcessMemoryInfo()

    screen

    1. // 弃用
    2. screen.getMenuBarHeight()
    3. // 替换为
    4. screen.getPrimaryDisplay().workArea

    session

    1. // 过时的
    2. ses.setCertificateVerifyProc(function (hostname, certificate, callback) {
    3. callback(true)
    4. })
    5. // 替换为
    6. ses.setCertificateVerifyProc(function (request, callback) {
    7. callback(0)
    8. })

    Tray

    1. // 过时的
    2. tray.setHighlightMode(true)
    3. // 替换为
    4. tray.setHighlightMode('on')
    5. // 过时的
    6. tray.setHighlightMode(false)
    7. // 替换为
    8. tray.setHighlightMode('off')

    webContents

    1. // 弃用
    2. webContents.openDevTools({ detach: true })
    3. // 替换为
    4. webContents.openDevTools({ mode: 'detach' })
    5. // 移除
    6. webContents.setSize(options)
    7. // 没有该API的替代

    webFrame

    1. // 弃用
    2. webFrame.registerURLSchemeAsSecure('app')
    3. // 替换为
    4. protocol.registerStandardSchemes(['app'], { secure: true })
    5. // 弃用
    6. webFrame.registerURLSchemeAsPrivileged('app', { secure: true })
    7. // 替换为
    8. protocol.registerStandardSchemes(['app'], { secure: true })

    <webview>

    1. // 移除
    2. webview.setAttribute('disableguestresize', '')
    3. // 没有该API的替代
    4. // 移除
    5. webview.setAttribute('guestinstance', instanceId)
    6. // 没有该API的替代
    7. // 键盘监听器在webview标签中不再起效
    8. webview.onkeydown = () => { /* handler */ }
    9. 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

    1. // 过时的
    2. let optionsA = { titleBarStyle: 'hidden-inset' }
    3. let windowA = new BrowserWindow(optionsA)
    4. //替换为
    5. let optionsB = { titleBarStyle: 'hiddenInset' }
    6. let windowB = new BrowserWindow(optionsB)

    menu

    1. // 移除
    2. menu.popup(browserWindow, 100, 200, 2)
    3. // 替换为
    4. menu.popup(browserWindow, { x: 100, y: 200, positioningItem: 2 })

    nativeImage

    1. // 移除
    2. nativeImage.toPng()
    3. // 替换为
    4. nativeImage.toPNG()
    5. // 移除
    6. nativeImage.toJpeg()
    7. // 替换为
    8. nativeImage.toJPEG()

    process

    • process.versions.electronprocess.version.chrome 将成为只读属性, 以便与其他 process.versions 属性由Node设置。

    webContents

    1. // 移除
    2. webContents.setZoomLevelLimits(1, 2)
    3. // 替换为
    4. webContents.setVisualZoomLevelLimits(1, 2)

    webFrame

    1. // 移除
    2. webFrame.setZoomLevelLimits(1, 2)
    3. // 替换为
    4. webFrame.setVisualZoomLevelLimits(1, 2)

    <webview>

    1. // 移除
    2. webview.setZoomLevelLimits(1, 2)
    3. // 替换为
    4. webview.setVisualZoomLevelLimits(1, 2)

    重复的 ARM 资源

    每个 Electron 发布版本包含两个相同的ARM版本,文件名略有不同,如electron-v1.7.3-linux-arm.zipelectron-v1.7.3-linux-armv7l.zip 添加包含v7l前缀的资源向用户明确其支持的ARM版本,并消除由未来armv6l 和 arm64 资源可能产生的歧义。

    为了防止可能导致安装器毁坏的中断,不带前缀的文件仍然将被发布。 从2.0版本起,不带前缀的文件将不再发布。

    更多详细情况,查看 6986 和 7189。