Electron实现第一个应用 "hello world"
一. 什么是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.支持为应用创建启动安装器。
Electron实现第一个应用 "hello world"的更多相关文章
- Electron-使用Electron开发第一个应用
使用Electron开发第一个应用 Electron 应用的目录结构如下: app/ ├── package.json ├── main.js └── index.html 新建一个app文件夹 将这 ...
- Electron 入门第一篇
官网:http://electronjs.org/docs/tutorial/application-architecture 转载:https://blog.csdn.net/qq_33323731 ...
- (译)通过 HTML、JS 和 Electron 创建你的第一个桌面应用
原文:Creating Your First Desktop App With HTML, JS and Electron 作者:Danny Markov 近年来 web 应用变得越来越强大,但是桌面 ...
- 第一章 Electron介绍 | Electron in Action(中译)
Github 官方地址 代表作: Visual Studio Code Atom - Code editor. Github开源的代码编辑器,Electron起源地 Visual Studio Cod ...
- 如何用Electron Js创建第一个应用Hello World
什么是Electron Node.js和Chromium的结合品.允许只使用HTML,CSS和JavaScript来开发跨平台桌面应用. 编写第一个Electron程序(Hello World) 在开 ...
- electron安装到第一个实例
1.node.js下载,然后安装.下载地址:链接:http://pan.baidu.com/s/1o7TONhS 密码:fosa 2.cmd下输入:npm install electron-prebu ...
- Electron中Jquery的引入方式
原文链接http://huisky.com/blog/16122220522957 Electron默认启用了Node.js的require模块,而jQuery等新版本框架为了支持commondJS标 ...
- electron之Windows下使用 html js css 开发桌面应用程序
1.atom/electron github: https://github.com/atom/electron 中文文档: https://github.com/atom/electron/tree ...
- Linux下Electron的Helloworld
什么是Electron Electron 框架的前身是 Atom Shell,可以让你写使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序.它是基于io.js 和 Chromi ...
随机推荐
- Vue.js项目中使用iconfont冲突问题解决
在开发前端项目中,字体图标变得越来越常用.一方面因为它比图片使用起来方便,可以像字体一样修改大小和颜色:另一方面是因为它可以减少请求数量,优化前端性能. iconfont的使用方法很简单,主要由三种引 ...
- 使用velero进行kubernetes灾备
使用velero可以对集群进行备份和恢复,降低集群DR造成的影响.velero的基本原理就是将集群的数据备份到对象存储中,在恢复的时候将数据从对象存储中拉取下来.可以从官方文档查看可接收的对象存储,本 ...
- 优先队列 + 模拟 - HDU 5437 Alisha’s Party
Alisha’s Party Problem's Link Mean: Alisha过生日,有k个朋友来参加聚会,由于空间有限,Alisha每次开门只能让p个人进来,而且带的礼物价值越高就越先进入. ...
- WPF XAML的读法
XAML 一直以为读作X-A-M-L 不过 一直都是念错了 正确念法:ZAMMEL 类似:ZeIMO [平音]
- Java设计模式原型模式
原型模式: – 通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式. – 就是java中的克隆技术,以某个对象为原型,复制出新的对象.显然,新的对象具备原型对象的特点 – 优势 ...
- ELK学习笔记之filebeat合并多行日志示例
0x00 概述 本节中的示例包括以下内容: 将Java堆栈跟踪日志组合成一个事件 将C风格的日志组合成一个事件 结合时间戳处理多行事件 同理,你可以把如下的正则应用在容器的yaml文件内. 0x01 ...
- 2019-11-29-WPF-从触摸消息转触摸事件
原文:2019-11-29-WPF-从触摸消息转触摸事件 title author date CreateTime categories WPF 从触摸消息转触摸事件 lindexi 2019-11- ...
- .NET Standard和.NET Core是什么关系(转载)
.NET Standard vs .NET Core 问: I have read about the difference between .NET Standard and .NET Core, ...
- C#工作常用关键字
1.throw //抛出throw new Exception("获取数据失败") //抛出异常 2.Ticks //long类型的数,表示时间,一个以0.1纳秒为单位的时间戳,/ ...
- 阿里云监控RDS
RDS性能监控API https://help.aliyun.com/document_detail/26280.html?spm=a2c4g.11186623.6.1576.341d7159uzLD ...