electron 前端开发桌面应用
electron是由Github开发,是一个用Html、css、JavaScript来构建桌面应用程序的开源库,可以打包为Mac、Windows、Linux系统下的应用。
快速开始
接下来,让代码来发声,雷打不动的hello world
创建文件夹,并执行npm init -y,生成package.json文件,下载electron模块并添加开发依赖
mkdir electron_hello && cd electron_hello && npm init -y && npm i electron -D
下载速度过慢或失败,请尝试使用cnpm,安装方式如下
# 下载cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
# 下载electron
cnpm i electron -D
创建index.js,并写入以下内容
const {app, BrowserWindow} = require('electron')
// 创建全局变量并在下面引用,避免被GC
let win
function createWindow () {
// 创建浏览器窗口并设置宽高
win = new BrowserWindow({ width: 800, height: 600 })
// 加载页面
win.loadFile('./index.html')
// 打开开发者工具
win.webContents.openDevTools()
// 添加window关闭触发事件
win.on('closed', () => {
win = null // 取消引用
})
}
// 初始化后 调用函数
app.on('ready', createWindow)
// 当全部窗口关闭时退出。
app.on('window-all-closed', () => {
// 在 macOS 上,除非用户用 Cmd + Q 确定地退出,
// 否则绝大部分应用及其菜单栏会保持激活。
if (process.platform !== 'darwin') {
app.quit()
}
})
app.on('activate', () => {
// 在macOS上,当单击dock图标并且没有其他窗口打开时,
// 通常在应用程序中重新创建一个窗口。
if (win === null) {
createWindow()
}
})
创建index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<h1 id="h1">Hello World!</h1>
We are using node
<script>
document.write(process.versions.node)
</script>
Chrome
<script>
document.write(process.versions.chrome)
</script>,
and Electron
<script>
document.write(process.versions.electron)
</script>
</body>
</html>
最后,修改packge.json中的main字段,并添加start命令
{
...
main:'index.js',
scripts:{
"start": "electron ."
}
}
执行npm run start后,就会弹出我们的应用来。
模版
electron-forge包含vue、react、Angular等开箱即用的模版
npm i -g electron-forge
electron-forge init my-app template=react
cd my-app
npm run start
打包
怎么将我们开发好的应用打包成.app或.exe的执行文件,这就涉及到了重要的打包环节, 这里使用electron-quick-start项目进行打包
目前,主流的打包工具有两个electron-packager和electron-builder
Mac打包window安装包需下载wine
brew install wine
如果有丢失组件,按照报错信息进行下载即可
electron-packager
electron-packager把你的electron打包成可运行文件(.app, .exe, etc)
执行npm i electron-packager -g 进行安装
electron-packager . 快速打包
electron-packager <sourcedir> <appname> --platform=<platform> --arch=<arch> --out=out --icon=assets/app.ico --asar --overwrite --ignore=.git
- sourcedir 项目入口 根据package.json的目录
- appname 包名
- platform 构建平台 包含
darwin, linux, mas, win32 all - arch 构建架构 包含
ia32,x64,armv7l,arm64 - out 打包后的地址
- icon 打包图标
- asar 是否生成app.asar, 不然就是自己的源码
- overwrite 覆盖上次打包
- ignore 不进行打包的文件
第一次打包需要下载二进制的包耗时会久一些,以后走缓存就快的多了。
electron-builder
electron-builder是一个完整的解决方案,对于macos、windows、linux下的electron app,它可以提供打包及构建的相关功能。同时,它还提供开箱即用的“自动更新”功能支持
npm i electron-builder -D 下载
electron-builder打包
坑坑坑
第一次打包的时候会比较慢,如果你和我手欠直接退出了,再次打包的时候,恭喜你,出错了。
问题是在下载.zip包的时候,中断了操作,以后所有执行打包的时候,找不到那个文件(或者是残缺的文件)就报错了,需要手动清除下缓存 缓存路径在~/Library/Caches/electron/
常用参数
electron-builder配置文件写在package.json中的build字段中
"build": {
"appId": "com.example.app", // 应用程序id
"productName": "测试", // 应用名称
"directories": {
"buildResources": "build", // 构建资源路径默认为build
"output": "dist" // 输出目录 默认为dist
},
"mac": {
"category": "public.app-category.developer-tools", // 应用程序类别
"target": ["dmg", "zip"], // 目标包类型
"icon": "build/icon.icns" // 图标的路径
},
"dmg": {
"background": "build/background.tiff or build/background.png", // 背景图像的路径
"title": "标题",
"icon": "build/icon.icns" // 图标路径
},
"win": {
"target": ["nsis","zip"] // 目标包类型
}
}
更多本教程来源于掘金,详细资料参考:https://juejin.im/post/5ba06b67f265da0ae343e89c?utm_source=gold_browser_extension#heading-29
electron 前端开发桌面应用的更多相关文章
- Electron+Vue开发跨平台桌面应用
Electron+Vue开发跨平台桌面应用 xiangzhihong发布于 2019-12-23 虽然B/S是目前开发的主流,但是C/S仍然有很大的市场需求.受限于浏览器的沙盒限制,网页应用无法满足某 ...
- electron之Windows下使用 html js css 开发桌面应用程序
1.atom/electron github: https://github.com/atom/electron 中文文档: https://github.com/atom/electron/tree ...
- 而桌面app向来是web前端开发开发人员下意识的避开方
web前端语言的发展有目共睹, 从原来的pc web, 到后来的mobile SAP, 再到 nodejs,全站工程师应运而生. js快速而且稳健的发展让人不得不重视, 相应的前端开发人员的地位也越来 ...
- 使用electron+vue开发一个跨平台todolist(便签)桌面应用
# 1 最近一直在使用electron开发桌面应用,对于一个web开发者来说,html+javascript+css的开发体验让我非常舒服.之前我一直简单的以为electron只是张网页加个壳,和那些 ...
- 工具武装的前端开发工程师 Mac 软件清单
Awesome Mac 这个仓库主要是收集非常好用的Mac应用程序.软件以及工具,主要面向开发者和设计师.有这个想法是因为我最近发了一篇较为火爆的涨粉儿微信公众号文章<工具武装的前端开发工程 ...
- 基于.Net进行前端开发的技术栈发展路线(二)
前言 上一篇<我的技能树>文章分享了我的技能成长过程,还未完成,今天继续跟大家分享. 01 我的技能树 我的当前的技能树: 其中,标注为黄色旗帜的是基本掌握,标注为红色旗帜的为使用熟练.未 ...
- [转] Web前端开发工程师常用技术网站整理
1.常用工具相关 有道云笔记 http://note.youdao.com/signIn/index.html 36镇-最好用的共享收藏夹 http://www.36zhen.com/ 浏览器同步测试 ...
- Web前端开发工程师常用技术网站整理
1.常用工具相关 有道云笔记 http://note.youdao.com/signIn/index.html 36镇-最好用的共享收藏夹 http://www.36zhen.com/ 浏览器同步测试 ...
- electron-利用node开发桌面应用
简介 web前端语言的发展有目共睹, 从原来的pc web, 到后来的mobile SAP, 再到 nodejs,全站工程师应运而生. js快速而且稳健的发展让人不得不重视, 相应的前端开发人员的地位 ...
随机推荐
- AIX文件系统和存储部署(转)
文件系统和存储部署 文件系统的管理是AIX存储结构中的最后一环.定义完lv后,可采用如下两种方式使用lv: a.作为裸设备(raw)使用,一般是数据库型的应用 b.在lv上定义文件系统,并提供文件和数 ...
- db2 reorg table failed处理
概要: 当对一个表的结构进行改变后,需要reorg表,重新组织其目录统计信息,为数据库的访问计划提供信息,以便高效执行对其的操作. 对表作reorg操作,发生错误,通过db2 "? sql0 ...
- [No000017A]改善C#程序的建议3:在C#中选择正确的集合进行编码
要选择正确的集合,我们首先要了解一些数据结构的知识.所谓数据结构,就是相互之间存在一种或多种特定关系的数据元素的集合.结合下图,我们看一下对集合的分类. 集合分类 在上图中,可以看到,集合总体上分为线 ...
- [No000011D].NETCORE1/19-.NET Core 指南
.NET Core 是一个通用开发平台,由 Microsoft 和 GitHub 上的 .NET 社区共同维护.跨平台的,支持 Windows.macOS 和 Linux,并且可用于设备.云和嵌入式/ ...
- [No0000DF]C# ZipFileHelper ZIP类型操作,压缩解压 ZIP 类封装
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using Sys ...
- Java高级工程师面试题总结及参考答案
一.面试题基础总结 1. JVM结构原理.GC工作机制详解 答:具体参照:JVM结构.GC工作机制详解 ,说到GC,记住两点:1.GC是负责回收所有无任何引用对象的内存空间. 注意:垃圾回收回 ...
- linux:基本指令touch, cp 和 mv
touch 新建 #touch 的使用很简单, 我们先去往 Documents 的文件夹, 里面已经有了 folder1 和 file1, 如果我们想新建一个 file2 使用下面的语句就好. 一个空 ...
- es6 数组实例的 find() 和 findIndex()
数组实例的find方法,用于找出第一个符合条件的数组成员.它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员.如果没有符合条件的成员,则返回u ...
- docker disable restart--run privileged
--restart=unless-stopped option, as @Shibashis mentioned, or update the restart policy (this require ...
- [development][tcp/ip][ids] 一个简单有参考价值的库 libnids
libhtp 中的例子, 可以通过libnids快速使用. 或者可以快速的写个sniffer. 支持三个功能 ip分片重组, tcp乱序重排, 端口扫描发现. 工程: https://github.c ...