Electron 开始

因公司发展需要,“可能需要“桌面应用,所以只能默默先了解一下

当前学习版本 Electron v1.8.3

背景知识

Electron是由Github开发,主要竞争nw.js;然而nw和electron 出自同一个人之手。

与nw.js的主要差异

1. 程序的入口

在NW.js中,应用的主入口是网页或者JS脚本。 你需要在package.json中指定一个html或者js文件,一旦应用的主窗口(在html作为主入口点的情况下)或脚本被执行,应用就会在浏览器窗口打开。

在 Electron 中,入口是一个 JavaScript 脚本。 不同于直接提供一个URL,你需要手动创建一个浏览器窗口,然后通过 API 加载 HTML 文件。 你还可以监听窗口事件,决定何时让应用退出。

Electron 的工作方式更像 Node.js 运行时。 Electron 的 APIs 更加底层,因此你可以用它替代 PhantomJS 做浏览器测试。

2. 构建系统

为了避免构建整个 Chromium 带来的复杂度,Electron 通过 libchromiumcontent 来访问 Chromium 的 Content API。 libchromiumcontent 是一个独立的、引入了 Chromium Content 模块及其所有依赖的共享库。 用户不需要一个强劲的机器来构建 Electron。

3. Node 集成

在 NW.js,网页中的 Node 集成需要通过给 Chromium 打补丁来实现。但在 Electron 中,我们选择了另一种方式:通过各个平台的消息循环与 libuv 的循环集成,避免了直接在 Chromium 上做改动。 你可以查看 node_bindings 来了解这是如何完成的。

4. 多上下文语境

如果你是有经验的 NW.js 用户,你应该会熟悉 Node 上下文和 web 上下文的概念。这些概念的产生源于 NW.js 的实现方式。

通过使用Node的multi-context(多上下文)特性,Electron不需要在网页中引入新的Javascript上下文。

注意: 自从 0.13 以来,NW.js 选择性支持多上下文。

支持情况

macOS
对于 macOS 仅提供64位版本,并且只支持 macOS 10.9 或更高版本。

Windows
仅支持 Windows 7 或更高版本, 旧版操作系统已不再支持(并且无法运行).

对于 Windows 提供 ia32 (x86) 和 amd64 (x64) 版本。需要注意的是 ARM 版本的 Windows 目前尚不支持。

Linux
Electron 的 ia32 (i686) 和 x64 (amd64) 预编译版本均是在Ubuntu 12.04 下编译的,arm 版的二进制文件是在 ARM v7(硬浮点 ABI 与 Debian Wheezy 版本的 NEON)下完成的。

原理分析

在通常的浏览器内,网页通常运行在一个沙盒的环境挡住并且不能够使用原生的资源。 然而 Electron 的用户在 Node.js 的 API 支持下可以在页面中和操作系统进行一些底层交互。

Electron 可以依靠 JavaScript 来调用丰富的原生 API 来创造桌面应用(类似react-native的 原生 android ios 开发,底层的调用依靠封装好的API)。 感觉更像一个个性化定制的浏览器应用,(JavaScript 控制的 Chromium 浏览器。)

你可能感兴趣的:(Electron)