参考教程:https://www.electronjs.org/docs/tutorial/quick-start
https://www.cnblogs.com/FHC1994/p/10055698.html
说明:官网这个快速入门教程真的写得超好,大大赞一个。

前提条件

在使用Electron进行开发之前,您需要安装 Node.js。 我们建议您使用最新的LTS版本。
注意:这里如果不装LTS版本会在后面的make步骤时候出问题,所以最好装LTS版,目前亲测ok的版本是node.js - v14.17.1 LTS.

请使用为你平台预构建的 Node.js 安装器来进行安装, 否则,您可能会遇到与不同开发工具不兼容的问题。

要检查 Node.js 是否正确安装,请在您的终端输入以下命令:

node -v
npm -v

这两个命令应输出了 Node.js 和 npm 的版本信息。

注意 因为 Electron 将 Node.js 嵌入到其二进制文件中,你应用运行时的 Node.js 版本与你系统中运行的 Node.js 版本无关。

创建应用程序

创建一个文件夹并初始化 npm 包

运行命令行:

mkdir my-electron-app && cd my-electron-app
npm init

init初始化命令会提示您在项目初始化配置中设置一些值 为本教程的目的,有几条规则需要遵循:

entry point 应为 main.js.
author 与 description 可为任意值,但对于应用打包是必填项。
你的 package.json 文件应该像这样:

 {"name": "my-electron-app","version": "1.0.0","description": "Hello World!","main": "main.js","author": "Jane Doe","license": "MIT"}

将 electron 包安装到应用的开发依赖中

运行命令行:

npm install --save-dev electron

在package.json中增加electron启动命令

最后,您希望能够执行 Electron。 如下所示,在您的 package.json配置文件中的scripts字段下增加一条start命令:

{
“scripts”: {
“start”: “electron .”
}
}

测试开发模式打开应用

start命令能让您在开发模式下打开您的应用,命令行运行:

npm start

此时会报错,说找不到入口文件 main.js

创建文件

创建 main.js:

 // Modules to control application life and create native browser windowconst { app, BrowserWindow } = require('electron')const path = require('path')function createWindow () {// Create the browser window.const mainWindow = new BrowserWindow({width: 800,height: 600,webPreferences: {preload: path.join(__dirname, 'preload.js')}})// and load the index.html of the app.mainWindow.loadFile('index.html')// Open the DevTools.// mainWindow.webContents.openDevTools()}// This method will be called when Electron has finished// initialization and is ready to create browser windows.// 部分 API 在 ready 事件触发后才能使用。app.whenReady().then(() => {createWindow()app.on('activate', function () {// On macOS it's common to re-create a window in the app when the// dock icon is clicked and there are no other windows open.if (BrowserWindow.getAllWindows().length === 0) createWindow()})})// Quit when all windows are closed, except on macOS. There, it's common// for applications and their menu bar to stay active until the user quits// explicitly with Cmd + Q.app.on('window-all-closed', function () {if (process.platform !== 'darwin') app.quit()})// In this file you can include the rest of your app's specific main process// code. 也可以拆分成几个文件,然后用 require 导入。

创建 index.html:

<!--index.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></head><body><h1>Hello World!</h1>We are using Node.js <span id="node-version"></span>,Chromium <span id="chrome-version"></span>,and Electron <span id="electron-version"></span>.<!-- You can also require other files to run in this process --><script src="./renderer.js"></script></body>
</html>

创建 preload.js:

// All of the Node.js APIs are available in the preload process.
// It has the same sandbox as a Chrome extension.
window.addEventListener('DOMContentLoaded', () => {const replaceText = (selector, text) => {const element = document.getElementById(selector)if (element) element.innerText = text}for (const dependency of ['chrome', 'node', 'electron']) {replaceText(`${dependency}-version`, process.versions[dependency])}
})

此时再运行命令行:npm start
会看到有一个窗口弹出,页面显示 node.js、chomium 等版本内容。

打包分发程序

最快捷的打包方式是使用 Electron Forge。

将 Electron Forge 添加到您应用的开发依赖中,并使用其"import"命令设置 Forge 的脚手架:

npm install --save-dev @electron-forge/cli
npx electron-forge import

执行成功后,会有如下反馈:

✔ Checking your system
✔ Initializing Git Repository
✔ Writing modified package.json file
✔ Installing dependencies
✔ Writing modified package.json file
✔ Fixing .gitignoreWe have ATTEMPTED to convert your app to be in a format that electron-forge understands.Thanks for using "electron-forge"!!!

使用 Forge 的 make 命令来创建可分发的应用程序:

npm run make

my-electron-app@1.0.0 make /my-electron-app
electron-forge make

执行成功后,会有如下提示:

✔ Checking your system
✔ Resolving Forge Config
We need to package your application before we can make it
✔ Preparing to Package Application for arch: x64
✔ Preparing native dependencies
✔ Packaging Application
Making for the following targets: zip
✔ Making for target: zip - On platform: darwin - For arch: x64

同时在源代码根目录的out文件夹下,会有两个文件夹:

my-electron-app-win32-x64
make

