Electron实现第一个应用 "hello world"
2019-06-22 20:31 龙恩0707 阅读(1347) 评论(0) 编辑 收藏 举报一. 什么是Electron? 它和NW.js的区别是什么?
Electron是GitHub开发的桌面应用开发框架,它支持使用HTML、CSS、JavaScript来构建跨平台的桌面应用。
Electron和NW.js(NW.js是什么可以百度下)的区别是:
1. 整合Chromium 和 Node.js的方式不同。
在NW.js中,Chromium是直接被打补丁打进去的。因此 Node.js 和 Chromium 共享了同一个javascript上下文。
在Electron中,它不是以补丁的形式将Chromium整合进去的。而是通过Chromium的Content API 以及使用了 Node.js的node_bindings。
在NW.js中它维护一个共享的javascript上下文。而在 Electron中它有多个独立的javascript上下文(比如:它有一个后端的main进程,作用是负责启动运行应用的视窗,另一个是renderer进程,它是负责具体的应用视窗)。
2. 入口文件不同。
NW.js 一般是使用HTML作为入口文件,而Electron使用的是javascript作为入口文件。Electron将加载的应用视窗的职责委派给javascript。
二. Electron的应用场景有哪些?
1. Slack: 它是一款企业沟通协作工具,那么我们可以使用 Electron来做这方面的事情。并且可以支持音频或视频功能等。
2. Light Table: 它是一款代码编辑器,我们也可以使用Electron做代码编辑器的桌面应用程序。
3. Game Dev Tycoon: 它是一款模拟类游戏,也可以使用做游戏相关的产品。
4. Gitter: 它是一种服务,它为GitHub上的开源项目提供聊天室的功能。它可以让用户使用其Github账号登录,然后访问项目或组织的聊天室。
5. Macaw: 他是一款创新的所见即所得的web设计工具。它可以让web设计师直接为他们的网站做视觉设计,在以前,他们都要先在图片编辑软件中做好,然后再生成对应的HTML和CSS代码,现在我们可以使用该工具直接生成网站代码。省去了将视觉设计稿转成网站这一步。但是它和我们以前的Dreamweaver不同的是,它可以直接生成语义化的HTML和CSS代码。
三. 使用Electron先来实现一个简单的 "hello world" 应用程序
要使用 Electron的话,首先我们需要安装该插件包,我们可以使用npm来安装它,安装命令如下:
npm install -g electron
如上安装完成后,我们来看看 一个 electron应用需要包含如下三个文件:
|------ electron-demo | |--- index.html | |--- main.js | |--- package.json
package.json 基本代码如下:
{ "name": "hello-world", "version": "1.0.0", "description": "", "main": "main.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
如上 在electron中入口文件就是main.js, 默认是以js文件作为入口文件的,它以NW.js的区别是:NW.js 是以html文件作为入口的。
main.js 代码如下:
'use strict'; // 引入 electron模块 const electron = require('electron'); // 创建 electron应用对象的引用 const app = electron.app; const BrowserWindow = electron.BrowserWindow; // 定义变量 对应用视窗的引用 let mainWindow = null; // 监听视窗关闭的事件(在Mac OS 系统下是不会触发该事件的) app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit(); } }); // 将index.html 载入应用视窗中 app.on('ready', () => { /* 创建一个新的应用窗口,并将它赋值给 mainWindow变量。 */ mainWindow = new BrowserWindow(); // 载入 index.html 文件 mainWindow.loadURL(`file://${__dirname}/index.html`); // 当应用被关闭的时候,释放 mainWindow变量的引用 mainWindow.on('closed', () => { mainWindow = null; }); });
index.html 代码如下:
<html> <head> <title>Hello World</title> </head> <style> body { background-image: linear-gradient(45deg, #ead790 0%, #ef8c53 100%); text-align: center; } button { background: rgba(0, 0, 0, 0.40); box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.5); border-radius: 8px; color: white; padding: 10px 20px; border: none; font-family: 'Roboto', sans-serif; font-size: 14px; position: relative; top: 40%; cursor: pointer; outline: none; } button:hover { background: rgba(0, 0, 0, 0.3); } </style> <body> <button onclick="sayHello()">Say Hello</button> <script type="text/javascript"> function sayHello() { alert('Hello world'); } </script> </body> </html>
如上代码编写完成后,我们现在就可以来通过命令运行该应用程序了。我们先进入我们项目中的根目录下,然后执行如下命令即可:
electron .
如下图所示:
运行完成后,会打开一个视窗口,当我们单击应用程序中的按钮时候,会弹出窗口,如下图所示:
Electron还有如下特性:
1. 支持创建多视窗,而且每个视窗都有自己独立的javascript上下文。
2. 通过shell和screen API 整合了桌面操作系统的特性。
3. 支持获取计算机电源状态。
4. 支持阻止操作系统进入省点模式。(对于演示文稿比较有用)
5. 支持创建托盘应用。
6. 支持创建菜单和菜单项。
7. 支持为应用更新来自动更新应用代码。
8. 支持汇报程序崩溃。
9. 支持自定义Dock菜单项。
10.支持操作系统通知。
11.支持为应用创建启动安装器。