一. 什么是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"的更多相关文章

  1. Electron-使用Electron开发第一个应用

    使用Electron开发第一个应用 Electron 应用的目录结构如下: app/ ├── package.json ├── main.js └── index.html 新建一个app文件夹 将这 ...

  2. Electron 入门第一篇

    官网:http://electronjs.org/docs/tutorial/application-architecture 转载:https://blog.csdn.net/qq_33323731 ...

  3. (译)通过 HTML、JS 和 Electron 创建你的第一个桌面应用

    原文:Creating Your First Desktop App With HTML, JS and Electron 作者:Danny Markov 近年来 web 应用变得越来越强大,但是桌面 ...

  4. 第一章 Electron介绍 | Electron in Action(中译)

    Github 官方地址 代表作: Visual Studio Code Atom - Code editor. Github开源的代码编辑器,Electron起源地 Visual Studio Cod ...

  5. 如何用Electron Js创建第一个应用Hello World

    什么是Electron Node.js和Chromium的结合品.允许只使用HTML,CSS和JavaScript来开发跨平台桌面应用. 编写第一个Electron程序(Hello World) 在开 ...

  6. electron安装到第一个实例

    1.node.js下载,然后安装.下载地址:链接:http://pan.baidu.com/s/1o7TONhS 密码:fosa 2.cmd下输入:npm install electron-prebu ...

  7. Electron中Jquery的引入方式

    原文链接http://huisky.com/blog/16122220522957 Electron默认启用了Node.js的require模块,而jQuery等新版本框架为了支持commondJS标 ...

  8. electron之Windows下使用 html js css 开发桌面应用程序

    1.atom/electron github: https://github.com/atom/electron 中文文档: https://github.com/atom/electron/tree ...

  9. Linux下Electron的Helloworld

    什么是Electron Electron 框架的前身是 Atom Shell,可以让你写使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序.它是基于io.js 和 Chromi ...

随机推荐

  1. Vue.js项目中使用iconfont冲突问题解决

    在开发前端项目中,字体图标变得越来越常用.一方面因为它比图片使用起来方便,可以像字体一样修改大小和颜色:另一方面是因为它可以减少请求数量,优化前端性能. iconfont的使用方法很简单,主要由三种引 ...

  2. 使用velero进行kubernetes灾备

    使用velero可以对集群进行备份和恢复,降低集群DR造成的影响.velero的基本原理就是将集群的数据备份到对象存储中,在恢复的时候将数据从对象存储中拉取下来.可以从官方文档查看可接收的对象存储,本 ...

  3. 优先队列 + 模拟 - HDU 5437 Alisha’s Party

    Alisha’s Party Problem's Link Mean: Alisha过生日,有k个朋友来参加聚会,由于空间有限,Alisha每次开门只能让p个人进来,而且带的礼物价值越高就越先进入. ...

  4. WPF XAML的读法

    XAML 一直以为读作X-A-M-L 不过 一直都是念错了 正确念法:ZAMMEL 类似:ZeIMO [平音]

  5. Java设计模式原型模式

    原型模式: – 通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式. – 就是java中的克隆技术,以某个对象为原型,复制出新的对象.显然,新的对象具备原型对象的特点 – 优势 ...

  6. ELK学习笔记之filebeat合并多行日志示例

    0x00 概述 本节中的示例包括以下内容: 将Java堆栈跟踪日志组合成一个事件 将C风格的日志组合成一个事件 结合时间戳处理多行事件 同理,你可以把如下的正则应用在容器的yaml文件内. 0x01  ...

  7. 2019-11-29-WPF-从触摸消息转触摸事件

    原文:2019-11-29-WPF-从触摸消息转触摸事件 title author date CreateTime categories WPF 从触摸消息转触摸事件 lindexi 2019-11- ...

  8. .NET Standard和.NET Core是什么关系(转载)

    .NET Standard vs .NET Core 问: I have read about the difference between .NET Standard and .NET Core, ...

  9. C#工作常用关键字

    1.throw //抛出throw new Exception("获取数据失败") //抛出异常 2.Ticks //long类型的数,表示时间,一个以0.1纳秒为单位的时间戳,/ ...

  10. 阿里云监控RDS

    RDS性能监控API https://help.aliyun.com/document_detail/26280.html?spm=a2c4g.11186623.6.1576.341d7159uzLD ...