是什么?
- Electron是由Github开发,用HTML,CSS和java script来构建跨平台桌面应用程序的一个开源库。
- Electron通过将Chromium和Node.js合并到同一个运行时环境中,并将其打包为Mac,Windows和Linux系统下的应用来实现这一目的。
为什么选择electron?
先来看一下官方的两句话
使用 java script, HTML 和 CSS 构建跨平台的桌面应用
如果你可以建一个网站,你就可以建一个桌面应用程序。 Electron 是一个使用 java script, HTML 和 CSS 等 Web 技术创建原生程序的框架,它负责比较难搞的部分,你只需把精力放在你的应用的核心上即可。
如果你是一个前端,你就明白这个有多简单了
哦,对了!或许你还不知道,Visual Studio Code
、wordpress
和 slack
等客户端都是基于 Electron 开发的。
1.可以用 Web 前端技术开发跨平台的桌面客户端
这是 Electron 最迷人的地方,究其根本是因为它是建立在 Chromium
和 Node
之上的,一个负责界面,一个负责背后的逻辑,有句话怎么说来着 你负责貌美如花,我负责赚钱养家
,所以Electron 能够开发跨平台的桌面应用也就可以理解了。
作为一名前端小菜鸟来说:
- 可以用自己熟悉的方式去写应用界面,ps: 不要和我说什么java、c语言,鄙人行走江湖就一把js,遇到需求就是干,学好js,走遍天下都不怕(????)
- 逻辑部分也还是 JS,如果你精通 Node ,那就更好了,后端也一并写了,ps: sorry,会js就是无所不能,我不是针对某个语言,我是说在座的所有,都是。。。(开玩笑,不要打我╥﹏╥...)
so,一个 Web 前端开发者可以花很少的成本去上手 Electron,而相比于以前开发多平台客户端的成本,利用 ELectron 开发多平台客户端的成本是极低的
2.可以从 Node 的生态获得极大的助力
因为 Electron 是基于 Node 的,意味着,Node 这个大生态下的模块,Electron 也都可以用,这减少了很多造轮子的时间,你要写一些逻辑将首先思考有没有成熟的模块可以引入,而不是自己吭哧吭哧闭门造车,自己造时间精力会大量得被消耗,上路还可能翻车。
3.为什么需要客户端?
既然 Electron 是用 Web 技术写客户端,那么看上去 Electron 要做的事,可以搬到网站上,为什么还要搬到客户端,这里有3个角度的回答:
- 用户角度: 客户端是一款独立的软件,其综合体验一般都是比网站高的,尤其是涉及到「工具」范畴的应用,此外,特定的用户群体也会有类似的使用习惯
- 发行方角度: 客户端是另一种产品形式,是一种产品的分发方式和入口,客户端可以实现很多本地应用独有的需求去触达用户,也能提供更加可靠的服务
- 开发角度: 终于...不用考虑浏览器兼容了!!!,Chromium 也足够开发使用一些先进的 CSS 或 JS 特性,我们现在还没计划引入 webpack 和 babel,因为现在好像够用,克制才是爱,除了写起来爽,对于开发来说,终于跳出了浏览器的沙盒,你可以自己去控制 Electron 中的「浏览器」,莫名的开心
这些综合起来回答这个小节的问题就是,用 Electron 开发客户端,用户体验好,开发麻烦小,功能更强大,世界更和平~~~
怎么用?
从开发的角度来看, Electron application 本质上是一个 Node. js 应用程序。 与 Node.js 模块相同,应用的入口是 package.json 文件。 一个最基本的 Electron 应用一般来说会有如下的目录结构:
your-app/
├── package.json
├── main.js
└── index.html
为你的新Electron应用创建一个新的空文件夹。 打开你的命令行工具,然后从该文件夹运行npm init
npm init
npm 会帮助你创建一个基本的 package.json
文件。 其中的 main
字段所表示的脚本为应用的启动脚本,它将会在主进程中执行。 如下片段是一个 package.json
的示例:
{
"name": "your-app",
"version": "0.1.0",
"main": "main.js"
}
注意:如果 main
字段没有在 package.json
中出现,那么 Electron
将会尝试加载 index.js 文件(就像 Node.js 自身那样)。 如果你实际开发的是一个简单的 Node 应用,那么你需要添加一个 start
脚本来指引 node
去执行当前的 package:
{
"name": "your-app",
"version": "0.1.0",
"main": "main.js",
"scripts": {
"start": "electron ."
}
}
安装 Electron
现在,您需要安装electron
。 我们推荐的安装方法是把它作为您 app 中的开发依赖项,这使您可以在不同的 app 中使用不同的 Electron 版本。 在您的app所在文件夹中运行下面的命令:
npm install --save-dev electron
开发一个简易的 Electron
Electron apps 使用java script开发,其工作原理和方法与Node.js 开发相同。 electron模块包含了Electron提供的所有API和功能,引入方法和普通Node.js模块一样:
const electron = require('electron')
electron
模块所提供的功能都是通过命名空间暴露出来的。 比如说: electron.app
负责管理Electron 应用程序的生命周期, electron.BrowserWindow
类负责创建窗口。 下面是一个简单的main.js
文件,它将在应用程序准备就绪后打开一个窗口:
const { app, BrowserWindow } = require('electron')
function createWindow () {
// 创建浏览器窗口
let win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
})
// 加载index.html文件
win.loadFile('index.html')
}
app.on('ready', createWindow)
您应当在 main.js
中创建窗口,并处理程序中可能遇到的所有系统事件。 下面我们将完善上述例子,添加以下功能:打开开发者工具、处理窗口关闭事件、在macOS用户点击dock上图标时重建窗口,添加后,main. js
就像下面这样:
const { app, BrowserWindow } = require('electron')
// 保持对window对象的全局引用,如果不这么做的话,当java script对象被
/