• Vue 项目通过 electron 转为桌面应用


    1、将已有 Vue 项目打包。

    2、新建 main.js、package.json 文件

    将打包生成的 index.html、js、css、然后再和新建的 main.js、package.json 文件 放至一个目录下。并命令行切换至这个目录。

    新建的 main.js 如下:

    const { app, BrowserWindow } = require("electron"); // 引入electron
    let win;
    let windowConfig = {
      width: 800,
      height: 600,
    }; // 窗口的大小
    function createWindow() {
      win = new BrowserWindow(windowConfig); // 创建一个窗口
      win.loadURL(`file://${__dirname}/index.html`); // 加载打包生成的index.html
      win.webContents.openDevTools(); // 开启调试工具
      win.on("close", () => {
        //回收 BrowserWindow 对象
        win = null;
      });
      win.on("resize", () => {
        win.reload();
      });
    }
    app.on("ready", createWindow);
    app.on("window-all-closed", () => {
      app.quit();
    });
    app.on("activate", () => {
      if (win == null) {
        createWindow();
      }
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    新建的 package.json 如下:

    {
        "name": "demo",
        "productName": "项目名称",
        "author": "作者",
        "version": "1.0.4",
        "main": "main.js",
        "description": "项目描述",
        "scripts": {
            "pack": "electron-builder --dir",
            "dist": "electron-builder",
            "postinstall": "electron-builder install-app-deps"
        },
        "build": {
            "electronVersion": "1.8.4",
            "win": {
                "requestedExecutionLevel": "highestAvailable",
                "target": [
                    {
                        "target": "nsis",
                        "arch": [
                            "x64"
                        ]
                    }
                ]
            },
            "appId": "demo",
            "artifactName": "demo-${version}-${arch}.${ext}",
            "nsis": {
                "artifactName": "demo-${version}-${arch}.${ext}"
            },
            "extraResources": [
                {
                    "from": "./static/xxxx/",
                    "to": "app-server",
                    "filter": [
                        "**/*"
                    ]
                }
            ]
        },
        "dependencies": {
            "core-js": "^2.4.1",
            "electron-packager": "^12.1.0",
            "electron-updater": "^2.22.1"
        },
        "devDependencies": {
            "electron-forge": "^5.2.4"
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    3、安装包:

    yarn install
    (报错不用管,能 electron . 运行成功且效果正常就行)

    4、运行:

    electron .

    5、注意事项:

    • vue 项目 路由用 hash 模式。
    • vue 项目 的 vue.config.js 要配置 publicPath: './'
      (因为若不配置,则 electron 文件路径不对)
        module.exports = {
        	 lintOnSave: false,
        	 publicPath: './',
      		css: ....
      		....
         }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      index.html 中文件路径如以下正确显示:
      <link rel="icon" href="favicon.ico">
      <title>efficiency-helpertitle>
      <link href="css/chunk-11991773.33db9af5.css" rel="prefetch">
      <link href="css/chunk-17ca335a.ad6ca46b.css" rel="prefetch">
      <link href="css/chunk-3dde8fae.019eaf8d.css" rel="prefetch">
      <link href="css/chunk-4c9aec9b.410cb728.css" rel="prefetch">
      <link href="css/chunk-f52405ee.f4abe7d9.css" rel="prefetch">
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      若不配置 publicPath: './' 则:href=“/css/chunk-17ca335a.ad6ca46b.css” 路径错误。导致应用出现白屏。
  • 相关阅读:
    vue高频面试题
    你真的了解以用户为中心的理念吗?
    运动耳机什么款式好用、值得推荐的运动耳机
    面试题-堆栈相关
    wordpress实时在线聊天室
    模板方法模式,基于继承实现的简单的设计模式(设计模式与开发实践 P11)
    c++ 正则表达式的若干难查问题
    有关HTTP及HTTP的浅学习
    双功能交联剂丨Lumiprobe 磺基花青7二羧酸研究
    创新型中小企业评价标准有哪些?
  • 原文地址:https://blog.csdn.net/RR_chen/article/details/127594371