Electron案例解析-获取 Chrome、Node.js和Electron版本号的应用案例

实现效果

目录结构

index.html

html 复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />

<!-- 内容安全策略-->
    <meta
            http-equiv="Content-Security-Policy"
            content="default-src 'self'; script-src 'self'"
    />

    <meta
            http-equiv="X-Content-Security-Policy"
            content="default-src 'self'; script-src 'self'"
    />
    <!--窗口标题-->
    <title>你好,Electron!</title>
</head>
<body>

<h1>你好,Electron!</h1>
<p>👋</p>
<p id="info"></p>
</body>
<!-- 加载渲染进程的 renderer.js 文件 -->
<script src="./renderer.js"></script>
</html>

main.js

javascript 复制代码
//引入electron模块 app, BrowserWindow
const {app, BrowserWindow} = require('electron/main') //引入electron模块, app
const path = require('node:path') //引入path模块
//创建窗口
const createWindow = () => {
  const win = new BrowserWindow({
    //设置窗口大小 宽度800 高度600
    width: 800,
    height: 600,
    webPreferences: {  //网页设置
      preload: path.join(__dirname, 'preload.js') //设置预加载脚本
    }
  })
//加载index.html
  win.loadFile('index.html')
}

//当Electron完成初始化并且准备创建窗口时调用createWindow()
app.whenReady().then(() => {
  //在应用准备就绪时调用函数
  createWindow()

  //如果没有窗口打开则打开一个窗口 (macOS) 这个是必须处理的兼容性问题
  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow()
    }
  })
})

/**
 * 关闭所有窗口时退出应用 (Windows & Linux) 这个是必须处理的兼容性问题。
 * 这段代码是用于Electron框架中的事件监听,具体是监听window-all-closed事件。这个事件会在所有窗口都被关闭时触发。
 * 代码中的逻辑是,如果当前操作系统平台不是macOS('darwin'),则在所有窗口关闭后退出应用程序。
 * */
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') app.quit()
})

preload.js

javascript 复制代码
/**
 * 预加载脚本在加载"index.html"之前运行在渲染器中。
 * 它可以访问Web API以及Electronic的渲染器处理模块和一些多边填充Node.Js功能。
 * https://www.electronjs.org/docs/latest/tutorial/sandbox
 */
// 引入electron模块,contextBridge用于暴露接口到主进程
const { contextBridge } = require('electron/renderer')

// 在主进程暴露接口,接口名为versions,返回当前Node.js、Chrome和Electron的版本号
contextBridge.exposeInMainWorld('versions', {
    node: () => process.versions.node,          // 返回Node.js版本号
    chrome: () => process.versions.chrome,      // 返回Chrome版本号
    electron: () => process.versions.electron   // 返回Electron版本号
})

renderer.js

javascript 复制代码
//这个文件是renderer进程的入口文件,负责渲染页面的显示。

//获取info节点
const information = document.getElementById('info')
//改变info节点的文本内容,显示当前应用的版本信息,包括Chrome、Node.js和Electron的版本号,并显示在info节点中。
information.innerText = `这个应用使用了 Chrome (v${window.versions.chrome()}), Node.js (v${window.versions.node()}), and Electron (v${window.versions.electron()})`

styles.css

css 复制代码
//这里没有代码

获取 Chrome、Node.js和Electron版本号的应用案例的案例效果

相关推荐
只睡四小时5 小时前
MCP 弃用 SSE?Node 分帧漏 81.7% 事件
node.js·webassembly·实时通信·mcp·streamable http
其实防守也摸鱼13 小时前
Chrome 扩展安全攻防实录:从攻击面到防御实践
开发语言·前端·网络·chrome·安全·web安全·php
web打印社区13 小时前
Lodop排障总纲-常见报错一张表
开发语言·前端·javascript·chrome·websocket
hey you~15 小时前
个体户门店办理400电话,如何对接订单系统实现来电弹窗
node.js·webhook·400电话·门店数字化·来电弹窗·订单系统对接
super_Omni17 小时前
text/PDF/Word → 解析成纯文本 → 分词 → 词表匹配 → 加权打分 → 低于阈值
前端·chrome
甘晴void1 天前
我给 Magpie 做了个 macOS 桌宠:106 段动画,请求一多就亮灯
macos·electron·开源·deepseek·桌面宠物·magpie
还好还好不是吗1 天前
我把开源项目托管给 AI 了:一句话提需求,AI 自己开发、自己测试、自己提 PR
electron
YIAN2 天前
RAG 学到最后,我真正学会的不是“检索”,而是让系统知道自己缺什么
langchain·node.js·llm
用户11977079480732 天前
GitHub 电商开源项目分享:用 sharp 批量出饰品主图,试了裁剪、细节图和色彩配置文件三个坑
前端·node.js
donecoding2 天前
pnpm 配好了,为什么执行的还是另一份?命令入口与运行时排查
node.js·前端工程化