小记:把react项目从web迁移到electron

electron的启动模版:electron项目启动模版资源-CSDN文库

使用vite构建,包含了react react-router-dom tailwindcss mui 主副进程通讯

使用:

解压后使用vscode打开

终端里:npm install

然后npm run dev

打包:

windows系统计算机

npm run build:win

国产操作系统计算机

npm run build:linux

javascript 复制代码
src/main/index.js:

//创建窗口,ipc通讯
..............

  //更新单位名称
  ipcMain.on("updatecompany", async (event, arg) => {
    // console.log(arg);
    const settings = {
      method: "PUT",
      headers: {
        Accept: "application/json",
        "Content-Type": "application/json"
      },
      body: JSON.stringify({
        companyname: `${arg}`
      })
    };
    const res = await fetch(`http://192.168.1.99:7077/api/v1/store/company`, settings);
    const data = await res.json();
    event.returnValue = data;
  });

  //获取单位名称
  ipcMain.on("getcompany", async (event) => {
    const res = await fetch(`http://192.168.1.99:7077/api/v1/store/company`);
    const data = await res.json();
    event.returnValue = data;
  });

...............
javascript 复制代码
scr/preload/index.js

import { contextBridge } from "electron";
import { electronAPI } from "@electron-toolkit/preload";

// Custom APIs for renderer
const api = {};

// Use `contextBridge` APIs to expose Electron APIs to
// renderer only if context isolation is enabled, otherwise
// just add to the DOM global.
if (process.contextIsolated) {
  try {
    contextBridge.exposeInMainWorld("electron", electronAPI);
    contextBridge.exposeInMainWorld("api", api);
  } catch (error) {
    console.error(error);
  }
} else {
  window.electron = electronAPI;
  window.api = api;
}

src/renderer/scr/....:

company.jsx 示例文件

javascript 复制代码
...
useEffect(() => {
     //ipc通讯
   
     const result = window.electron.ipcRenderer.sendSync("getcompany");
     companyRef.current.value = result.companyname;
  }, []);
...

home.jsx 主页文件

main.jsx 启动文件

routemain.jsx 路由定义文件

相关推荐
Aolith22 分钟前
我在React全栈项目中搭建了一个完整题库
数据库·react.js·全栈
Tongsr23 分钟前
别只混淆代码:用 Kaleido 加固整个 Android Release AAB
前端·算法·github
郭邯28 分钟前
从零到一:我用 AI 写了一个贷款计算器,顺便把等额本息公式彻底搞懂了
前端
汉堡大王952732 分钟前
面试官:讲讲归并排序 —— 为什么它能在面试里反复出现?
前端·javascript·面试
kyriewen39 分钟前
别再只给人写页面了:AI 已经开始自己点你的按钮、填你的表单
前端·javascript·人工智能
天天喝旺仔42 分钟前
Vue 3 组合式 API:从 Options 迁移到 script setup
前端·javascript·vue.js
知了清语43 分钟前
以测试为盾,重构为矛——老旧前端系统迭代中的“测试先行”实践总结
前端
攀小黑1 小时前
vue3+Web Speech API 封装了一个弹窗语音输入
前端·macos·xcode
roamingcode1 小时前
4.5 小时,从一句话需求到可安装的 Chrome 插件:一次 AI 结对开发的完整复盘
前端·人工智能·chrome·claude·codex
️学习的小王2 小时前
Windows Claude Code 接入 Playwright‑MCP,调用本机Edge浏览器(避坑完整教程)
前端·windows·edge