Vue3+vite开发Electron

1.创建一个vue3项目

过程简单,就不过多阐述了,直接步入正题。

2.安装Electron

使用npm(Node.js包管理器):

npm install electron

使用yarn(快速、可靠、安全的依赖管理工具):

yarn add electron

3.在根目录下创建electron文件夹,并创建添加主进程文件main.js、预加载脚本preload.js

                                                                                                 

  • __dirname 字符串指向当前正在执行脚本的路径 (在本例中,它指向你的项目的根文件夹)。
  • path.join API 将多个路径联结在一起,创建一个跨平台的路径字符串。

main.js: 

const { app, protocol, BrowserWindow, globalShortcut } = require('electron')
// 需在当前文件内开头引入 Node.js 的 'path' 模块
const path = require('path')
 
app.commandLine.appendSwitch("--ignore-certificate-errors", "true");
// 应用程序准备就绪之前,必须注册方案
protocol.registerSchemesAsPrivileged([
    { scheme: "app", privileges: { secure: true, standard: true } }
]);
 
const createWindow = () => {
    const window = new BrowserWindow({
        width: 1024,
        height: 600,
        fullscreenable: true,
        fullscreen: true,
        center: true,//窗口是否在屏幕居中. 默认值为 false
        frame: false,//设置为 false 时可以创建一个无边框窗口 默认值为 true。
        show: true, //窗口是否在创建时显示。 默认值为 true。
        webPreferences: {
            nodeIntegration: true,
            nodeIntegrationInWorker: true,
            preload: path.join(__dirname, 'preload.js'),
            webSecurity: false,
        }
    })
    window.setMenu(null)
    if (app.isPackaged) {
        window.loadURL(`file://${path.join(__dirname, '../dist/index.html')}`)
    } else {
        window.loadURL('http://127.0.0.1:5173/')
           //window.loadURL('http://localhost:5173/')
        window.webContents.openDevTools()
    }
    //通过CommandOrControl+Shift+i打开控制台
    globalShortcut.register("CommandOrControl+Shift+i", function () {
        window.webContents.openDevTools();
    });
}
 
app.whenReady().then(() => {
    createWindow()
    app.on('activate', () => {
        if (BrowserWindow.getAllWindows().length === 0) createWindow()
    })
})
app.on('window-all-closed', () => {
    if (process.platform !== 'darwin') app.quit()
})

preload.js:

// 所有的 Node.js API接口 都可以在 preload 进程中被调用.
// 它拥有与Chrome扩展一样的沙盒。
window.addEventListener('DOMContentLoaded', () => {
    const replaceText = (selector, text) => {
      const element = document.getElementById(selector)
      if (element) element.innerText = text
    }
  
    for (const dependency of ['chrome', 'node', 'electron']) {
      replaceText(`${dependency}-version`, process.versions[dependency])
    }
  })

 4.在package.json指定electron主进程文件路径,并在scripts字段下增加一条start命令。

package.json:

{
  "name": "my-sub-site",
  "version": "0.0.0",
  "private": true,
  "main": "electron/main.js",//指定electron主进程文件路径
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "serve": "vite preview",
    "electron": "vite | electron ."
  },
  "dependencies": {
    "vue": "^3.3.4"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^4.2.3",
    "electron": "^22.2.0",
    "electron-builder": "^23.6.3",
    "vite": "^4.4.5"
  }
}

5.启动electron(调试)

npm run electron

如果出现白屏的情况,可能是vite启动后的地址不是127.0.0.1,而是localhost。

这时可以将主进程文件main.js的 window.loadURL('http://127.0.0.1:5173/')修改为window.loadURL('http://localhost:5173/')即可。

6.electron打包 

6.1 安装electron打包开发依赖
//最新版本:
npm install --save-dev electron-builder
//指定版本:
npm install --save-dev electron-builder@23.6.0
6.2 引入相关图标文件

 在scripts添加命令

  "scripts": {
    "electron:generate-icons": "electron-icon-builder --input=src/assets/desk.png --output=build --flatten"
  },

在你的src/assets/下,放入你的程序图片 然后运行此命令,即可创建.icns、.ico、.png的类型文件在项目根目录下的build文件夹下。

