1.前言

本节主要讲述Electron的环境搭建以及如何快速创建一个应用

官方文档

2.环境搭建

(1)安装node.js

(2)创建项目目录,初始化配置文件

//进入项目目录 并在此目录打开cmd窗口 执行以下代码
npm init //按照后续的提示 填写项目名称,作者等信息

(3)定义npm脚本命令和入口js文件

  • 在scripts节点中配置start属性,将来可使用 npm start/npm run start 命令启动项目
  • 在main节点中配置程序的入口js文件名称
{
"name": "my-electron-app",
"version": "1.0.0",
"description": "demo",
"main": "main.js",
"scripts": {
"start": "electron ."
},
"author": "",
"license": "MIT",
"devDependencies": {
"electron": "^13.1.7"
}
}

(4)下载安装Electron

npm下载electron的过程中会从github中下载一个包,由于github访问速度慢,可以先切换其镜像地址

快速安装:由于连接npm服务器比较慢,可以使用https://npm.taobao.org/mirrors/electron/1.4.3/electron-v1.4.3-win32-x64.zip 进行下载,下载后将其放到C:\Users\当前用户名.electron目录下,再执行npm install -g electron命令即可

npm config set electron_mirror https://npm.taobao.org/mirrors/electron/
npm install --save-dev electron

3.HTML文件编写

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
<meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self'">
<title>Hello World!</title>
<!-- 引入页面js -->
<script src="./index.js"></script>
</head>
<body>
<h1 id="title">Hello World!</h1>
<!-- 以下的元素都定义id 方便js操作dom -->
<h3>
preload run time = <span id="preload-time"></span>
</h3>
<h3>
prenderer.js run time = <span id="renderer-time"></span>
</h3>
<h3>
We are using Node.js <span id="node-version"></span>
</h3>
<h3>
Chromium <span id="chrome-version"></span>
</h3>
<h3>
and Electron <span id="electron-version"></span>
</h3> </body>
</html>

4.入口文件编写

//main.js
//引入 app和BrowserWindow 模块
const { app, BrowserWindow } = require('electron')
//引入 path 模块
const path = require('path') //程序入口
app.whenReady().then(() => {
//程序就绪后 调用方法
createWindow()
}) //事件监听 关闭所有窗口时退出应用 (Windows & Linux)
app.on('window-all-closed', function () {
if (process.platform !== 'darwin') app.quit()
}) //封装创建窗口的函数
function createWindow () {
//创建新窗口
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js'), //引入预加载的js
}
}) //事件监听 如果没有窗口打开则打开一个窗口 (macOS)
app.on('activate', function () {
if (BrowserWindow.getAllWindows().length === 0) createWindow()
}) //加载页面
win.loadFile('index.html') //打开控制台 快捷键ctrl + shfit + i
//win.webContents.openDevTools()
}

5.预加载js文件

预加载脚本与渲染器共享同一个全局 Window,因此在预加载脚本中既可以访问页面,操作Dom,还能访问原生的接口,此外,他还可以通过给window对象挂载原生的接口,使得渲染器(页面)就中就能直接调用原生接口

,但是为了安全考虑,需要使用contextBridge 模块来安全地实现交互,不得直接对window进行赋值

//引入contextBridge模块
const { contextBridge } = require('electron') //挂载数据到window中
contextBridge.exposeInMainWorld('title', '我是preload设定的标题')

在页面js中接收此字段进行渲染

<body>
<div id="app">
<div class="inner-box">
<h2>{{title}}</h2>
</div>
</div>
</body>
</html>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.13/vue.min.js"></script>
<script>
var title = window.title
new Vue({
el:"#app",
data:{
title:title
}
})
</script>

6.主进程与渲染进程进行交互

  • 主进程基于node.js运行,可以调用浏览器之外的接口
  • 渲染进程基于浏览器运行,可控制页面的渲染

6.启动项目

在项目目录中打开cmd命令,执行以下命令

npm start

执行结果:

7.自动刷新

electron-reloader这个插件的功能就像他的名字"reloader",当代码发生变动时自动刷新程序,在开发阶段十分有必要

  • 安装插件
npm i electron-reloader -S
  • 在主进程中引入插件
//main.js
const reloader = require('electron-reloader')
reloader(module)

8.打包

这里使用electron-packager进行打包

(1)下载安装最新版本的electron-packager,并添加到项目中

npm install --save-dev electron-packager

