electron项目搭建
创始人
2024-12-16 05:06:29
0

前言:electron是一个跨平台桌面端应用开发工具。它将整个系统内容分为主进程和渲染进程两个部分(你可以粗略的理解为electron项目开启了两个服务器,一个渲染页面另一个处理electron窗口内容)。这两个"服务器"之间通过JS Bridge进行通信(即:contextBridge),在主进程的preload预加载中可以同时访问到浏览器进程的window对象和主进程的electron api。此时,我们可以经由ipcRerender(electron中从渲染进程(网页)向主进程发送同步和异步消息的api)将electron的api挂载到window对象上,以便在浏览器进程中使用),然后在主进程中通过ipcMain(处理从渲染器进程(网页)发送的异步和同步消息。从渲染器发送的消息将被发送到该模块。)监听即可达到进程通信的目的。

本文章主要介绍如何基于vite搭建electron项目

首先创建文件夹并cd到此文件夹中初始化

npm init -y

然后安装vite环境

npm i vite -D

安装electron(推荐cnpm安装,npm安装有可能会卡住,或者你自己更换镜像地址也行)

cnpm install --save-dev electron

安装electron打包工具

cnpm install  electron-builder -D

接下来安装你想用的框架及配套内容(本文使用的是vue3)

npm i vue vue-router pinia axios less less-loader -s

安装vue的构建工具

npm i @vitejs/plugin-vue -D

现在我们开始配置文件内容

因为是基于vite搭建的项目,故此需要再根目录新建vite.config.mjs(为啥用mjs稍后会解释)文件

