Electron 快速入门

=Start=

缘由:

学习了解一下Electron是什么,能做什么,代码该怎么写,方便以后参考。

正文:

参考解答:
1、Electron是什么?

Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库。Electron通过将ChromiumNode.js合并到同一个运行时环境中,并将其打包为Mac,Windows和Linux系统下的应用来实现这一目的。

2、Electron能做什么?

Electron 可以让你使用纯 JavaScript 调用丰富的原生(操作系统) APIs 来创造桌面应用。你可以把它看作一个 Node. js 的变体,它专注于桌面应用而不是 Web 服务器端。

这不意味着 Electron 是某个图形用户界面(GUI)库的 JavaScript 版本。 相反,Electron 使用 web 页面作为它的 GUI,所以你能把它看作成一个被 JavaScript 控制的,精简版的 Chromium 浏览器。

3、Electron应用的开发

①开发环境准备

②代码目录结构

从开发的角度来看, Electron application 本质上是一个 Node. js 应用程序。 与 Node.js 模块相同,应用的入口是 package.json 文件。一个最基本的 Electron 应用一般来说会有如下的目录结构:

③Demo应用开发

为你的新Electron应用创建一个新的空文件夹。 打开你的命令行工具,然后在该文件夹下运行npm init命令:

该 npm init 命令会帮助你创建一个基本的 package.json 文件。其中的 main 字段所表示的脚本为应用的启动脚本,它将会在主进程中执行。 如下片段是一个 package.json 的示例:

下面是一个简单的main.js文件,它将在应用程序准备就绪后打开一个窗口,同时打开开发者工具,并添加上处理窗口关闭事件、在macOS用户点击dock上图标时重建窗口的逻辑:

然后,创建你想展示的 index.html

在创建并初始化完成 main.js、 index.htmlpackage.json之后,您就可以在当前工程的根目录执行 npm start 命令来启动刚刚编写好的Electron程序了。


一些简单的知识点和注意事项:

主进程&渲染进程
  • 在 Electron 里,运行 package.json 里 main 脚本的进程被称为主进程
  • 由于 Electron 使用 Chromium 来展示页面,所以 Chromium 的多进程结构也被充分利用。每个 Electron 的页面都在运行着自己的进程,这样的进程我们称之为渲染进程。在一般浏览器中,网页通常会在沙盒环境下运行,并且不允许访问原生资源。然而,Electron 用户拥有在网页中调用 io.js 的 APIs 的能力,可以与底层操作系统直接交互。
主进程和渲染进程的区别

主进程使用 BrowserWindow 实例创建网页。每个 BrowserWindow 实例都在自己的渲染进程里运行着一个网页。当一个 BrowserWindow 实例被销毁后,相应的渲染进程也会被终止。

主进程管理所有页面和与之对应的渲染进程。每个渲染进程都是相互独立的,并且只关心他们自己的网页。

由于在网页里管理原生 GUI 资源是非常危险而且容易造成资源泄露,所以在网页面调用 GUI 相关的 APIs 是不被允许的。如果你想在网页里使用 GUI 操作,其对应的渲染进程必须与主进程进行通讯,请求主进程进行相关的 GUI 操作。

在 Electron,我们提供用于在主进程与渲染进程之间通讯的 ipc 模块。并且也有一个远程进程调用风格的通讯模块 remote

低版本Electron不支持loadFile

1.x2.xelectron中,如果要使用loadFile函数,就会报错unknown function。所以如果想用这个函数的话,需要更新到 3.x 及以后版本的 Electron 。

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/4591.html

《Electron 快速入门》上有4条评论

  1. 用Nodejs开发桌面应用。NW.js 和 Electron 各有什么优缺点,你选择哪个?
    https://www.zhihu.com/question/38854224

    我们最近有个项目需要使用Node桌面版技术,正如大多数人一样,我的初次选型是NW,那么出乎意料,大坑来了!!!

    倘若你的桌面版应用没有跟底层(C++模块)挂钩,也就是没有使用到消息推送、版本升级、打印功能之类的东西,但是bug还是挺多的。并且一旦使用到这些功能,你就彻底调到坑里了,nw有个致命的缺陷在于所有的非javascript编写的模块都需要重新用nw-gyp重新编译一下,这个编译的过程会出现各种各样的问题。而Electron几乎可以使用所有的node模块,只需要node-gyp编译的即可。主要深坑就在这!!!还有,NW不像Electron自带版本升级。

    nw唯一的好处是啥?兼容window XP呗。

    http://tangiblejs.com/posts/nw-js-electron-compared

  2. 怎么去阅读Chromium的源码?
    https://www.zhihu.com/question/306408034/answer/565791530

    从初学者角度的话,如果是刚开始研究chromium,建议找个老版本chromium来看。新版太大太复杂了。我建议从github搜下 chromium.bb 这个项目,是个chromium49的删减版。之所以推荐这个,有几个原因:

    0,工程环境比原版chromium好搭多了,不用翻墙,不用改一些系统设置。90%的初学者我估计卡在搭chromium环境这了,尤其是国内。。
    1,代码量相对较小,所以直接可以生成vs工程后配合vax的代码着色和智能跳转阅读。有VAX辅助,对于查找函数具体位置有很大帮助。
    2,同样由于代码量小,你可以用vs直接编译跑起来。阅读chromium代码你一定要调试,否则很难理清某个流程。

    搭好环境后,建议你疯狂搜下网上讲解chromium架构的文章预热一下。否则你会不知所云。先把chromium的进程架构了解下,大概每个进程是做什么的,然后开始研究content层,这是chromium最主要的层,负责连接所有其他组件。

    其他具体架构细节以后想到再写……

    Chromium
    https://www.zhihu.com/topic/19557071/top-answers

发表评论

电子邮件地址不会被公开。 必填项已用*标注