electron在Windows、Linux和KYLIN操作系统下的不同表现

2023-05-16

一、electron简介

Electron 是一个由 Github 开发、用 HTML,CSS 和 JavaScript 来构建跨平台桌面应用程序的框架, 然后这些应用程序可以打包在macOS、Windows和Linux上直接运行,或者通过Mac App Store或微软商店分发。

Electron 的核心理念是:保持 Electron 的体积小和可持续性开发。 如:为了保持 Electron 的小巧 (文件体积) 和可持续性开发 (以防依赖库和 API 的泛滥) , Electron 限制了所使用的核心项目的数量。 比如 Electron 只用了 Chromium 的渲染库而不是其全部组件。这使得升级 Chromium 更加容易,但也意味着 Electron 缺少了 Google Chrome 里的一些浏览器相关的特性。 添加到 Electron 的新功能应该主要是原生 API。 如果可以的话,一个功能应该尽可能的成为一个 Node.js 模块。

目前 Electron 已成为开源开发者、初创企业和老牌公司常用的开发工具。

更多详情可以登录到electron的官网https://www.electronjs.org/docs上查看。

 

二、electron创建与打包应用程序

2.1安装node.js

Electron是通过将 Chromium 和 Node.js 合并到同一个运行时环境中,并将其打包为 Mac,Windows 和 Linux 系统下的应用来构建构建为跨平台桌面应用程序,因此,在使用 Electron 之前,需要先安装 Node.js。
这个过程比较简单,这里就不赘述了,网上的教程也挺多的。安装完成之后使用`node -v`和`npm -v`验证一下,出现如下图所示的版本号即表示安装成功。

 

2.2安装electron

安装electron有两种方式,一种是全局安装,一种是局部安装。
(1)全局安装

```
npm install -g electron
```

(2)局部安装

```
mkdir my-electron-app && cd my-electron-app
npm init -y
npm i --save-dev electron
```
 

2.3创建主脚本文件main.js

主脚本main.js文件指定了Electron 应用程序的入口点。 通常,在主进程中运行的脚本控制应用程序的生命周期,并显示图形用户界面及其元素。 执行本机操作系统交互,并在网页中创建渲染程序。
注意:Electron 应用程序只能有一个主进程。

```
//导入模块,管理应用程序的生命周期事件
const { app, BrowserWindow } = require('electron')
//创建浏览窗口的函数
function createWindow () {
    const win = new BrowserWindow({
        width: 800,
        height: 600,
        webPreferences: {
            nodeIntegration: true
        }
    })
    //在创建浏览窗口时加载index.html文件
    win.loadFile('index.html')
}
//在应用程序初始化时创建一个新的窗口
app.whenReady().then(createWindow)
app.on('window-all-closed', () => {
    if (process.platform !== 'darwin') {
        app.quit()
    }
})
app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
        createWindow()
    }
})
```

 

2.4创建网页index.html

网页index.html是应用程序初始化后显示的页面。 此网页代表渲染过程。可以创建多个浏览器窗口,每个窗口都使用自己的独立渲染进程。 每个窗口都可以通过 nodeIntegration 选项完全访问 Node.js API。
下面的代码是简单的一个demo,可自行替换。

```
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Hello World!</title>
        <meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';" />
    </head>
    <body style="background: white;">
        <h1>Hello World!</h1>
        <p>
            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>.
        </p>
    </body>
</html>
```
 

2.5修改package.json文件

Electron 应用程序使用 package.json 文件作为主入口,因此,需要根据自己的代码修改该文件。这里,修改的内容有一下三点:
1. 由于入口文件是main.js,所以“main”字段的值要设为main.js;
2. “author”字段和“description”对于打包来说是必要的,不要为空;
3. 默认情况下,“npm start”命令使用 Node.js 来运行主脚本,但是这里要使用 Electron 运行脚本,所以需要将“scripts”字段里的“start”更改为“electron .”(注意,这里有一个英文句号)。

```
{
    "name": "my-electron-app",
    "version": "0.1.0",
    "author": "your name",
    "description": "My Electron app",
    "main": "main.js",
    "scripts": {
        "start": "electron ."
    }
}
```
 

2.6运行应用程序

在项目的文件夹里使用命令`npm start`即可运行程序。

2.7打包应用程序

这里使用的是electron-packager来进行打包。
(1)安装electron-packager
全局安装:`npm install -g electron-packager`
局部安装:`npm install --save-dev electron-packager`
(2)在项目的 package.json 里添加类似于如下代码

