# Vue.js - electron [建置vue搭配electron參考網址在這](https://ithelp.ithome.com.tw/articles/10234952) 注意 - vue ui 指令有error的話,用管理員模式開powershell看看。 - electron插件直接到ui裝比較快。 - 檔案突破1G,且專案建置完要動位置很麻煩,所以慎選位置。 ### build 打包指令 ``` npm run electron:build ``` 若不行,是因為node.js版本太高,Openssl有更高限制。 所以需要修改設定。 :::info 注意:以下方法是改用舊版Openssl,有安全隱憂。 另解在[stackoverflow](https://stackoverflow.com/questions/69692842/error-message-error0308010cdigital-envelope-routinesunsupported)的第二個解答(但是我失敗了) ::: 需要在package.json中把 ``` "electron:build": "vue-cli-service electron:build" ``` 改成 ``` "electron:build": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service electron:build" ``` ### portable 生成免安裝版需要在vue.config.js把 ``` const { defineConfig } = require('@vue/cli-service') module.exports = defineConfig({ transpileDependencies: true }) ``` 改成 ``` const { defineConfig } = require('@vue/cli-service') module.exports = defineConfig({ transpileDependencies: true, pluginOptions: { electronBuilder: { builderOptions: { win: { target: [{ target: 'portable', arch: ['ia32', 'x64'] }] } } } } }); ``` 安裝檔、免安裝檔都在dist_electron資料夾 # 哈士奇手把手建置Eletron+Vue(Vite) ## 首先裝[electron-vite](https://cn.electron-vite.org/guide/) ```shell npm i electron-vite -D ``` ## 創建Electron + Vue ```shell # npm 6.x npm create @quick-start/electron my-app --template vue # npm 7+, extra double-dash is needed: npm create @quick-start/electron my-app -- --template vue # yarn yarn create @quick-start/electron my-app --template vue # pnpm pnpm create @quick-start/electron my-app --template vue ``` ## 測試執行 到`my-app`資料夾中執行 ``` npm install npm run dev ``` ## 安裝dev-tools 請參考:https://blog.csdn.net/lijianfei1989/article/details/127393474 使用方法二,將引用程式碼加在這裡,如下第6行 ```javascript= app.whenReady().then(() => { // Set app user model id for windows electronApp.setAppUserModelId('com.electron') // Load DevTools extension session.defaultSession.loadExtension(join(__dirname, '../../../devtools/6.6.1_0')) // Default open or close DevTools by F12 in development // and ignore CommandOrControl + R in production. // see https://github.com/alex8088/electron-toolkit/tree/master/packages/utils app.on('browser-window-created', (_, window) => { optimizer.watchWindowShortcuts(window) }) // IPC test ipcMain.on('ping', () => console.log('pong')) createWindow() app.on('activate', function () { // On macOS it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. if (BrowserWindow.getAllWindows().length === 0) createWindow() }) }) ``` ## 打包exe 在package.json的"scripts"中加入一行 ```javascript= "exe-build": "electron-builder" ``` 並在 exe檔案會生成在 dist/win-unpacked/ ## element plus 安裝 `npm install element-plus --save` https://blog.csdn.net/Mr_28/article/details/129684862 ## element plus 工具們 https://element-plus.org/en-US/component/overview.html # IPC 使用EX (雙向) ```javascript // App.vue <script setup lang="ts"> const ipcHandle = () => { window.electron.ipcRenderer.send('get-time'); window.electron.ipcRenderer.once('get-time-reply', (event, arg) => { replyMessage.value = arg; }); }; </script> <template> <label> {{ replyMessage }} </label> </template> ``` ```javascript // ./main/index.js ipcMain.on('get-time', (event) => { const now = new Date(); event.reply('get-time-reply', now.toString()); }); ```