桌面端框架Electron使用问题整理和总结

在这里插入图片描述
文章主要记录了使用electron日常开发中所遇到的一些坑以及怎样填坑,帮助其他开发的小伙伴少踩一些坑。建议关注收藏,以便遇到时候方便查阅!

electron这个框架我就不过多介绍了,是使用nodeChromium架构的一个桌面端框架,如果有了解使用web技术开发桌面端,这个框架多少会听说过或者正在使用。

下面就记录一下自己在阅读文档的一些疑问以及开发过程中踩过的坑!

electron?

  1. SpectronDevtron 的作用?

    • Spectron可以和其他的mocha等测试框架进行结合,测试electron
    • Devtron是Electron DevTools的扩展,可以帮助你检查,监控和调试应用程序。默认是关闭状态
  2. <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" />的作用?

    • 设置 HTTP 的 Content-Security-Policy 头部字段
    • 为了防止XSS攻击,安全考虑可以在content中设置允许加载的脚本的源
  3. electron-forge的作用?

    • 是一个快速构建electron的构建工具,里面包含打包、自动更新等
    • 内部书写htmljs为原生写法,未集成第三方框架
  4. electron中使用iframewebview的的区别?

    • 官方建议使用iframe代替webview,webview标签可以加载一个访客模式的URL页面,由于这个标签是基于Chromium webview,目前架构变化较快,不够稳定。但是webview所提供的功能较多,比如控制访客能否前进后退等
  5. window.open()使用native和chrome的区别是什么?

    • electron中使用window.open()打开一个URL使用,会创建一个BrowserWindow实例,使用的是native的窗口,可以通过设置nativeWindowOpen: true来使用chrome内置的window.open(),同步打开窗口
  6. electron-packagerelectron-builder 的打包区别?为什么推荐使用 electron-builder

    • electron-packagerelectron-builder 都是用于electron应用打包的模块, 相比较electron-builder有更丰富的功能,支持更多的平台,打包的文件更加轻量,支持非electron内置的自动更新(内置的自动更新需上传到git等支持平台)
  7. electron中使用node原生模块的时候,electron-rebuild能够简化原生的重编译?

    • 由于electron内置的node版本和你电脑本机的版本不一致,则在使用node原生模块的时候可能会报错,Error: The module '/path/to/native/module.node'
    • 有3中方式可以解决该问题(下面会详细介绍两种使用方法,其他方式参考官方文档)

electron进程之间通讯

  1. 主进程向渲染进程通讯

    • 主进程使用 win.webContents.send 发送消息
    • 渲染进程使用 ipcRenderer.on 接收消息
  2. 渲染进程向主进程通信

    • 渲染进程使用 ipcRenderer.send 或者 ipcRenderer.invoke 发送消息
    • 主进程使用 ipcMain.on或者ipcMain.handle 接收消息
  3. 渲染进程向渲染进程通信

  • 通知事件
    • 通过主进程转发(Electron 5之前)
    • ipcRenderer.sendTo(Electron 5之后)
  • 数据共享
    • web技术(localStorage、sessionStorage、indexedDB、可嵌入型数据库等)
    • 使用remote(尽量少用,容易影响性能)

由于公司使用的技术栈是vue,所以需要将electronvue结合起来,当然结合的方式也不麻烦,这里我们选用了electron-vue这个开源框架。它已经将两者结合起来,并且能够独立打包成web,但在使用过程中还是有些疑问和坑的,记录一下

electron-vue 的坑与填坑?

  1. 这个框架使用vue-electron模块,它的作用是什么?

    • 将 electron API 附加到 Vue 对象,不需要显式的在vue中引入electron(require('electron')
    • vue-electron源码很简单,将 $electron 挂载到vue的原型上
    const electron = require('electron')
    
    module.exports = {
         
      install: function (Vue) {
         
        Object.defineProperties(Vue.prototype, {
         
          $electron: {
         
            get () {
         
              return electron
            },
          },
        })
      },
    }
    
    
  2. 这个框架使用vuex-electron模块,它的作用是什么?

    • 可以在多个进程中间可以共享状态,比如在electron的主进程和渲染进程中公用一个状态,并将数据存放在磁盘中
  3. 在主进程中使用__dirname

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Electron和Flutter都是广泛用于开发桌面应用程序的工具,它们各自有着自己的优缺点。下面是它们的比较: ## Electron ### 优点: 1. 跨平台:Electron可以在不同的操作系统(Windows,macOS和Linux)上运行相同的代码,开发人员可以使用相同的技术栈来构建应用程序,这样可以节省时间和成本。 2. Web技术栈:Electron使用HTML,CSS和JavaScript作为其技术栈,这对于Web开发人员来说非常熟悉。这使得构建应用程序变得更加容易。 3. 社区支持:Electron是一个开源项目,拥有庞大的社区支持,这意味着开发人员可以获得丰富的文档,示例代码和第三方库。 ### 缺点: 1. 性能:由于Electron使用Web技术栈,它的性能可能会受到一定的影响。在某些情况下,这可能会导致应用程序运行速度变慢或消耗更多的系统资源。 2. 文件大小:Electron应用程序文件通常会比本机应用程序文件更大,这可能会导致一些用户对其不满意。 3. 学习曲线:虽然Electron使用Web技术栈,但它仍然需要一些桌面应用程序开发的特定知识。这意味着开发人员需要花费一些时间来学习这些知识。 ## Flutter ### 优点: 1. 性能:Flutter是一个本机应用程序开发框架,因此它可以提供更好的性能和更少的系统资源消耗。 2. 快速开发:Flutter使用了热重载技术,这使得开发人员可以快速地进行迭代和测试。 3. 界面美观:Flutter提供了美观的UI组件库和内置的动画效果,这使得开发人员可以轻松地创建漂亮的用户界面。 ### 缺点: 1. 学习曲线:虽然Flutter提供了许多美观的UI组件,但开发人员需要学习如何使用它们以及如何构建本机应用程序。这可能需要一些时间来掌握。 2. 可移植性:虽然Flutter可以用于多种平台(包括iOS,Android,Web和桌面),但某些功能可能仍不可用或存在平台限制。 3. 社区支持:虽然Flutter的社区正在迅速增长,但它仍然比Electron的社区小得多。这可能会导致在使用Flutter时缺少文档和示例代码等资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值