`

Electron指南 - 快速入门

 
阅读更多

快速入门

Electron提供了丰富的本地(操作系统)的API,使你能够使用纯JavaScript来创建桌面应用程序。与其它各种的Node.js运行时不同的是Electron专注于桌面应用程序而不是Web服务器。

这并不意味着Electron是一个绑定图形用户界面(GUI)的JavaScript库。取而代之的是,Electron使用Web页面作为它的图形界面,所以你也可以将它看作是一个由JavaScript控制的迷你的Chrominum浏览器。

主进程

在Electron里,运行package.json里的main脚本的进程被称为 主进程 ,运行在主进程里的脚本能够通过创建Web页面来显示GUI。

渲染进程

因为Electron使用Chrominum来显示Web页面,所以Chrominum的多进程架构也同样被使用。每个页面在Electron里是运行在自己的进程里,这些进程被称为 渲染进程 。

在浏览器里,Web页面通常运行在一个沙盒环境里,它不能访问本地的资源。但在Electron里,在Web页面中通过使用Node.js API可以进行底层的操作系统交互。

主进程与渲染进程的不同

主进程通过构造 BrowserWindow 实例来创建Web页面。每个 BrowserWindow 实例在自己的渲染进程里运行Web页面。当一个 BrowserWindow 被销毁后,相应的渲染进程也同样被终止。

主进程管理所有的Web页面以及相关的渲染进程。每个渲染进程都是互相隔离的,并且只知道运行在该进程里的Web页面。

在Web页面里,调用本地GUI是不允许的,因为在Web页面里管理本地GUI资源是非常危险的而且非常容易导致资源泄露。如果你想在Web页面进行GUI操作,该Web页面的渲染进程必须通过和主进程通信来请求主进程处理这些操作。

在Electron里,主进程和渲染进程有很多通信的方法。比如 ipcRanderer 和 ipcMain模块是用来发送消息的, remote 模块支持RPC风格的通信。可以参考FAQ里的 如何在不同的Web页面里共享数据

编写第一个Electron应用

通常,一个Electron应用的结构类似下面:

your-app/
├── package.json
├── main.js
└── index.html

package.json 的格式与Node的模块格式是一致的,其中 main 字段指定的脚本就是你应用的启动脚本,该脚本将运行在主进程中。你的 package.json 也许看上去像下面这个例子:

{
  "name"    : "your-app",
  "version" : "0.1.0",
  "main"    : "main.js"
}

注意 如果在 package.json 中的 main 字段没有指定,那么Electron将尝试装载一个名为 index.js 的脚本。

main.js 应当创建窗口并且处理系统事件,一个典型的例子如下:

const electron = require('electron');
// 控制应用生命周期的模块
const {app} = electron;
// 创建本地浏览器窗口的模块
const {BrowserWindow} = electron;

// 指向窗口对象的一个全局引用,如果没有这个引用,那么当该javascript对象被垃圾回收的
// 时候该窗口将会自动关闭
let win;

function createWindow() {
  // 创建一个新的浏览器窗口
  win = new BrowserWindow({width: 800, height: 600});

  // 并且装载应用的index.html页面
  win.loadURL(`file://${__dirname}/index.html`);

  // 打开开发工具页面
  win.webContents.openDevTools();

  // 当窗口关闭时调用的方法
  win.on('closed', () => {
    // 解除窗口对象的引用,通常而言如果应用支持多个窗口的话,你会在一个数组里
    // 存放窗口对象,在窗口关闭的时候应当删除相应的元素。
    win = null;
  });
}

// 当Electron完成初始化并且已经创建了浏览器窗口,则该方法将会被调用。
// 有些API只能在该事件发生后才能被使用。
app.on('ready', createWindow);