import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import electron  from 'vite-plugin-electron' import renderer from 'vite-plugin-electron-renderer' import { resolve } from 'path'  export default defineConfig({     //项目路径配置     base:'./',     plugins:[        //vue解析插件        vue(),        electron({          //electron项目入口          entry:'./electron/index.js',          vite:{              build:{                //打包目录名                outDir:'dist'              }           }        }),        //渲染进程入口         renderer({          entry:'./src/main.js',          nodeIntegration: true,        })     ],     //允许跨域     server:{       cors:true     },      resolve:{       "alias":{          "@":resolve(__dirname,'./src')       }     } })

package.json文件配置

{   "name": "electron",   "version": "1.0.0",   //"type":"module",   /*  electron项目不推荐"type":"module"故此我们这里就不使用"type":"module"选项,       启动项目时控制台会提醒The CJS build of Vite's Node API is deprecated       vite已弃用cjs进行构建,我们可以修改vite.config.js为vite.config.mjs    */   //入口文件   "main": "electron/index.js",   "scripts": {     //启动项目      "dev": "vite",     //打包成windows应用     /* --config electron-builder.json 指根据electron-builder.json配置文件打包,所以需要在根      目录下新建electron-builder.json文件配置打包信息*/     "build": "vite build && electron-builder build --win --x64 --config electron-                builder.json",     //打包成mac应用(注:打包mac应用需要再mac系统中才能打包)     "build:mac":"vite build && electron-builder build --mac --arm64 --config electron-                builder.json",     //打包成linux应用     "build:linux":"vite build && electron-builder build --linux --armv7l --config                electron-builder.json"   },   "keywords": [     "electron",     "vue",     "pinia"   ],   "description":"vite-electron",   "author": "仙古梦回",   "license": "ISC",   "devDependencies": {     "@vitejs/plugin-vue": "^5.1.0",     "electron": "^31.2.1",     "electron-builder": "^24.13.3",     "less": "^4.2.0",     "less-loader": "^12.2.0",     "vite": "^5.3.4",     "vite-plugin-electron": "^0.28.7",     "vite-plugin-electron-renderer": "^0.14.5"   },   "dependencies": {     "@vitejs/plugin-vue": "^5.1.0",     "pinia": "^2.1.7",     "vue": "^3.4.33",     "vue-router": "^4.4.0"   } } 

electron-builder.json文件配置

{     "productName": "仙古梦回",     "files": ["./electron/index.js", "./dist"],     "extraFiles": ["./videos", "./cvideo"],      "directories": {       "output": "./dist"     }   }

现在我们开始构建主进程文件,在根目录新建electron文件夹并新建index.js

const { app,BrowserWindow,ipcMain } =  require('electron') const path  = require('path')  const createWindow = ()=>{     const win = new BrowserWindow({         width:1100,         height:700,         webPreferences:{           nodeIntegration:true, // 禁用 nodeIntegration           contextIsolation: true, // 启用上下文隔离            preload:path.join(__dirname,'./preload.js')         }     })     //关闭菜单     win.setMenu(null)     /*环境变量process.env.VITE_DEV_SERVER_URL,用于获取当前项目的启动地址。          示例:http://localhost:5173     */     if(process.env.VITE_DEV_SERVER_URL){         win.loadURL(process.env.VITE_DEV_SERVER_URL)     }else{         win.loadFile(path.join(__dirname,'../dist/index.html'))     } }  //监听渲染进程传过来的great事件 ipcMain.on('great',(event,val)=>{   console.log(val) })  app.whenReady().then(() => {     createWindow()     app.on('activate', () => {       if (BrowserWindow.getAllWindows().length === 0) createWindow()     })   })  app.on('window-all-closed', () => {   if (process.platform !== 'darwin') app.quit() })

预加载文件配置

const { contextBridge,ipcRenderer } = require('electron')  //用于安全地将 API 从预加载脚本的隔离上下文公开到网站运行的上下文。该 API 也可以像以前一样从 window.myAPI 上的网站访问。 contextBridge.exposeInMainWorld('electronAPI', {     //暴露到渲染进程window对象中的great事件,通过ipcRenderer.send发送给主进程     great: (val) => ipcRenderer.send('great', val) })

构建渲染进程

在根目录建立src文件夹同时在根目录创建index.html作为展示页面(上文建立主进程index.js文件时有引入这个html文件)

                 仙古梦回                

在src文件夹下开始构建vue项目(与普通vue项目构建一样)

main.js文件

import { createApp } from "vue";  import App from './App.vue'  const app = createApp(App)   app.mount('#app')

App.vue文件配置

      

至此,一个基于vite和vue搭建的electron项目就构建完成。

项目代码地址:仙古梦回/electron的搭建

相关内容

热门资讯

五分钟软件教程!wepoker... 五分钟软件教程!wepoker免费透视脚本,wejoker内置辅助,详细教程(有挂神器)wepoke...
4分钟开挂教程!hhpoker... 4分钟开挂教程!hhpoker外挂靠谱吗(透视脚本)详细辅助插件(一贯存在有挂)1、玩家可以在软件透...
四分钟俱乐部!aapoker透... 四分钟俱乐部!aapoker透视脚本入口,aapoker怎么选牌,详细教程(有挂插件);1、玩家可以...
2分钟模拟器!wpk辅助(透视... 2分钟模拟器!wpk辅助(透视辅助)详细辅助挂(一贯存在有挂)2分钟模拟器!wpk辅助(透视辅助)详...
六分钟辅助脚本!wepoker... 六分钟辅助脚本!wepoker轻量版透视,wepoker辅助器安装包,详细教程(有挂安装);该软件可...
七分钟平台挂!hhpoker德... 七分钟平台挂!hhpoker德州作弊(透视脚本)详细辅助教程(切实是真的有挂);1、游戏颠覆性的策略...
十分钟公共底牌!aapoker... 十分钟公共底牌!aapoker透视方法(透视脚本)详细辅助俱乐部(一贯是真的有挂)1)aapoker...
七分钟透视辅助!wpk私人辅助... 七分钟透视辅助!wpk私人辅助,wpk俱乐部怎么作弊,详细教程(有挂技巧);wpk私人辅助辅助器中分...
九分钟购买!wejoker辅助... 九分钟购买!wejoker辅助机器人,wepoker怎么看牌型,详细教程(有挂胜率)1、wejoke...
5分钟可以作弊!hhpoker... 5分钟可以作弊!hhpoker底牌透视脚本,hh poker辅助有用吗,详细教程(有挂功能)1、hh...