当前位置: 首页> 文旅> 旅游 > 微信小程序怎么制作游戏_今日的重大新闻_seo站长论坛_腾讯企业邮箱

微信小程序怎么制作游戏_今日的重大新闻_seo站长论坛_腾讯企业邮箱

时间:2025/7/12 5:40:48来源:https://blog.csdn.net/weixin_41192489/article/details/144463655 浏览次数:0次
微信小程序怎么制作游戏_今日的重大新闻_seo站长论坛_腾讯企业邮箱

Electron 的基本原理

在这里插入图片描述
在这里插入图片描述

  • 只有一个主进程(Node环境)
  • 可以有任意多个渲染进程(浏览器环境)
    在这里插入图片描述
    主进程和渲染进程之间,通过预加载脚本通信。

在这里插入图片描述

应用启动后,先执行主进程,再执行预加载脚本,最后执行渲染进程。

  • 主进程内可执行所有 Node 的 api
  • 预加载脚本可执行部分 Node 的 api,但在渲染进程中执行
  • 渲染进程的执行环境与浏览器相同,用于解析 HTML , CSS , JS

Electron 的生命周期

常用的生命周期有:

  • ready 应用完成初始化
  • window-all-closed 所有的窗口都被关闭
  • will-quit 所有窗口被关闭,同时应用程序将退出
  • quit 应用程序退出

更多生命周期可参考官网 - app 的生命周期

使用范例:

// 在应用完成初始化后,创建窗口
app.on('ready', () => {createWindow()
})

主进程

src/main/index.ts
修改主进程代码后,需重启项目。

导入必要的方法和依赖

import { app,BrowserWindow} from 'electron'
import { join } from 'path'

封装创建窗口的方法

function createWindow(): void {const mainWindow = new BrowserWindow({width: 900,height: 670,// 默认隐藏窗口show: false,// 自动隐藏菜单autoHideMenuBar: truewebPreferences: {// 配置预加载脚本preload: join(__dirname, '../preload/index.js')}})// ready-to-show 事件时才显示窗口mainWindow.on('ready-to-show', () => {mainWindow.show()})// 将本地页面渲染到窗口mainWindow.loadFile('./src/renderer/index.html')
}

在 app 为 ready 状态后创建窗口

app.whenReady().then(() => {createWindow()
})

另一种写法为:

app.on('ready', () => {createWindow()
})

其他必要的配置

  // 【专门针对 macOS 的处理】因为 macOS 在所有窗口都关闭时,也不会退出应用// 当应用被激活时app.on('activate', function () {// 若没有其他窗口打开,则重新创建窗口if (BrowserWindow.getAllWindows().length === 0) createWindow()})
// 当应用关闭所有窗口时
app.on('window-all-closed', () => {// 若操作系统不为 macOSif (process.platform !== 'darwin') {// 退出应用app.quit()}
})

预加载脚本

用于实现主进程和渲染进程的通信,先于渲染进程,在浏览器环境中执行。

在创建窗口时,通过添加如下的配置,来加载对应的预加载脚本

import { join } from 'path'
    webPreferences: {// 配置预加载脚本preload: join(__dirname, '../preload/index.js')}

可执行的 Node 操作

  • 获取 process
// 在窗口中,按F12打开浏览器调试工具查看
console.log('process.versions', process.versions)

渲染进程

修改渲染进程代码,项目会自动刷新。

菜单

https://blog.csdn.net/weixin_41192489/article/details/144719913

进程通信 IPC

渲染进程调用预加载脚本

  1. 预加载脚本通过 contextBridge.exposeInMainWorld 暴露变量

暴露的变量,会成为 window 的属性!

import { contextBridge } from 'electron'
contextBridge.exposeInMainWorld('myAPI', {Electron_version: process.versions['electron']
})
  1. 渲染进程中通过 window 访问预加载脚本暴露的变量
const Electron_version = window.myAPI.Electron_version

从通信事件中获取触发事件的渲染进程的窗口

const webContents =event.sender
const win = BrowserWindow.fromWebContents(webContents)

开发提效

开发环境自动打开浏览器调试工具

  if (process.env.NODE_ENV === 'development') {mainWindow.webContents.openDevTools()}

使用 electron-vite

https://blog.csdn.net/weixin_41192489/article/details/144611858

关键字:微信小程序怎么制作游戏_今日的重大新闻_seo站长论坛_腾讯企业邮箱

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: