前言:最近在工作的时候,部门的老大跟我说项目是基于Electron开发的。一开始其实是很惊奇的,因为这个东西我好像连听都没听过。在惊讶一小会后,便开始慢慢适应。因为一想到又能学会一个东西,心里其实还是蛮开心的,因为这代表着接下来我又多了一个领域的笔记更新,后面就开始感觉也没啥。于是今天一天就开始了我的Electron学习之路。

1.简介

Electron 可以让你使用纯 JavaScript 调用丰富的原生 APIs 来创造桌面应用。你可以把它看作是专注于桌面应用而不是 web 服务器的,io.js 的一个变体。你能把它看作成一个被 JavaScript 控制的,精简版的 Chromium 浏览器。

2.主进程

在 Electron 里,运行 package.json 里 main 脚本的进程被称为主进程。在主进程运行的脚本可以以创建 web 页面的形式展示 GUI(main脚本主要负责页面的展示)

3.渲染进程

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

4.主进程与渲染进程的区别

主进程使用 BrowserWindow 实例创建网页。每个 BrowserWindow 实例都在自己的渲染进程里运行着一个网页。当一个 BrowserWindow 实例被销毁后,相应的渲染进程也会被终止。
主进程管理所有页面和与之对应的渲染进程。每个渲染进程都是相互独立的,并且只关心他们自己的网页。
注意在网页里管理原生 GUI 资源是非常危险而且容易造成资源泄露,所以在网页面调用 GUI 相关的 APIs 是不被允许的。如果你想在网页里使用 GUI 操作,其对应的渲染进程必须与主进程进行通讯,请求主进程进行相关的 GUI 操作。
在 Electron,我们提供用于在主进程与渲染进程之间通讯的 ipc 模块。并且也有一个远程进程调用风格的通讯模块 remote。

5.打造第一个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"
}

注意:如果 main 字段没有在 package.json 声明,Electron会优先加载 index.js
main.js 应该用于创建窗口和处理系统事件,具体例子如下:
当浏览器窗口全部关闭时:

var app = require('app');  // 控制应用生命周期的模块。
var BrowserWindow = require('browser-window');  // 创建原生浏览器窗口的模块// 保持一个对于 window 对象的全局引用,不然,当 JavaScript 被 GC,
// window 会被自动地关闭
var mainWindow = null;// 当所有窗口被关闭了,退出。此监听器在macOS上是禁止操作的
app.on('window-all-closed', function() {// 在 OS X 上,通常用户在明确地按下 Cmd + Q 之前// 应用会保持活动状态if (process.platform != 'darwin') {app.quit();}
});

完成初始化并且准备创建浏览器窗口时:

// 当 Electron 完成了初始化并且准备创建浏览器窗口的时候
// 这个方法就被调用
app.on('ready', function() {// 创建浏览器窗口。mainWindow = new BrowserWindow({width: 800, height: 600});// 加载应用的 index.htmlmainWindow.loadURL('file://' + __dirname + '/index.html');// 打开开发工具mainWindow.openDevTools();
});

当window窗口被关闭时:

// 当 window 被关闭,这个事件会被触发mainWindow.on('closed', function() {// 取消引用 window 对象,如果你的应用支持多窗口的话,// 通常会把多个 window 对象存放在一个数组里面,// 但这次不是。mainWindow = null;});

最终展示的index.html如下:

<!DOCTYPE html>
<html><head><title>Hello World!</title></head><body><h1>Hello World!</h1>We are using io.js <script>document.write(process.version)</script>and Electron <script>document.write(process.versions['electron'])</script>.</body>
</html>

6.运行

一旦你创建了最初的 main.jsindex.htmlpackage.json 这几个文件,你可能会想尝试在本地运行并测试,看看是不是和期望的那样正常运行。

6.1 electron-prebuild

如果你已经用 npm 全局安装了 electron-prebuilt,你只需要按照如下方式直接运行你的应用:

electron .

如果你是局部安装,那运行:

./node_modules/.bin/electron .
6.2 手工下载 Electron 二进制文件

如果你手工下载了 Electron 的二进制文件,你也可以直接使用其中的二进制文件直接运行你的应用。

6.3 Windows
$ .\electron\electron.exe your-app\
6.4 Linux
$ ./electron/electron your-app/
6.5 OS X
$ ./Electron.app/Contents/MacOS/Electron your-app/

Electron.app 里面是 Electron 发布包,你可以在这里下载到

7.版本发行

在完成了你的应用后,你可以按照应用部署指导发布一个版本,并且以已经打包好的形式运行应用。

8.小结

