之前我们已经用html+css+js创建了一个项目,现在将这个项目用electron以应用程序呈现。

1,首先新建一个文件夹,从终端进入该文件夹:

2,在该文件夹下执行npm init,初始化该项目。

(主要要填写description、author和name等关键值,不填写的话后面打包会报错)

执行完毕,在该文件夹下会多出一个package.json文件。

3,然后在vscode(或其他编辑器)中打开该文件夹,安装electron:

npm install electron --save-dev  或  yarn add electron --dev,建议使用yarn。

如果安装electron报错:

RequestError: read ECONNRESET

具体解决方法如下:

  • npm install electron 执行后, 当运行到node install.js时, 中断执行( windows cmd用ctrl+c)
  • 进入 node_modules/electron文件下, 编辑install.js
  • 修改downloadArtifact这段代码, 添加淘宝镜像地址
downloadArtifact({
version,
artifactName: 'electron',
force: process.env.force_no_cache === 'true',
cacheRoot: process.env.electron_config_cache,
checksums: process.env.electron_use_remote_checksums ? undefined : require('./checksums.json'),
mirrorOptions:{
    mirror:'https://cdn.npm.taobao.org/dist/electron/',
    platform,
    arch,
  }
}).then(extractFile).catch(err => {
console.error(err.stack);
process.exit(1);
});
  • 然后在当前目录 的cmd中执行 node install.js

4,打开package.json,将main的值修改为main.js

5,打开main.js:

const electron = require("electron");
const { app, ipcMain, BrowserWindow, screen } = electron;
const path = require('path'); let win;
let isMaximized = false;
let size;
app.on("ready", (e) => {
size = screen.getPrimaryDisplay().workAreaSize;
win = new BrowserWindow({
width: 1280,
height: 800,
resizable: false,
frame: false,
fullscreenable: true,
backgroundColor: "transparent",
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
preload: path.join(__dirname, './preload.js')
},
});
app.setAppUserModelId("测试工具");
win.loadURL(__dirname + "/index.html");
win.show();
win.webContents.openDevTools({ mode: "detach" });
}); ipcMain.on("window-mini", () => {
win.minimize();
}); ipcMain.on("window-toggleScreen", () => {
isMaximized = !isMaximized;
let h = isMaximized ? size.height : 800;
let w = isMaximized ? size.width : 1280;
win.setBounds({
height: h,
width: w,
x: Math.floor((size.width - w) / 2),
y: Math.floor((size.height - h) / 2),
});
});
ipcMain.on('window-close', () => {
win.close();
win.destroy();
app.quit();
app.exit();
})

新窗体打开控制台:win.webContents.openDevTools({ mode: "detach" });

预加载文件:preload.js:

window.ipcRenderer = require('electron').ipcRenderer;
window.shell = require('electron').shell;
window.fs = require('fs');
window.path = require('path');,

6,在package.json中添加:

  "scripts": {
"start": "electron ."
},

7,将html+css+js创建的项目复制到当前文件夹,运行npm start,启动electron应用程序:

