前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >electron快速使用(二)

electron快速使用(二)

原创
作者头像
言志志
发布2024-05-06 10:25:29
1200
发布2024-05-06 10:25:29
举报
文章被收录于专栏:JSJS

前言

此文是个人学习归纳的记录,腾讯云首发,未经允许,严禁转载,如有不对, 还望斧正, 感谢!

最近用到了electron, 顺便归纳一下,站在巨人的肩膀上。

将网页装载到 BrowserWindow

在 Electron 中,每个窗口展示一个页面,后者可以来自本地的 HTML,也可以来自远程 URL。 在本例中,我们将会装载本地的文件。 在我们项目的根目录中创建一个 index.html 文件,并写入下面的内容:

代码语言:javascript
复制
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
    <meta
      http-equiv="Content-Security-Policy"
      content="default-src 'self'; script-src 'self'"
    />
    <meta
      http-equiv="X-Content-Security-Policy"
      content="default-src 'self'; script-src 'self'"
    />
    <title>Hello from Electron renderer!</title>
  </head>
  <body>
    <h1>Hello from Electron renderer!</h1>
  </body>
</html>

现在有了一个网页,可以将它装载到 Electron 的 BrowserWindow 上了。 将 main.js 中的内容替换成下列代码。 我们马上会逐行解释。

main.js

代码语言:javascript
复制
const { app, BrowserWindow } = require('electron')
​
const createWindow = () => {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
  })
​
  win.loadFile('index.html')
}
​
app.whenReady().then(createWindow)

4.1 导入模块

main.js (Line 1)

代码语言:javascript
复制
const { app, BrowserWindow } = require('electron')

在第一行中,我们使用 CommonJS 语法导入了两个 Electron 模块:

  • app,它控制应用的事件生命周期。
  • BrowserWindow,它负责创建和管理应用的窗口。

在 ELECTRON 中使用 ES 语法 Electron 目前对 ECMAScript 语法 (如使用 import 来导入模块) 的支持还不完善。 我们可以在 electron/electron#21457 这个 issue 中查看 ESM 的适配进展。

4.2 将可复用的函数写入实例化窗口

createWindow() 函数将我们的页面加载到新的 BrowserWindow 实例中:

main.js (Lines 3-10)

代码语言:javascript
复制
const createWindow = () => {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
  })
​
  win.loadFile('index.html')
}

4.3 在应用准备就绪时调用函数

main.js (Lines 12-14)

代码语言:javascript
复制
app.whenReady().then(createWindow)

Electron 的很多核心模组是 Node.js 事件触发器,遵守 Node.js 的异步事件驱动架构。 app 模块就是其中一个。

在 Electron 中,只有在 app 模组的 ready 事件能触发后才能创建 BrowserWindows 实例。 我们可以借助 app.whenReady() API 来等待此事件,并在该 API 的 promise 被 resolve 时调用 createWindow() 方法。

提醒 通常我们使用触发器的 .on 函数来监听 Node.js 事件。 + app.on('ready').then(() => { - app.whenReady().then(() => { createWindow() }) 但是 Electron 暴露了 app.whenReady() 方法,作为其 ready 事件的专用监听器,这样可以避免直接监听 .on 事件带来的一些问题。 参见 electron/electron#21972

此时,运行 start 命令应该能成功地打开一个包含我们网页内容的窗口

应用中的每个页面都在一个单独的进程中运行,我们称这些进程为 渲染器 (renderer) 。 渲染器也能访问前端开发常会用到的 API 和工具,例如用于打包并压缩代码的 webpack,还有用于构建用户界面的 React

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 将网页装载到 BrowserWindow
    • 4.1 导入模块
      • 4.2 将可复用的函数写入实例化窗口
        • 4.3 在应用准备就绪时调用函数
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档