当前位置: 首页 > news >正文

Electron入门笔记

chromium用于渲染页面 node.js用于后台操作 native用于操作os

这是进程通信流程 当需要操作os的的时候就需要用到进程通信 例如通过前端向磁盘写入文件

进入项目文件并且初始化项目

cd TingHack
npm init

必填项

scripts需要修改

最终代码 package.json

{
  "name": "tinghack",
  "version": "1.0.0",
  "main": "main.js",
  "scripts": {
    "start": "electron ."
  },
  "author": "Ting",
  "license": "ISC",
  "description": "TingHack"
}

先设置镜像源然后 下载相关工具 之后编译器有了代码提示

npm config set electron_mirror https://npm.taobao.org/mirrors/electron/ 
npm install --save-dev electron

执行 以下代码就有ui了

npm start

配置自动重启 每次修改代码后自动执行npm start

npm i nodemon -D

修改package.json

  "scripts": {
    "start": "nodemon --exec electron ."
  },

新建nodemon.json 代码如下

{
  "ignore":[
    "node modules",
    "dist"
  ],
  "restartable":"r",
  "watch":["*.*"],
  "ext":"html,js,css"
}

主进程(main.js)如果需要与渲染进程进行通信需要一个中间的进程 即预加载进程 (preload.js)

三个进行执行顺序是 主进程 预加载进程 渲染渲染进程 ,其中预加载进行可以使用主进程从一些函数 方法

其中渲染进程向主进程通信

const {contextBridge, ipcRenderer} = require('electron')
......
ipcRenderer.send('file-save', data)


const {app, BrowserWindow,ipcMain} = require('electron')
......
ipcMain.on('file-save', writeFile)

主进程 渲染进程双向通信

const {contextBridge, ipcRenderer} = require('electron')
......
async readFile() {
    return await ipcRenderer.invoke('file-read')
}


const {app, BrowserWindow,ipcMain} = require('electron')
......
ipcMain.handle('file-read',readFile)

打包项目

npm install electron-builder -D

可自定义的设置项如下

{
  "name": "video-tools",
  "version": "1.0.0",
  "main": "main.js",
  "scripts": {
    "start": "electron .",
    "build": "electron-builder"
  },
  "build": {
    "appId": "com.atguigu.video",
    "win": {
      "icon": "./logo.ico",
      "target": [
        {
          "target": "nsis",
          "arch": ["x64"]
        }
      ]
    },
    "nsis": {
      "oneClick": false,
      "perMachine": true,
      "allowToChangeInstallationDirectory": true
    }
  },
  "devDependencies": {
    "electron": "^30.0.0",
    "electron-builder": "^24.13.3"
  },
  "author": "宝码香车",
  "license": "ISC",
  "description": "A video processing program based on Electron"
}

相关文章:

  • gpon 业务
  • Global top sap abap 和deepseek对话,测试其abap推理能力
  • React 之 Redux 第二十九节 Redux各项组成详解
  • 选型消息队列(MQ):ActiveMQ、RabbitMQ、RocketMQ、Kafka对比
  • Rust 之一 基本环境搭建、各组件工具的文档、源码、配置
  • laravel Blade 模板引擎
  • OpenManus:3小时复刻 Manus(OpenManus安装指南)
  • 位置注意力机制详解
  • vue组件库el-menu导航菜单设置index,地址不会变更的问题
  • 考研复习,主动学习”与“被动接收”的结合之道
  • 深入理解并实践call、apply、bind三大金刚
  • 【python|二分|leetcode441】一题搞清楚二分区间问题---闭区间、左闭右开、左开右闭、全开区间
  • DeepSeek引领端侧AI革命,边缘智能重构AI价值金字塔
  • PPT:仓储管理与WMS
  • 在VMware Workstation Pro上轻松部署CentOS7 Linux虚拟机
  • 数据篇| App爬虫入门(一)
  • datax-coud部署
  • Flutter中stream学习
  • PyTorch调试与错误定位技术
  • Dify Web 前端独立部署指南(与后端分离,独立部署)
  • 做企业网站制作/网络项目资源网
  • 做推送的网站除了秀米还有/如何自己做一个网址
  • vps网站能打开/电商网页
  • 青岛专业建设网站/新站整站快速排名
  • 深圳有做公司网站/建站优化
  • 广州办营业执照在哪里办理/上海网站搜索引擎优化