其中 make 文件夹下是安装程序,my-electron-app-win32-x64 文件夹下是可执行程序,双击 my-electron-app.exe 即可弹出我们上面写好的网页窗口。

加密代码

上面的程序打包后,可执行程序文件夹resources下面app里面还是有所有的源码文本文件,可以使用 electron 自带的代码加密工具对代码加密。步骤如下:

1.全局安装 asar
npm install asar -g

安装完asar以后,就可以使用asar命令将程序文件打包了。

2.在 resources 目录下使用 asar 指令进行加密
asar pack ./app app.asar

运行完成后,会发现resources下有一个文件:app.asar,就是 app 文件夹加密后生成的文件。此时可将文件夹 app 改名或删除,然后再运行上面编译好的可执行程序,会发现程序依然能够正常运行,说明无缝加密成功。

用Electron创建第一个桌面应用、打包并加密代码相关推荐

  1. Electron - 创建跨平台的桌面客户的应用程序

    Electron 框架的前身是 Atom Shell,可以让你写使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序.它是基于io.js 和 Chromium 开源项目,并用于在 ...

  2. C#AE二次开发——使用AE控件创建第一个桌面应用程序

    ---------------- 版权声明:本文为CSDN博主「人生.蜕变」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog. ...

  3. 【React实战】create-react-app整合electron打造第一个桌面app

    欢迎来到我的博客

  4. Electron入门教程1 —— 编写第一个桌面应用程序

    前言: 最近临时起意,想开发桌面应用程序,但是我们肯定都先会想到微软的C#.而我又不想花时间去学习C#,而且就算学了C#,还是很难快速开发出好看的Windows桌面应用.所以此时我就想,既然移动app ...

  5. electron 桌面程序_如何使用Electron使用JavaScript构建您的第一个桌面应用程序

    electron 桌面程序 by Carol-Theodor Pelu 通过Carol-Theodor Pelu 如何使用Electron使用JavaScript构建您的第一个桌面应用程序 (How ...

  6. 使用vue+electron创建桌面软件(一)

    使用vue项目,添加electron,创建桌面软件.软件的本地运行.打包等功能 环境配置 node环境 开发环境:linux vue-vli 若没有vue环境,则终端安装:npm install -g ...

  7. Electron 自定义托盘实战——桌面计算器

    Electron 默认的托盘(Tray)提供了菜单能力,但是并不能让用户自定义窗口视图,有很大的局限性.我们经常看到 Mac 上很多原生应用,点击托盘之后可以弹出下拉窗口,那 Electron 能不能 ...

  8. Electron-开发第一个桌面应用

    Electron-开发第一个桌面应用 1.开始配置 开始一个electron桌面应用的开发,首先需要配置好三个文件+ package.json 文件,这个文件基本是开发标配了,主要是对Electron ...

  9. 使用python创建一个windows桌面在线翻译小程序

    1.首先需要制造打包的gui界面 这里小编使用的是 wxFormBuilder 下载地址:链接:https://pan.baidu.com/s/1DOe7TA6ap07ZsjcH4qzBIQ 密码:2 ...

最新文章

  1. 易语言模拟键盘(ctrl+v)_键盘快捷键使用大全
  2. Java的正则表达式使用及案例
  3. Coding 初级教程(二)——上传已有项目
  4. springcloud初体验(一句话,真香!)
  5. 【转】dcmtk程序包综述(2)!!!!!
  6. ubuntu 安装过程所需软件
  7. Linux笔记-iptables开放指定端口,开放ICMP协议,其他端口禁止访问
  8. 前后端分离后 前端获得session数据_机器学习模型部署--打通前后端任督二脉
  9. dojo.declare
  10. Google Android创赢路线与产品开发实战
  11. 求合体电脑版_网红界宋祖儿找了个年轻版言承旭当男友,一张合照就收割百万cp粉...
  12. 让Windows下的驱动乖乖在Linux中安家!
  13. endnote 参考文献加序号_EndNote插入文献序号排序混乱怎么破 | 科研动力
  14. 运算放大器典型电路及原理
  15. 新的计算机的wifi连接无线网络连接,如何设置电脑优先连接无线WIFI网络
  16. 万年历查询,一个wonderful的年历
  17. 免密登录 蹩脚的“脚本”
  18. 苹果手机投影_手机、平板屏幕投到投影机上常见问题与答案
  19. python列表里含有字典的排序
  20. Drupal学习资源

热门文章

  1. nginx编译报错 cc1:所有的警告都被当作是错误 make[1]:*** [objs/Makefile:446:objs/src/core/nginx
  2. 【独家对话】Esri中国副总裁蔡晓兵专访 :移动信息化是延伸更是创新
  3. 图像语义分割样本制作——使用Matlab模块Image Labeler 标记样本
  4. P1439 【模板】最长公共子序列
  5. 百度ai 人脸识别 java_百度ai 接口 人脸识别
  6. ucgui触摸屏消息处理
  7. 加州大学伯克利分校计算机科学专业,加州大学伯克利分校之计算机科学系
  8. [python]python的引用(续)
  9. OpenFOAM 中的 RTS 机制
  10. java随机两个数组