安装

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

{"name": "my-electron-app","version": "1.0.0","description": "","main": "main.js","scripts": {"start": "electron .","test": "echo \"Error: no test specified\" && exit 1"},"author": "","license": "ISC"
}

安装electron

npm install --save-dev electron

如果安装过程出现下面这个错误:

解决方法

npm config set ELECTRON_MIRROR http://npm.taobao.org/mirrors/electron/
npm install --save-dev electron

运行

修改package.json

“main”: “main.js”
“start”: “electron .”

{"name": "my-electron-app","version": "1.0.0","description": "","main": "main.js","scripts": {"start": "electron .","test": "echo \"Error: no test specified\" && exit 1"},"keywords": [],"author": "","license": "ISC","devDependencies": {"electron": "^21.0.1"}
}

创建index.html

<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP --><metahttp-equiv="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>.</body>
</html>

创建main.js

app 模块,它控制应用程序的事件生命周期。
BrowserWindow 模块,它创建和管理应用程序 窗口。

const { app, BrowserWindow } = require("electron");const createWindow = () => {const win = new BrowserWindow({width: 800,height: 600,});win.loadFile("./index.html");
};app.whenReady().then(() => {createWindow();
});

运行

npm run start

优化一下

问题:每次修改完代码后,必须重新执行 npm run start才能展现最新的页面

解决方法:

npm install nodemon -D

“start”: “nodemon --exec electron .”

修改package.json

{"name": "my-electron-app","version": "1.0.0","description": "","main": "main.js","scripts": {"start": "nodemon --exec electron .","test": "echo \"Error: no test specified\" && exit 1"},"keywords": [],"author": "","license": "ISC","devDependencies": {"electron": "^21.0.1","nodemon": "^2.0.20"}
}

electron读写本地文件

webPreferences: {
nodeIntegration: true,
preload: path.resolve(__dirname, “./preload.js”),
},

const { app, BrowserWindow } = require("electron");
const path = require("path");const createWindow = () => {const win = new BrowserWindow({width: 800,height: 600,webPreferences: {nodeIntegration: true,preload: path.resolve(__dirname, "./preload.js"),},});win.loadFile("./index.html");// 打开开发者工具win.webContents.openDevTools();
};app.whenReady().then(() => {createWindow();
});
const { contextBridge, ipcRenderer, remote, shell } = require("electron");const fs = require("fs");console.log(11111111);
fs.writeFile("C:/Users/zyq/Desktop/entries/TSPractice/my-electron-app/test.txt","testabc",() => {console.log("完成了");}
);

contextBridge

问题:electron和h5页面如何通信

preload.js

const { contextBridge } = require("electron");contextBridge.exposeInMainWorld("myApi", {platform: process.platform,
});

index.html引入app.js文件

app.js

console.log(window.myApi.platform);

window上运行结果

主进程和渲染进程的通信

主进程main.js
ipcMain.handle(“send-event”, (event, msg) => {
console.log(msg);
return msg;
});

const { app, BrowserWindow, ipcMain } = require("electron");
const path = require("path");const createWindow = () => {const win = new BrowserWindow({width: 800,height: 600,webPreferences: {nodeIntegration: true,preload: path.resolve(__dirname, "./preload.js"),},});win.loadFile("./index.html");// 打开开发者工具win.webContents.openDevTools();
};app.whenReady().then(() => {createWindow();
});ipcMain.handle("send-event", (event, msg) => {console.log(msg);return msg;
});

preload.js把通信方法暴露给渲染进程

const { contextBridge, ipcRenderer } = require("electron");const handleSend = async () => {let fallback = await ipcRenderer.invoke("send-event", "发送的内容");console.log(fallback);
};
contextBridge.exposeInMainWorld("myApi", {platform: process.platform,handleSend,
});

渲染进程app.js

console.log(myApi.handleSend());

打包

npm install electron-builder -D

修改配置文件package.json
执行打包命令

npm run app:dist

如果打包过程出现错误,参看下面这个博客

electron打包错误解决办法

win系统上打包的结果如下


安装之后,就可以运行了


记得本地vue项目也要运行,不然看到页面。