```
"scripts": {
    "package": "electron-packager ./ my-app --platform=linux --arch=armv7l --out=./app --overwrite --electron-version=11.1.0 --icon=./myicon.ico"
}
```

> 命令参数说明:
> location of project:项目所在路径,这里的./表示安装在当前目录下。
> name of project:打包的项目名字,这里命名为my-app。
> platform:确定了你要构建哪个平台的应用(Windows、Mac 还是 Linux)
> architecture:决定了使用 x86 还是 x64 还是两个架构都用
> electron version:electron-prebuilt 的版本

(3)使用命令`npm run-script package`即可打包
打包完成之后文件夹里会多一个名为“app”的子文件夹,在这个子文件夹里打包好的项目。(下图是打包了三次之后的结果)

 

三、在Windows操作系统下


 

四、在Linux操作系统下

在Linux下运行`npm start`命令的结果如下图所示:

将打包的项目复制到Linux下的运行结果。(注:需要先使用命令`chmod 777 ./my-app`给应用程序授权)

 

五、在KYLIN操作系统下

不知道为什么,在KYLIN操作系统下一直报错,我尝试了很多方法,都没能解决。

将前面的三种打包的文件复制到KYLIN操作系统进行操作也报错。

 

作者:杨慧慧

本文转自【中国信创服务社区】

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

electron在Windows、Linux和KYLIN操作系统下的不同表现 的相关文章

  • 如何从脚本向 sudo 提供密码?

    请注意 这是在我的本地计算机上运行的来宾虚拟机 VBox 我不担心安全性 我正在编写一个将在 Linux Ubuntu VM 上执行的脚本myuser用户 该脚本将在下面创建一个非常大的目录树 etc myapp 目前我必须手动完成所有这些
  • Windows 批处理文件:如何启用命令的内联回显

    如果在 Windows 批处理文件中默认禁用 echo 是否有办法为特定命令 内联 启用它 我知道可以回显特定命令disabled通过在命令前添加 但是有没有办法做相反的事情呢 例如 假设有一个像这样的批处理文件 echo off cmd1
  • 如何使用sprof?

    请举例说明 从邮件中找到here http sources redhat com ml libc alpha 2003 07 msg00029 html and here http sourceware org ml binutils 20
  • 如何使用 tmuxinator 在 tmux 中拆分水平窗格内的两个垂直窗格

    目前我的 tmuxinator yml 文件中有这个 windows editor layout main horizontal panes vim server rails s 这给了我两个窗口 一个用于编辑器 另一个用于服务器 在编辑器
  • Linux下的C#,Process.Start()异常“没有这样的文件或目录”

    我在使用 Process 类调用程序来启动程序时遇到问题 可执行文件的层次结构位于 bin 目录下 而当前工作目录需要位于 lib 目录下 project bin a out this is what I need to call lib
  • Windows 中“nice”的等效词

    Windows 中是否有相当于 Unix 命令的命令 nice 我正在专门寻找可以在命令行中使用的东西 并且not任务管理器中的 设置优先级 菜单 我在谷歌上寻找这个的尝试被那些想不出更好形容词的人挫败了 如果您想在启动进程时设置优先级 您
  • 如何用C语言测量时间?

    我想知道某个代码块执行了多长时间 大约 像这样的事情 startStopwatch do some calculations stopStopwatch printf lf timeMesuredInSeconds How 您可以使用clo
  • bash双括号问题

    我对 bash 脚本非常陌生 在使用双括号时遇到了问题 我似乎无法让它们在 Ubuntu Server 11 10 中工作 我的下面的脚本位于 if test sh 中 bin bash if 14 14 then echo FOO fi
  • 在64位操作系统上以32位模式和64位模式编译ioctl函数的执行有什么不同?

    我有 64 位 Enterprise SuSE 11 我有一个应用程序 它打开 HIDRAW 设备并在其上操作 ioctl 函数以从该设备获取原始信息 如下所示 struct hidraw devinfo devinfo int fd op
  • Windows 控制台中的 C++ 按键输入

    我目前正在开发各种consoleWindows 中的游戏无法通过常规输入真正运行cin 我怎样才能 以简单的方式仅使用 MSVC 中提供的标准 Windows 库 让程序等待 特定 按键并返回按键 ID 它必须适用于包括箭头键在内的所有按键
  • 如果防火墙打开,Java 7 会阻止 Windows Vista 和 7 上的 FTP 传输。有任何想法吗?

    Java 7 阻止 Windows Vista 和 7 上的 FTP 传输 在 FTP 中 在传输文件之前 必须发送 PORT 或 PASV 命令 一旦发送其中一个命令 Windows 防火墙就会关闭发送该命令的套接字 仅当防火墙打开并且
  • 如何在Windows Git shell中运行./script.sh?

    也许这很尴尬 但是当我在 Git shell 中工作时 我无法在 Windows 上运行 sh 文件 也许我必须安装一些东西 但我认为 Git 会支持 bash 命令 我知道 Windows 不使用 sh 文件 我正在执行安装步骤游戏结束
  • 跟踪 pthread 调度

    我想做的是创建某种图表 详细说明 Linux 中 两个 线程的执行情况 我不需要查看线程的作用 只需查看它们何时被安排以及持续多长时间 基本上是一条时间线 在过去的几个小时里 我一直在互联网上搜索跟踪 pthread 调度的方法 不幸的是
  • jpackage linux 创建的桌面文件不足

    我刚刚开始使用 jpackage 它是一个非常棒的工具 只要迈出一步 我的肩上的工作就减轻了很多 我对看起来硬编码且无法定制的东西越感到惊讶 JPackage 自动生成启动器 lib
  • 使用 C++ 输出字符串覆盖 Linux 终端上的最后一个字符串

    假设我有一个命令行程序 有没有办法让我说的时候 std cout lt lt stuff 如果我不做std cout lt lt n 在另一个之间std cout lt lt stuff 东西的另一个输出将覆盖同一行上的最后一个东西 清理行
  • 如何以编程方式检索“Program Files”文件夹的实际路径? [复制]

    这个问题在这里已经有答案了 可能的重复 C 如何在 Windows Vista 64 位上获取程序文件 x86 https stackoverflow com questions 194157 c sharp how to get prog
  • C# 系统 CPU 使用情况并与 Windows 任务管理器同步

    这是一个由两部分组成的问题 我想将我的代码发布到堆栈上以帮助其他人完成相同的任务 问题一 我有一个代码子集 我相信它可以根据测量间隔正确测量 CPU 使用情况 根据检索的时间跨系统中的尽可能多的核心 我在线程调用中使用 1 秒 我必须从网上
  • Docker DNS 设置

    我尝试使用自定义网络和 dos 设置创建 docker 容器 docker网络创建 driver bridge opt com docker network bridge enable ip masquerade true opt com
  • 系统错误 124 - SHFileOperation 的 ERROR_INVALID_LEVEL

    我在使用时遇到问题SHFileOperation SHFileOperation SHFILEOPSTRUCT https stackoverflow com questions 9191415 shfileoperation shfile
  • 在中断时获取 current->pid

    我正在Linux调度程序上写一些东西 我需要知道在我的中断到来之前哪个进程正在运行 当前的结构可用吗 如果我在中断处理程序中执行 current gt pid 我是否可以获得我中断的进程的 pid 你可以 current gt pid存在并

