现成的react项目直接转electron(1)能本地运行

需求:将现成的react项目转为electron项目,本地能运行起来

难点:完全不懂electron

知识点:electron相关

更新一把:这个可以不用看了,可以看下重构的文章

现成的react项目直接转electron(2)能本地运行,打包,【web层,渲染层,主进程】之间的互相通信交互

1. 先安装electron

npm install electron cross-env electron-is-dev --save-dev

 2.根目录下创建electron文件夹,里面创建main.js,用于写electron的相关配置

// main.js
const { app, BrowserWindow } = require('electron');
const path = require('path');
const isDev = require('electron-is-dev'); // 是否为开发环境
function createAppWindow(config, urlLocation) {
  // 相关配置 后续出一个详细的列表
  const basicConfig = {
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true,
      enableRemoteModule: true,
      nodeIntegrationInWorker: true,
      contextIsolation: false,
      webSecurity: false,
      webviewTag: true,
      allowRunningInsecureContent: true,
      sandbox: false,
      additionalArguments: [
        '--disable-features=OutOfBlinkCors'
      ]
    },
    show: false,
    backgroundColor: '#efefef',
  };
  const finalConfig = { ...basicConfig, ...config };
  const mainWindow = new BrowserWindow(finalConfig);
  mainWindow.loadURL(urlLocation);
  mainWindow.once('ready-to-show', () => {
    mainWindow.show();
  });
  return mainWindow;
}

app.on('ready', () => {
  const mainWindowConfig = {
    width: 1440,
    height: 768,
  };
  console.log(isDev);
  const urlLocation = isDev
    ? 'http://192.168.x.xxx:8080/' // 本地react起来的地址
    : `file://${path.join(__dirname, './index.html')}`;
  let mainWindow = createAppWindow(mainWindowConfig, urlLocation);
  mainWindow.on('closed', () => {
    mainWindow = null;
    app.quit();
  });
});

3.react使用了vite构建,启动的时候,electron和react要一起启动

// pageage.json
"electron:start": "concurrently \"electron ./electron/main.js\" \"cross-env BROWSER=none vite\"", // 启动electron
"start": "vite --host 0.0.0.0 --mode dev" // 启动react

 4.启动成功后发现了一个bug,比较意外,react中没问题,electron中会失效

// 原react环境代码片段
val.path = val.webkitRelativePath ? val.webkitRelativePath : val.name;
// path 为上传图片选中的单张图片信息中本地的图片名字,修改时发现三元运算符没效果,以为不兼容,没想到时单张图片的信息的原字段path无法更改(暂未深究是属于对象的问题还是本地图片权限的问题),这个时候需要新建一个字段去更新这个新的path
// electron环境下更改后的代码片段
val.newPath = val.webkitRelativePath ? val.webkitRelativePath : val.name;

参考资料链接 

vite+react-ts+electron 开发桌面端

electron业务需求和electron打包

后续持续更新中.... 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸喵小宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值