electron的基本教程相关推荐

  1. editor修改样式 vue_手摸手Electron + Vue实战教程(三)

    系列文章: 手摸手Electron + Vue实战教程(一) 手摸手Electron + Vue实战教程(二) ❝ 上一篇我们已经完成了左侧菜单栏的基本样式功能,这一篇我们就主要来开发右侧的Markd ...

  2. 快速简洁的Vue+Electron项目搭建教程

    Vue+Electron项目搭建教程 最近写一个项目,需要使用Electron集成Vue,特此记录搭建过程 Vue+Electron 常用搭建方式 在之前,通常我们会使用electron-vue脚手架 ...

  3. Electron初阶教程大结局

    Electron初阶教程大结局 前情回顾 未来计划 感谢 前情回顾 前面我们通过14篇文章的篇幅,以理论知识和案例实践的方式从0开始进行了Electron开发跨平台桌面客户端的讲解和案例展示,通过该系 ...

  4. electron调用python_electron教程(一): electron的安装和项目的创建

    Hello World! We are using node , Chrome , and Electron .

  5. electron安装代理教程

    https://zhuanlan.zhihu.com/p/260122142 问题1: 问题内容:cnpm : 无法加载文件 C:\Users\TLGD\AppData\Roaming\npm\cnp ...

  6. 使用 Electron 构建桌面应用

    作者:kmokidd 链接:https://zhuanlan.zhihu.com/p/20225295 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 译者注:前一段 ...

  7. 三国杀开源系列之九-vscode调试electron

    好久没填这个系列的坑了,最近有朋友问,所以就更一篇.主要内容是写vscode调试electron的方法. 这个noname的三国杀框架用js写的,没有任何参考文档,调试梳理代码非常麻烦.最开始使用了s ...

  8. animation基础练习源码_用vue简单写一个音乐播放组件「附源码」

    作者:vipbic 转发链接:https://segmentfault.com/a/1190000022980992 前言 上次小编也分享一个关于Vue 开发过音乐播放对项目: 基于 electron ...

  9. flutter从0到1构建大前端应用 pdf_前端骨架屏都是如何生成的

    作者:SHERlocked93 转发链接:https://mp.weixin.qq.com/s/j2XzwLPnalDCNaKkfjH-0Q 前言 相比于早些年前后端代码紧密耦合.后端工程师还得写前端 ...

最新文章

  1. python代码实现堆排序
  2. Android及java中list循环添加时覆盖的问题-20171021
  3. 4号meeting room的好处
  4. 部署webservice到远程服务器
  5. lamp和php,[LAMP]Apache和PHP的结合
  6. 断电,软件崩溃,系统中毒,未点击保存,就关闭导致资料丢失,以word文件文件为例,如何找回
  7. 01_Android应用开发环境_01_android发展史及系统架构
  8. 杭电1596find the safest road
  9. 2018 年开源技术 10 大发展趋势
  10. Java设计模式-简单工厂模式(Static Factory Method)
  11. Android软件自动更新升级(自动下载安装新版本)
  12. 8、虚拟串口(VSPT)使用小记
  13. 人造肉在中国还有未来吗?
  14. NGFW——安全策略的处理流程
  15. DPC(Defect Point Correction)------坏点校正
  16. 春联大全·七字联(1)
  17. 如何成为一名优秀的后端工程师
  18. [ctf.show.reverse] 吃瓜杯 签层饼,Tea_tube_pot
  19. 企业权限管理系统之角色操作资源权限管理(八)
  20. 基于STM32F103C8T6的HC-06蓝牙通信

热门文章

  1. gazebo视角调整
  2. JavaSE项目 | 纯Java实现贪吃蛇小游戏
  3. 【解决方案】Linux图形界面远程显示Linux服务器的图形化窗口
  4. 2020-4-16 Java总结记录
  5. SAP 收入成本不配比是否启用发出商品科目以及差异分摊处理方案
  6. 股票的成交量和成交额
  7. 北京、上海家庭年收入情况统计 (zz)
  8. BIGEMAP如何用Arcg​is下DEM数据进行水文分析(二)
  9. LED学习及一个花样流水灯的实现
  10. 怎么下载pdf阅读器