一,创建一个electron应用程序的更多相关文章

  1. 002.Create a web API with ASP.NET Core MVC and Visual Studio for Windows -- 【在windows上用vs与asp.net core mvc 创建一个 web api 程序】

    Create a web API with ASP.NET Core MVC and Visual Studio for Windows 在windows上用vs与asp.net core mvc 创 ...

  2. 使用IDEA创建一个Servlet应用程序

    使用IDEA创建一个Servlet应用程序 第一步:创建web应用 选择web application应用,之后填写项目名称等. 第二步:项目配置 在WEB-INF目录下创建两个文件夹:classes ...

  3. 使用 Android Studio 开发工具创建一个 Android 应用程序,显示一行文字“Hello Android”,并将应用程序的名称更改为“FirstApp”。

    需求说明: 使用 Android Studio 开发工具创建一个 Android 应用程序,显示一行文字"Hello Android",并将应用程序的名称更改为"Firs ...

  4. 使用 Android Studio 开发工具创建一个 Android 应用程序,并在 Genymotion 模拟器上运行

    需求说明: 使用 Android Studio 开发工具创建一个 Android 应用程序,并在 Genymotion 模拟器上运行 实现步骤: 打开 Android Studio,创建一个 Andr ...

  5. VB6 如何创建一个标准控制台程序

    打开 VB6 并新建一个标准EXE程序,把窗口删掉,然后再加入一个模块. 在模块中加入AllocConsole.FreeConsole.SetConsoleTitle.Sleep的API声明: Pub ...

  6. Create an XAF Application 创建一个XAF应用程序

    This topic describes how to use the Solution Wizard to create XAF applications and specify a connect ...

  7. 创建一个简单MyBatis程序

    文章目录 MyBatis基础 MyBatis 简介 创建一个MyBatis程序 1. 创建Java项目 2. 加载MyBatis包 3. 编写POJO类和映射文件 4.创建mybatis-config ...

  8. 创建一个Windows Service 程序

    1.新建Windows项目,选择"Windows服务"类型的项目. 2.在生成的Service1.cs中代码中写你需要的代码,如下: using System; using Sys ...

  9. 创建一个应用台程序,声明一个 int变量,并且初始化数组,通过while语句输出数组内的所有成员。

    ]{,,,,}; ; ) { Console.WriteLine("myNum[{0}]的值为{1}", s,myNum[s]); s++; } Console.ReadLine( ...

  10. 如何用VB.Net创建一个三层的数据库应用程序

    [b]1.[/b][b]概论:[/b] 本文将介绍如何创建一个三层应用程序,并且将介绍如何创建一个Web Service服务. ADO.NET创建Windows三层结构应用程序的体系架构如下图所示: ...

随机推荐

  1. C# Winform 多线程更新界面UI控件,解决界面卡顿问题(转)

    前言 多线程刷新界面主要用到多线程,委托,线程安全.事件等一系列高难度的C#操作. 1.使用timer控件对要刷新的控件进行定时刷新 对刷新频率要求不高的时候,可以使用该方法. 2.刷新UI控件 在开 ...

  2. 【python基础教程】-10.开箱即用(模块的工作原理,获悉模块的功能以及常用模块)

    资料来源 (1) Python基础教程第三版 1.模块的工作原理 1.1 简单的模块及使用 1.1.1 模块的本质 (1) 模块就是程序,任何python程序都可以作为模块导入; 1.1.2 简单的模 ...

  3. office2016word打开总是提示安全模式

    突然打开word和Excel提示是否使用安全模式,如果选择否就自动退出office,选择是进入后,编辑一下也会自己退出,非常郁闷. 之后上网查看,尝试了许多: 1.win+R 运行%appdata%\ ...

  4. nginx转发端口路由器再转发

    场景 nginx 转发端口 路由器二次转发了,端口不一样 (shiro 或者其他一些权限控制架构会自动跳转,导致的端口不对.) proxy_set_header Host $host:$proxy_p ...

  5. win11 改键盘映射

    编辑注册表:按下win+r,输入regedit找到这个路径HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Control\ Keyboard Layout ...

  6. linux命令添加至环境变量

    vim /etc/profile 最后一行添加 /usr/local/nginx/sbin/  命令目录 export PATH="/usr/local/nginx/sbin/:$PATH& ...

  7. java 实现读取本地日志文件列表并在浏览器上显示

    import org.springframework.core.io.Resource; import org.springframework.core.io.UrlResource; import ...

  8. mac怎么设置开机自启动项,mac选择开机启动项

    转自 https://www.zhangshilong.cn/work/386853.html Login Items Mac OSX的当前用户成功登录后启动的程序,该类别的启动项配置文件存放在~/L ...

  9. CF1067E 题解

    题意 传送门 给定一棵 \(n\) 个节点的树,每条边有 \(\frac{1}{2}\) 的概率出现,可以得到一个森林,求这个森林邻接矩阵的秩的期望. \(1\le n\le5\times10^5\) ...

  10. JMeter压测基础(二)——Mysql数据库

    JMeter压测基础(二)Mysql数据库 环境准备 mysql驱动 JMeter jdbc配置 JMeter jdbc请求 1.下载mysql驱动:mysql-connector-java.jar ...