其实上面的这些东西都不是来自于官网,因为我发现目前的Electron目前没有做中文的国际化,这也就导致对于很多英文不好的小伙伴很不友好,于是本人就从w3c上面进行的学习。但是在w3c上的版本明显感觉是很早之前的版本,所以本人这里仅参考了前面的入门文档部分,至于后面的API肯定还得是依照官网来进行更新。最后祝自己加油啦,也祝各位小伙伴们能学到东西!!!

Electron--快速入门相关推荐

  1. 微软不会放弃Electron:Electron 快速入门及IPC 通信

    最近,有媒体推文说"微软要放弃Electron了",很多不明真相的群众被带偏了节奏:我刚学了Electron就要过时了吗?求真相!那么我们还要不要学Electron呢? 实际上:只 ...

  2. Electron开发之——快速入门

    一 概述 Electron是一个可以使用Web技术如:JavaScript.HTML和CSS来创建跨平台原生桌面应用的框架.借助Electron,我们可以使用纯JavaScript来调用丰富的原生AP ...

  3. Electron从入门到精通

    一,Electron 快速入门 1.简介 Electron是利用web前端技术进行桌面应用开发的一套框架,它是由Github开发的,利用HTML.CSS.JavaScript来构建跨平台桌面应用程序的 ...

  4. 快速入门electron之实现窗口拖拽

    看完本文你可学会 对于进程通信有基本的一个了解 学会自定义的顶部栏如何实现拖拽功能 前情提要 对于一些进程通信的基本demo可以去看下我的这个文章: 手把手带你快速入门Electron 实现拖拽功能 ...

  5. Electron 快速开始(一)-入门基础、使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序

    文章目录 Electron 快速开始(一)-入门基础.使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序 Electron简介 多进程模型​ Electron 快速开始 管理窗 ...

  6. docsify笔记 01:快速入门

    文章目录 目的 快速开始 多页文档与自定义侧边栏 自定义导航栏 设置封面 其它补充 docsify中的Markdown 加载 html / js / css 本地化使用 总结 目的 docsify 是 ...

  7. Shiro第一个程序:官方快速入门程序Qucickstart详解教程

    目录 一.下载解压 二.第一个Shiro程序 1. 导入依赖 2. 配置shiro配置文件 3. Quickstart.java 4. 启动测试 三.shiro.ini分析 四.Quickstart. ...

  8. 计算机入门新人必学,异世修真人怎么玩?新手快速入门必备技巧

    异世修真人怎么快速入门?最近新出来的一款文字修仙游戏,很多萌新不知道怎么玩?进小编给大家带来了游戏新手快速入门技巧攻略,希望可以帮到大家. 新手快速入门攻略 1.开局出来往下找婆婆,交互给点钱,旁边有 ...

  9. Spring Boot 2 快速教程:WebFlux 快速入门(二)

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘 ...

  10. Apache Hive 快速入门 (CentOS 7.3 + Hadoop-2.8 + Hive-2.1.1)

    2019独角兽企业重金招聘Python工程师标准>>> 本文节选自<Netkiller Database 手札> 第 63 章 Apache Hive 目录 63.1. ...

最新文章

  1. C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)
  2. 图片的多义现象和相互作用
  3. MyEclipse解决Launching xx on MyEclipse Tomcat has encountered a problem
  4. c语言作业帮,少训练大功课C语言
  5. JS 浏览器关闭事件
  6. 2009我的lamp之路
  7. android 中管理短信
  8. 无法将Mac键盘、Mac鼠标和mac控板连接到Mac电脑的解决方法、速看~
  9. c语言判断素数(质数)
  10. 简单数独的DFS求解
  11. 微信小程序 人脸识别登陆模块
  12. 百度地图javascriptAPI点击地图得到坐标(拾取坐标)
  13. 中介者(Mediator)模式--------------只有一个仲裁者
  14. 2019多用户商城系统如何选,国内主流B2B2C商城对比
  15. 容联云短信验证--java后台
  16. 认认真真推荐几个一线IT大佬的公众号,值得收藏
  17. oracle建表的时候同时创建主键,外键,注释,约束,索引
  18. 模拟设计的100条圣经(汉化版)
  19. Redis实战-类目操作
  20. Python3 源码安装

热门文章

  1. 用递归及非递归方式实现树状结构的遍历函数
  2. 爬虫学习:爬取京东图书
  3. AI伦理专家成立一个新的人工智能(AI)研究所 提供不同观点
  4. JavaScript 一些小妙用
  5. 无意看到的一篇文章,有我的影子
  6. 概念模型(conceptualDataModel)
  7. Cloud-Platform 开源项目环境搭建及运行
  8. linux cpu睿频,如何实现CPU单核睿频?
  9. 做跨境电商需要哪些准备?
  10. 2021年5月23日哈工大scir笔试