electron 电子React样板溅屏

cbwuti44  于 2022-12-08  发布在  Electron
关注(0)|答案(1)|浏览(220)

我有一个使用electron-react-boilerplate示例化的电子应用程序。我想添加一个闪屏。也就是说,我有以下代码:

splash = new BrowserWindow({
        icon: getAssetPath("icon.png"),
        transparent: true,
        alwaysOnTop: true,
        frame: false,
        height: 600,
        width: 800,
    });

splash.loadURL(resolveHtmlPath("splash.html"));

其中,resolveHtmlPath由以下代码定义:

let resolveHtmlPath: (htmlFileName: string) => string;

if (process.env.NODE_ENV === "development") {
    const port = process.env.PORT || 1212;
    resolveHtmlPath = (htmlFileName: string) => {
        const htmlUrl = new URL(`http://localhost:${port}`);
        htmlUrl.pathname = htmlFileName;
        return htmlUrl.href;
    };
} else {
    resolveHtmlPath = (htmlFileName: string) => {
        const myurl = url.format({
            pathname: path.resolve(__dirname, "../renderer/", htmlFileName),
            protocol: "file:",
            slashes: true,
        });
        return myurl;
    };
}

我知道electron-react-boilerplate在打包期间构建react应用程序,并创建一个html index.html文件,该文件将提供给渲染器进程。

7vhp5slm

7vhp5slm1#

如果你使用电子制造商,你可以像我一样做这个。
package.json文件中,我添加extra-ressources如下:

"build": {
    "productName": "exemple",
    ... 
    "extraResources": [
      "./assets/**",
      "./splash/**",
    ]
  },
...

extra-ressources中的所有文件夹,在应用程序打包时都可在ressources文件夹中使用。docs
main.ts中,我使用tenary运算符来验证我的应用程序是否已打包,然后,我将获得闪屏的路径。

const splash = new BrowserWindow({
    width: 1024,
    height: 728,
    movable: true,
    center: true,
    icon: getAssetPath('icon.png'),
    transparent: true,
    frame: false,
  });

  const splashScreenSrc = app.isPackaged
    ? path.join(process.resourcesPath, 'splash', 'splash.html')
    : path.join(__dirname, '../../splash', 'splash.html');

  splash.loadFile(splashScreenSrc);

相关问题