Electron 企业级应用开发实战(二)

本文介绍了Electron应用开发中的关键点,包括集成Node.js以访问操作系统API,使用preload脚本确保安全,理解主进程和渲染进程的角色,以及实现进程间通信的方法。文章通过实例展示了如何在渲染进程中调用主进程的API,同时探讨了上下文隔离的重要性,以避免全局变量污染。
摘要由CSDN通过智能技术生成

这一讲会重点介绍如何集成 Node.js、使用 preload 脚本、进程间双向通信、上下文隔离等,为大家揭开 Electron 更强大的能力。

集成 Node.js

企业级桌面应用的资源都是本地化的,离线也能使用,所以需要把 html、js、css 这些资源都打包进去,接下来我们就在 src/renderer 目录下创建 index.html 和 index.js 两个文件:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>Electron Desktop</title></head><body><p id="platform">操作系统:</p><p id="release">版本号:</p><script src="./index.js"></script></body>

</html> 

然后在创建窗口函数里面把用 loadURL 加载网页的代码换成 loadFile 加载本地文件:

function createWindow() {mainWindow = new BrowserWindow({ width: 800, height: 600 })mainWindow.loadFile(path.join(__dirname, '../renderer/index.html'))
} 

这样就可以加载本地 HTML 文件了,接下来要实现本节第一个需求:

  • 获取用户当前操作系统及其版本号并展示在页面上

传统的 Web 网页运行在浏览器沙箱环境里面,没有能力调用操作系统 API,但是 Electron 就不一样了,它支持在 Web 中执行 Node.js 代码。不过这个能力默认是不开启的,要想使用这个能力,必须在创建窗口的时候指定两个参数:

  • nodeIntegration: true:开启 node.js 环境集成
  • contextIsolation: false:关闭上下文隔离
function createWindow() {mainWindow = new BrowserWindow({width: 800,height: 600,webPreferences: {nodeIntegration: true,contextIsolation: false,},})mainWindow.loadFile(path.join(__dirname, '../renderer/index.html'))
} 

然后就可以在 src/renderer/index.js 中调用 node.js 的方法:

const os = require('os')
const platform = os.platform()
const release = os.release()
document.getElementById('platform').append(platform)
document.getElementById('release').append(release) 

运行程序会发现操作系统和版本号已经显示出来了:

使用 preload 脚本

直接在网页上调用 node.js 的 API 虽然很爽,但是风险极大,尤其是加载一个第三方的 Web 页面的时候,可能会被植入恶意脚本(例如调用 fs 模块删除文件等)。因此,Electron 官方不推荐开启 nodeIntegration,而是建议大家使用加载 preload 脚本的方式:

function createWindow() {mainWindow = new BrowserWindow({width: 800,height: 600,webPreferences: {nodeIntegration: false, // 不开启 node 集成preload: path.join(__dirname, '../preload/index.js'), // 在 preload 脚本中访问 node 的 API},})mainWindow.loadFile(path.join(__dirname, '../renderer/index.html'))
} 

preload 脚本是特殊的 JS 脚本,由 Electron 注入到 index.html 当中,会早于 index.html 文件中引入的其他脚本,而且它有权限访问 node.js 的 API,无论用户是否开启了 nodeIntegration。我们把 src/renderer/index.js 的内容删除,改成仅打印一行文字:

console.log('renderer index.js') 

然后在 src 目录下新增 prel

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 Electron 项目的开发实战,有很多方面需要考虑,包括项目的结构、界面设计、数据处理等。以下是一些常见的实践建议: 1. 项目结构:创建一个清晰的项目结构,将主进程和渲染进程的代码分开放置,并使用合适的模块化方式组织代码。可以使用一些现有的脚手架工具来快速生成项目结构。 2. 界面设计:使用现代化的前端技术(如 HTML、CSS 和 JavaScript)来开发界面。可以考虑使用流行的前端框架(如 React、Vue.js)来简化界面开发,并且可以借助 Electron 提供的 IPC(进程间通信)机制在主进程和渲染进程之间进行通信。 3. 数据处理:根据项目需求选择合适的数据处理方案。如果需要持久化存储数据,可以使用 Electron 提供的 API(如 fs 模块)进行文件操作,或者考虑使用数据库(如 SQLite、MongoDB)进行数据管理。 4. 调试与测试:在开发过程中,可以使用 Electron 提供的调试工具来帮助定位问题。另外,编写单元测试和集成测试也是保证代码质量的重要手段。 5. 打包与发布:完成开发后,需要将项目打包为可执行文件并进行发布。可以使用 Electron 提供的打包工具(如 electron-builder)将项目打包成适用于不同平台的安装包。 总之,开发 Electron 项目需要掌握前端技术、Electron 的相关 API 使用方法,并且在项目开发过程中注重代码质量和用户体验。希望这些实践建议能对你有所帮助!如果还有其他问题,欢迎继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值