之前我们已经用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. vue2的响应式原理

    响应式的话,主要指的是这个状态改变以后,视图要去主动更新 这个过程,vue是通过两个步骤来实现的 1 数据的劫持 数据劫持也叫做数据拦截,通过Object.defineProperty来把对象中的每一 ...

  2. Ios安装charles

    1.浏览器打开chls.pro/ssh,不会弹出下载证书,所以使用以下方式: 2. 然后打开设置,可以看到描述文件,安装 检查:在"设置"-"描述文件"-查看描 ...

  3. SDIO接口WIFI&BT之相关常备知识

    SDIO接口WIFI&BT之相关常备知识 <VBAT>:>Main Power Voltage Soure Input      主电源输入(SDIO WIFI目前知道的都是 ...

  4. ACCESS中查询语句:查询所得数据另存到一个指定目录下的文件夹里,并新建新的文件

    select * into [excel 8.0 database=d:\aa.xls].sheet1 from bb where bb.cc="dd" excel 8.0 为什么 ...

  5. springboot返回前端对象null转为空字符串

    1 2 import com.fasterxml.jackson.core.JsonGenerator; 3 import com.fasterxml.jackson.core.JsonProcess ...

  6. SAP 删除销售订单行

    DATA: ORDER_HEADER_INX TYPE BAPISDH1X, GT_ORDER_ITEM_IN TYPE STANDARD TABLE OF BAPISDITM, LS_ORDER_I ...

  7. Luogu7912

    初中同学问我咋做,所以就写了一份题解. 先摆复杂度:均摊 \(O(n)\). 考虑,如果我们每次操作的复杂度都与输出量同阶,而输出量总量 \(O(n)\),则复杂度得到均摊. 于是我们现在要设计一个算 ...

  8. NOIP2022 游记

    无论结局如何,我都曾经来过. Day -1 zak 模拟赛,被殴打了. Day 0 上午 补模拟赛题. 下午 补模拟赛题. 徐老师过来分配了第二天下午造数据名单. 我造 T2.希望不会太难.(flag ...

  9. curl 命令工具

    curl工具 简介 curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP, FTPS,HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议. ...

  10. Java基础——二维数组

    package com.zhao.demo; public class Demo08 { public static void main(String[] args) { //二维数组 int[][] ...