// 当所有的窗口被关闭后退出应用
app.on('window-all-closed', () => {
  // 对于OS X系统,应用和相应的菜单栏会一直激活直到用户通过Cmd + Q显式退出
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

app.on('activate', () => {
  // 对于OS X系统,当dock图标被点击后会重新创建一个app窗口,并且不会有其他
  // 窗口打开
  if (win === null) {
    createWindow();
  }
});

// 在这个文件后面你可以直接包含你应用特定的由主进程运行的代码。
// 也可以把这些代码放在另一个文件中然后在这里导入。

最后 index.html 则是你想要展示在窗口中:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Hello World!</title>
  </head>
  <body>
    <h1>Hello World!</h1>
    We are using node <script>document.write(process.versions.node)</script>,
    Chrome <script>document.write(process.versions.chrome)</script>,
    and Electron <script>document.write(process.versions.electron)</script>.
  </body>
</html>

运行你的应用

一旦你建立了你的 main.js , index.html , 以及 package.json 文件,你也许会想要尝试在本地运行应用来测试它,确保应用是按照你预期的方式工作。

electron-prebuilt

electron-prebuilt 是一个 npm 的模块,它包含了一个预编译的Electron版本。

如果你已经通过 npm 将该模块全局安装了,那么你只需要在你应用的源代码目录西下运行下面的命令:

electron .

如果你只是在本地安装了该模块,那么运行:

./node_modules/.bin/electron .

手动下载Electron二进制包

如果手动下载了Electron二进制包,你可以通过执行其中包含的二进制文件来直接执行你的应用。

Windows

$ .\electron\electron.exe your-app\

Linux

$ ./electron/electron your-app/

OS X

$ ./Electron.app/Contents/MacOS/Electron your-app/

这里的 Electron.app 是Electron发布包的一部分,你可以在 这里 下载。

运行发布

在完成应用开发之后,你可以按照 应用发布 指导创建一个发布,然后执行打包的应用。

尝试例子

通过使用 atom/electron-quick-start 来克隆并且运行教程的代码。

注意 运行该例子需要在你的系统中安装 Git 以及 Node.js (它也包含了 npm )。

# 克隆仓库
$ git clone https://github.com/electron/electron-quick-start
# 进入克隆的仓库
$ cd electron-quick-start
# 安装依赖然后运行应用
$ npm install && npm start

 

分享到:
评论

相关推荐

    electron-quick-start_Quick_yesg8y_js_客户端_

    Electron Quick Start 指南是入门 Electron 应用开发的绝佳资源,尤其对于那些熟悉 JavaScript (js) 并希望通过 Electron 和 Node.js 构建桌面应用程序的开发者而言。Electron 是一个开源框架,它允许开发者使用 web...

    electron入门.pptx

    Electron 入门指南 Electron 是一个由 Github 开发的开源框架,允许开发者使用 Web 技术构建跨平台的桌面应用。它利用 Chromium 浏览器提供强大的 UI 能力,让开发者可以不考虑兼容性的情况下,利用强大的 Web 生态...

    electronquick实现在一个Electron窗口中快速加一个脚本

    描述 "electron-quick 实现在一个Electron窗口中快速加一个脚本" 提到的"electron-quick"可能是项目的名字或者一个快速入门指南,旨在帮助开发者快速了解如何在Electron窗口中添加和运行脚本。 接下来,我们将详细...

    electron-resource.zip electron学习资源

    1. **入门教程**:这些教程通常以文章或视频的形式,介绍如何设置开发环境,创建第一个Electron应用,以及如何组织和运行代码。它们会解释`main`进程(Node.js进程,负责管理应用程序的生命周期)和`renderer`进程...

    electron-vue-next:将vue-next与电子结合使用的入门模板

    概述该存储库包含用于将vue-next与最新电子一起使用的入门模板。 我开始通过伟大的计划学习电子和 。 这个项目也从中得到启发。 您可以在查看文档。同样,我们也有。特征电子11 遵循电子指南,使渲染器仅在浏览器...

    桌面应用电子版完整开发人员指南-Part 3

    《桌面应用电子版完整开发人员指南-Part 3》聚焦于使用Electron框架构建桌面应用程序。Electron是一个开源框架,由GitHub开发,它允许开发者使用Web技术(如HTML、CSS和JavaScript)创建跨平台的桌面应用程序。在这...

    Fiddle入门使用Electron的最简单方法

    **Electron Fiddle入门指南** Electron Fiddle是一款强大的工具,专为JavaScript开发者设计,用于探索和构建基于Electron框架的小型应用。Electron是一个开源平台,它允许开发者使用Web技术(HTML、CSS和JavaScript...

    Electron入门示例

    标签 "源码" 和 "工具" 提示我们,这个示例不仅是一个学习资源,也是一个实用的开发工具,可以帮助开发者快速上手Electron开发。 压缩包内的文件列表: 1. `index.html` - 这通常是Electron应用的主界面文件,用...

    realm-electron-advanced-quickstart:使用MongoDB Realm创建Electron应用程序以及从多个进程写入Realm的高级指南

    领域电子高级快速入门 描述 该存储库说明了如何从渲染器和主进程写入已同步的领域。 main.js文件是Electron主进程。 renderer.js是Electron渲染器进程。 要将更改同步到远程领域,请使用Realm.open()语法在主进程上...

    Node.js-Electron的官方文档的中文翻译

    1. **快速入门**:介绍如何搭建开发环境,编写第一个Electron应用,以及运行和打包应用的基本步骤。 2. **API文档**: - **主进程**:讲解Electron中的主进程,即运行Node.js代码的部分,负责管理应用生命周期和与...

    electron-cse-hackoverflow-engagement

    这些模板是Electron应用程序开发人员的入门指南。 贡献 该项目欢迎您的贡献和建议。大多数捐款要求您同意一份《捐款者许可协议》(CLA),声明您有权并实际上授予我们使用您的捐款的权利。有关详细信息,请访问 。 ...

    electron.zip

    标题中的"electron.zip"指的是一个使用 Electron 框架创建的桌面应用的压缩包文件。...通过学习和使用 Electron,开发者可以轻松地构建功能丰富的桌面应用,无论你是前端开发者还是对 Node.js 有所了解,都能快速入门。

    Electron in Action

    - **第 1 章:Electron 入门** —— 介绍 Electron 的基本概念、工作原理以及安装配置流程。 - **第 2 章:创建第一个 Electron 应用程序** —— 通过构建简单的示例应用来熟悉 Electron 的核心组件和架构。 - **...

    electron中文文档

    **快速入门** - **安装与配置**:确保安装了 Node.js 并配置好开发环境。 - **创建项目**:使用 npm 初始化一个新的项目,并添加必要的依赖包。 - **编写代码**:根据需求设计应用程序的界面和逻辑。 - **运行应用*...

    basic-example-electron-app:一个使用Keygen进行许可证密钥验证的简单电子应用程序示例

    它基于Electron文档中的《快速入门指南》。 有关更高级的用户配置文件许可设置以及有关如何使用Keygen自动更新的,请查看。 将此应用程序与应用程序结合使用以获取API代码示例,以帮助您入门。 基本的Electron...

    Manning.Electron.in.Action

    8. 书籍的简要目录内容,表明它被分为两个主要部分:第一部分是关于Electron的入门指南,第二部分涉及到使用Electron构建跨平台应用程序。其中,提到了创建笔记应用、使用本地文件对话框、多窗口应用开发和文件操作...

    electron:一个简单的 node.js 命令行界面框架

    这个“快速入门指南”和完整的 API 参考可以在。 安装 electron包可通过。 建议您将其添加到项目的package.json 。 npm install electron 解析参数 参数解析实用程序可以独立于程序框架使用。 只需从任何节点模块...

    OIM分析指南,适用于新手入门

    OIM分析指南,适用于新手入门 本资源提供了OIM(Orientation Imaging Microscopy,定向成像显微镜)分析指南,旨在帮助新手入门学习OIM分析技术。该指南涵盖了基本的OIM分析步骤,从加载数据集到创建地图、确定晶粒...

    Javascript入门指南(英文版)

    ### JavaScript入门指南知识点详解 #### 一、书籍概述与作者介绍 《JavaScript入门指南》(第三版)是一本面向初学者的JavaScript学习手册。本书旨在为刚接触JavaScript的学习者提供全面且深入的基础知识,帮助...

    ElectronFloatingScreen:电子浮屏电子教程

    入门首先,按照Electron的官方指南,建议我们从其样板开始: 让我们克隆并构建基本的Electron项目: git clone https://github.com/electron/electron-quick-start 移至根目录: cd electron-quick-start 安装依赖项...

Global site tag (gtag.js) - Google Analytics