随机推荐

  • springboot错误: 找不到或无法加载主类

    IDEA如果遇到创建完springboot后 要简单运行 xff0c 却出现找不到或者无法加载主类的这种情况 请再maven那边先clean下 gt 然后再打包package 这样再重新运行就好啦 记得是在Maven gt Lifecycl
  • Linux驱动简介和开发流程--Linux驱动学习(1)

    Linux驱动简介和开发流程 学习笔记 Linux 驱动的分类 Linux三大设备驱动 1 字符设备驱动 IO的传输过程是以字符为单位的 xff0c 没有缓冲 比如I2C SPI都是字符设备 2 块设备驱动 IO传输过程中是以块为单位的 跟
  • 性能优化与内存优化

    性能优化 主要以这四个方向进行优化 xff1a 稳定流畅耗损apk 瘦身 稳定 避免内存溢出异常捕获反馈机制 流畅 卡顿的原因 xff1a 布局复杂动画过多View 的过度绘制UI 耗时操作频繁 GC 耗损 减少没必要的网络访问或合并相关网
  • java 实现快速排序

    1 介绍 快速排序是对冒泡排序的一种改进 它的基本思想是 xff1a 通过一趟排序将要排序的数据分割成独立的两部分 xff0c 其中一 部分的所有数据都比另外一部分的所有数据都要小 xff0c 然后再按此方法对这两部分数据分别进行快速排序
  • 计算机网络——FTP网络服务器

    目录 一 实验目的与要求 二 实验内容与方法 三 实验步骤与过程 一 实验目的与要求 学习安装 使用FTP服务器软件和FTP客户端软件 xff0c 掌握基本的FTP传输数据的控制方式 xff0c 能对FTP协议数据包抓取并进行分析 实验环境
  • 树莓派踩坑之VNC Timed out waiting for a response from the computer

    笔者纯小白入坑树莓派 xff0c 今天在通过VNC viewer 对树莓派进行远程操作时遇到了超时报错 xff0c 报错如下 xff1a VNC Timed out waiting for a response from the compu
  • 系统System.img解包和重新打包过程

    系统System img解包和重新打包过程 把system img转换成ext4格式 simg2img system img system ext4 img 挂载ext4到systemMount目录进行修改 sudo mount syste
  • 腾讯地图 API 调用入门

    本文仅为腾讯地图 API 调用入门 xff0c 如需进阶学习 xff0c 请在腾讯位置服务网站上进行学习 登陆网址 https lbs qq com 点击右上角的登陆按钮 xff0c 需要进行注册按照流程进行就好 完成之后 xff0c 选择
  • QT安装过程中遇到的问题

    问题描述 xff1a 安装了qt安装包后sudo qt opensource linux x64 5 14 2 run显示找不到命令 解决办法 xff1a 把这个文件变成可执行文件 chmod 43 x qt opensource linu
  • 解决Idea升级安装过程中出现Missing essential plugin: com.intellij (platform prefix: null) 的问题

    在进行idea从2020 2升级到2022 1安装成功启动的时候会报这个错 xff1a Missing essential plugin com intellij platform prefix null Please reinstall
  • 吐血整理!SpringMVC常用简单注解(超详细)

    注解解析直达目录 1 用于接收前端给后端的json数据 64 RequestBody 1 1需求分析1 2具体情境1 3最佳实操1 4运行结果以及分析 2 获取restful风格url中的参数值 64 PathVariable 2 1需求分
  • Expression #1 of ORDER BY clause is not in SELECT list, references column ‘d.dept_no‘ which is not i

    问题 xff1a 34 Expression 1 of ORDER BY clause is not in SELECT list references column 39 d dept no 39 which is not in SELE
  • Ubuntu 安装和配置 git

    安装 sudo apt get update y sudo apt get upgrade y sudo apt install git 检查 git version 配置 git config global user name 34 用户
  • Centos检查进程是否关闭的shell脚本

    在运维工作当中会遇到程序打不开或者不工作的类似情况 xff0c 有部分原因是因为维持这个服务的某个进程关闭了 xff0c 这时候需要检查哪些进程是否挂掉了 xff0c 由于进程较多一个个来检查的话效率太慢 在这里给伙伴们安利一个简单实用的检
  • 基于SpringBoot和vue的移动端音乐网站的设计与实现

    1 xff0c 项目介绍 基于SpringBoot和vue的移动端音乐网站拥有两种角色 xff0c 分别为管理员和用户 用户 xff1a 歌单分类 xff1b 歌手分类 xff1b 仿网易云音乐播放 xff1b 音乐收藏 xff1b 音乐评
  • 前端-01Html5基本知识

    1 基本 1 1 第一个前端程序 内容 lt html gt lt head gt lt title gt 我的网页 lt title gt lt head gt lt body gt Hello 我的第一个网页 lt body gt lt
  • 使用maven来进行JavaSE增删改查

    首先得搞清楚maven是什么 xff1f Maven是一款服务于Java平台的自动化构建工具 Maven 作为 Java 项目管理工具 xff0c 可以用作包管理 xff0c 可以支持整个项目的开发 打包 测试及部署等一系列行为 maven
  • 银河麒麟桌面操作系统V10上安装的docker常规使用及注意事项

    前言 本文介绍银河麒麟桌面系统V10上docker的常规使用及注意事项 一 docker信息 银河麒麟桌面系统V10预装的docker xff0c 且开机自动启动了docker服务 查看服务状态 systemctl status docke
  • 背包九讲PDF

    本资料仅限个人学习交流使用 xff0c 不得用于商业用途 背包九讲PDF xff1a https pan baidu com s 17rTxMwCo9iSTOW77yucdXQ 提取码 xff1a xbqa 转载于 https www cn
  • electron在Windows、Linux和KYLIN操作系统下的不同表现

    一 electron简介 Electron 是一个由 Github 开发 用 HTML xff0c CSS 和 JavaScript 来构建跨平台桌面应用程序的框架 xff0c 然后这些应用程序可以打包在macOS Windows和Linu