注意:windows系统中icon需要256*256的ico格式图片

                                                                                                          

6.4 在package.json添加author、description、build字段,同时在scripts字段添electron:build命令

package.json:

{
  "name": "my-sub-site",
  "version": "0.0.0",
  "private": true,
  "author": {
    "name": "lsl",
    "email": "lsl@lsl.com.cn"
  },
  "description": "lsl",
  "main": "electron/main.js",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview",
    "start": "vite | electron .",
    "electron:build": "vite build && electron-builder"
  },
  "dependencies": {
    "vue": "^3.3.2"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^4.2.3",
    "electron": "^22.2.0",
    "electron-builder": "^23.6.0",
    "vite": "^4.3.5"
  },
  "build": {
    "appId": "lsl.first.app",
    "productName": "ElectronApp",
    "copyright": "Copyright © 2023 lsl",
    "directories": {
      "output": "dist_electron"
    },
    "win": {
      "icon": "./build/icons/icon.ico",
      "target": [
        {
          "target": "nsis",
          "arch": [
            "x64"
          ]
        }
      ]
    },
    "dmg": {
      "contents": [
        {
          "x": 410,
          "y": 150,
          "type": "link",
          "path": "/Applications"
        },
        {
          "x": 130,
          "y": 150,
          "type": "file"
        }
      ]
    },
    "linux": {
      "icon": "./build/icons/icon.ico",
      "target": "AppImage"
    },
    "mac": {
      "icon": "./build/electron-icon/icon.icns"
    },
    "files": [
      "./dist",
      "./electron",
      "!**/node_modules/**"
    ],
    "asar": false,
    "nsis": {
      "oneClick": false,
      "allowElevation": true,
      "allowToChangeInstallationDirectory": true,
      "installerIcon": "./build/icons/icon.ico",
      "uninstallerIcon": "./build/icons/icon.ico",
      "installerHeaderIcon": "./build/icons/icon.ico",
      "createDesktopShortcut": true,
      "createStartMenuShortcut": true
    }
  }
}
6.5 执行打包命令,打包后的文件在根目录的dist_electron文件夹下
 npm run electron:build

 安装完毕后,打开dis_electron文件夹,里面即可看到安装包(要打包win程序必须要在win电脑上打包,打包mac程序也必须得在mac上进行打包。)

6.6 如果安装启动后发现系统又白屏了,此时需要修改vite.config.ts,添加base字段
 
import { fileURLToPath, URL } from 'node:url'
 
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
 
// https://vitejs.dev/config/
export default defineConfig({
  base: "./",
  plugins: [vue()],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  }
})
6.7 重新打包安装启动,完成

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现Vue3 + Vite + Electron的打印功能,你可以按照以下步骤进行。 1. 安装Electron 在项目中安装Electron,你可以使用npm命令进行安装: ``` npm install electron --save-dev ``` 2. 创建Electron应用程序 在应用程序的主目录中创建一个名为main.js的文件,并在其中创建一个Electron应用程序: ```javascript const { app, BrowserWindow } = require('electron') function createWindow () { const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true } }) win.loadURL('http://localhost:3000') win.webContents.on('did-finish-load', () => { win.webContents.print() }) } app.on('ready', createWindow) ``` 在这个示例中,我们创建了一个Electron窗口,并在窗口加载完成时执行打印操作。 3. 打印Vue3组件 在Vue3组件中,你可以使用window.print()方法来实现打印功能。例如,在一个名为PrintButton.vue的组件中: ```html <template> <button @click="print">打印</button> </template> <script> export default { methods: { print() { window.print() } } } </script> ``` 在这个示例中,我们在组件中创建了一个打印按钮,并在按钮点击时执行打印操作。 4. 运行应用程序 现在,你可以在终端运行Electron应用程序,并访问http://localhost:3000来测试打印功能: ``` electron . ``` 如果一切正常,你应该能够在Electron窗口中看到你的Vue3应用程序,并且能够通过按钮打印内容。 这就是使用Vue3 + Vite + Electron实现打印功能的基本步骤。当然,你还可以根据自己的需求进行更多的定制和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值