(2)查看打包命令:推荐进npm官网查看最新文档(其他论坛的帖子教程针对的可能是老版electron-packager,不适用最新的版本)当前版本的打包命令为:

electron-packager <sourcedir> <appname> --platform=<platform> --arch=<arch> [optional flags...]
命令 含义 例子
sourcedir 输出目录 建议使用 "." 代表在当前目录输出
appname 应该名称 随意设置,例如 myapp
platform 平台 window设置为"win32"
arch 32位?64位? 设置为"x86"

完整命令

electron-packager . myapp --platform=win32 --arch=x64

(3)设置脚本命令:定义npm脚本命令,方便直接调用这一段长命令 (packager字段),app版本和electron视实际情况填写

{
"name": "my-electron-app",
"version": "1.0.0",
"description": "",
"main": "main.js",
"scripts": {
"start": "electron .",
"packager": "electron-packager . myapp --platform=win32 --arch=x64 --app-version=1.0.0 --electron-version=13.1.7 --icon=ponyiiot.ico"
},
"author": "",
"license": "MIT",
"devDependencies": {
"@electron-forge/cli": "^6.0.0-beta.59",
"electron": "^13.1.7",
"electron-packager": "^15.3.0"
}
}

(4)进行打包

npm run packager

执行成功后,会在当前目录生成一个myapp-win32-x64文件夹

Electron(1) - 快速入门的更多相关文章

  1. 初探Electron,从入门到实践

    本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.   在开始之前,我想您一定会有这样的困惑:标题里的Electron ...

  2. [易学易懂系列|rustlang语言|零基础|快速入门|(11)|Structs结构体]

    [易学易懂系列|rustlang语言|零基础|快速入门|(11)] 有意思的基础知识 Structs 我们今天来看看数据结构:structs. 简单来说,structs,就是用来封装相关数据的一种数据 ...

  3. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

  4. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  5. 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)

    今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...

  6. 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  7. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  8. Mybatis框架 的快速入门

    MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...

  9. grunt快速入门

    快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本 ...

  10. 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

随机推荐

  1. Sqoop简介安装及使用

    Sqoop简介 sqoop 是 apache 旗下一款"Hadoop 和关系数据库服务器之间传送数据"的工具. 核心的功能有两个: 导入.迁入 导出.迁出 导入数据:MySQL,O ...

  2. SpringBoot+Docker +Nginx 部署前后端项目

    部署SpringBoot项目(通关版) 一.概述 使用 java -jar 命令直接部署项目的JAR包和使用Docker制作镜像进行部署是两种常见的部署方式.以下是对这两种方式的概述和简要的优劣势分析 ...

  3. 2021年6月国产数据库排行榜:OceanBase、PolarDB会师TiDB、openGauss,入局开源阵营,逐鹿生态建设

    "首夏犹清和,芳草亦未歇",时至六月,百花齐放.百家争鸣的国产数据库市场依旧延续着如骄阳般火热的态势.不过从最新一期的 国产数据库流行度排行榜 Top 10 中不难发现,一个词足以 ...

  4. js有效括号匹配

    // 定义一个括号映射 const bracketMap = [ { left: '[', right: ']' }, { left: '<', right: '>' }, { left: ...

  5. stm32开发

    基于寄存器开发 新建工程 添加C/C++识别路径 : 防止中文乱码 -  改变编码格式 基于库函数开发

  6. mysql进阶-锁

    锁 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源(CPU.RAM.I/O)的争用以外,数据也是一种供许多用户共享的资源. 如何保证数据并发访问的一致性.有效性 ...

  7. blocks 单调栈、单调队列题解

    blocks题解: 1.题面: 2.分析: 题意大概就是说,找一段最长的区间,并且这段区间的平均值>=k,那么我们可以对他的每一个值减去k,最终求和>=0即可. 那我们需要对每个可能的左端 ...

  8. Solon 之 STOMP

    一.STOMP 简介 如果直接使用 WebSocket 会非常累,就像用 Socket 编写 Web 应用.没有高层级的交互协议,就需要我们定义应用间所发消息的语义,还需要确保连接的两端都能遵循这些语 ...

  9. GoLand IDE 如何设置每次打开时先展示启动界面

    GoLand IDE 如何设置每次打开时先展示启动界面 打开设置,在SystemSeting下进行如下操作即可

  10. chrony服务器

    1.安装 yum install chrony -y 2.配置文件 主配置文件:/etc/chrony.conf server ntp.aliyun.com iburst         ---指定阿 ...