electron的基本教程
安装
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的基本教程相关推荐
- editor修改样式 vue_手摸手Electron + Vue实战教程(三)
系列文章: 手摸手Electron + Vue实战教程(一) 手摸手Electron + Vue实战教程(二) ❝ 上一篇我们已经完成了左侧菜单栏的基本样式功能,这一篇我们就主要来开发右侧的Markd ...
- 快速简洁的Vue+Electron项目搭建教程
Vue+Electron项目搭建教程 最近写一个项目,需要使用Electron集成Vue,特此记录搭建过程 Vue+Electron 常用搭建方式 在之前,通常我们会使用electron-vue脚手架 ...
- Electron初阶教程大结局
Electron初阶教程大结局 前情回顾 未来计划 感谢 前情回顾 前面我们通过14篇文章的篇幅,以理论知识和案例实践的方式从0开始进行了Electron开发跨平台桌面客户端的讲解和案例展示,通过该系 ...
- electron调用python_electron教程(一): electron的安装和项目的创建
Hello World! We are using node , Chrome , and Electron .
- electron安装代理教程
https://zhuanlan.zhihu.com/p/260122142 问题1: 问题内容:cnpm : 无法加载文件 C:\Users\TLGD\AppData\Roaming\npm\cnp ...
- 使用 Electron 构建桌面应用
作者:kmokidd 链接:https://zhuanlan.zhihu.com/p/20225295 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 译者注:前一段 ...
- 三国杀开源系列之九-vscode调试electron
好久没填这个系列的坑了,最近有朋友问,所以就更一篇.主要内容是写vscode调试electron的方法. 这个noname的三国杀框架用js写的,没有任何参考文档,调试梳理代码非常麻烦.最开始使用了s ...
- animation基础练习源码_用vue简单写一个音乐播放组件「附源码」
作者:vipbic 转发链接:https://segmentfault.com/a/1190000022980992 前言 上次小编也分享一个关于Vue 开发过音乐播放对项目: 基于 electron ...
- flutter从0到1构建大前端应用 pdf_前端骨架屏都是如何生成的
作者:SHERlocked93 转发链接:https://mp.weixin.qq.com/s/j2XzwLPnalDCNaKkfjH-0Q 前言 相比于早些年前后端代码紧密耦合.后端工程师还得写前端 ...
最新文章
- python代码实现堆排序
- Android及java中list循环添加时覆盖的问题-20171021
- 4号meeting room的好处
- 部署webservice到远程服务器
- lamp和php,[LAMP]Apache和PHP的结合
- 断电,软件崩溃,系统中毒,未点击保存,就关闭导致资料丢失,以word文件文件为例,如何找回
- 01_Android应用开发环境_01_android发展史及系统架构
- 杭电1596find the safest road
- 2018 年开源技术 10 大发展趋势
- Java设计模式-简单工厂模式(Static Factory Method)
- Android软件自动更新升级(自动下载安装新版本)
- 8、虚拟串口(VSPT)使用小记
- 人造肉在中国还有未来吗?
- NGFW——安全策略的处理流程
- DPC(Defect Point Correction)------坏点校正
- 春联大全·七字联(1)
- 如何成为一名优秀的后端工程师
- [ctf.show.reverse] 吃瓜杯 签层饼,Tea_tube_pot
- 企业权限管理系统之角色操作资源权限管理(八)
- 基于STM32F103C8T6的HC-06蓝牙通信