electron 入门

本文详细介绍了如何在Electron中安装、配置和使用main.js作为入口文件,涉及进程划分(主进程和渲染进程)、主进程的生命周期管理、nodeIntegration设置以及进程间通信(IPC)。还演示了如何通过contextBridge实现主进程与渲染进程之间的通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、安装electron

npm i electron

二、electron 基础知识

1.electron入口文件main.js

whenReady 当electron 初始化完成时创建窗口
app.whenReady().then()
BrowserWindow创建一个浏览器窗口
win.loadFile() 加载本地文件
win.loadUrl() 嵌入网页面内容
热更新插件
nodemon
electron-reload

//main.js
const path = require('path')
const { app, BrowserWindow, ipcMain } = require('electron')

// BrowserWindow,创建一个浏览器窗口
const createWindow = () => {
    const win = new BrowserWindow({
      width: 800,
      height: 600,
      show: false,
      webPreferences:{
        // nodeIntegration: true,
        // contextIsolation: false,
        sandbox: false,
        preload: path.resolve(__dirname, './preload.js')
      }
    })
  
    win.loadFile('index.html')
    win.webContents.openDevTools()
    win.on('ready-to-show',()=>{
      win.show()
    })

    const win2 = new BrowserWindow({
      width: 300,
      height: 400,
      parent: win,
      // modal: true
    })
    win2.loadURL('http://baidu.com')
  }

  app.on('window-all-closed',() => {
    console.log(100)
    if(process.platform==='darwin') {
      // 如果是mac系统下,彻底关闭浏览器窗口
      app.quit()
    }

  })

  ipcMain.handle('send-event', (event,msg)=> {
    console.log(msg)
    return msg
    })

  app.whenReady().then(() => {
    createWindow()
    app.on('activate',()=>{
      if(BrowserWindow.getAllWindows().length === 0){
        createWindow()
      }
    })
  })

2.进程

mainProcess 主进程 (唯一) RenderProcess 渲染进程(多个)

3.主进程的生命周期

关闭(mac中关闭窗口不会彻底关闭应用)

app.on('window-all-closed',() => {
    console.log(100)
    if(process.platform==='darwin') {
      // 如果是mac系统下,彻底关闭浏览器窗口
      app.quit()
    }

  })

激活

app.on('activate',()=>{
      if(BrowserWindow.getAllWindows().length === 0){
        createWindow()
      }
    })

4.配置node

webPreferences:{
         nodeIntegration: true,
        contextIsolation: false,
      }

5.进程通信ipc

通过contextBridge暴露给渲染进程

主进程中定义通信方法

  ipcMain.handle('send-event', (event,msg)=> {
    console.log(msg)
    return msg
    })

预加载中定义通信方法

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
})

页面中使用

document.querySelector('#btn').addEventListener('click',() => {
    myApi.handleSend()
})
### Electron框架入门教程 #### 什么是ElectronElectron 是一个用于构建跨平台桌面应用程序的开源框架,它允许开发者利用 JavaScript、HTML 和 CSS 创建原生桌面应用。通过嵌入 Chromium 和 Node.js,Electron 可以让开发者仅维护一套基于 Web 的代码库,从而实现跨 Windows、macOS 和 Linux 平台的应用程序开发[^3]。 --- #### 安装与环境准备 要开始使用 Electron,首先需要安装 Node.js 和 npm(Node Package Manager)。可以通过以下命令验证是否已正确安装: ```bash node -v && npm -v ``` 如果尚未安装,请访问官方页面下载最新版本:[Node.js官网](https://nodejs.org/)。 接着,在项目目录下初始化一个新的 Node.js 应用程序,并安装 Electron: ```bash npm init -y npm install electron --save-dev ``` 上述操作会创建 `package.json` 文件并将 Electron 添加到项目的依赖项中[^1]。 --- #### 基本结构 一个典型的 Electron 应用通常包含以下几个文件: - **main.js**: 这是主进程脚本,负责管理窗口和操作系统之间的交互。 - **index.html**: 渲染界面的内容。 - **renderer.js (可选)**: 渲染进程中使用的逻辑脚本。 下面是一个简单的示例配置: ##### main.js 这是主进程的核心部分,定义了如何启动和关闭应用程序以及创建浏览器窗口。 ```javascript const { app, BrowserWindow } = require('electron'); function createWindow() { const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, contextIsolation: false, }, }); win.loadFile('index.html'); } app.whenReady().then(() => { createWindow(); app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow(); } }); }); app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit(); } }); ``` ##### index.html 这是一个基本的 HTML 页面,作为应用的主要视图。 ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Electron App</title> </head> <body> <h1>Hello from Electron!</h1> <p>This is a basic example of an Electron application.</p> </body> </html> ``` --- #### 启动应用 完成以上设置后,可以在 `package.json` 中添加一条启动脚本来简化流程: ```json { "name": "my-electron-app", "version": "1.0.0", "main": "main.js", "scripts": { "start": "electron ." } } ``` 随后运行以下命令来启动您的第一个 Electron 应用: ```bash npm start ``` 这将会打开一个带有自定义内容的新窗口[^2]。 --- #### 使用 electron-vite 加速开发 对于希望提升性能和体验的开发者来说,可以尝试使用 electron-vite 工具链。该工具旨在提供更快、更精简的开发体验,主要分为五个模块化组件进行优化[^2]。以下是其快速搭建方法: ```bash npm create vite@latest my-electron-project --template vanilla cd my-electron-project npm install electron @electron/vite-plugin-main-process-renderer ``` 更多细节请参考官方文档或相关资源链接。 --- 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值