定制小程序开发费用小满Vue3第三十九章(Vue开发桌面程序Electron)

定制小程序开发费用建议视频教程

官网

我们用的VsCode 也是 electron 开发的

 electron 内置了 Chromium 和 nodeJS 其中 Chromium 定制小程序开发费用是渲染进程 定制小程序开发费用主要渲染和解析HTML,Nodejs定制小程序开发费用作为主进程,其中管道用IPC 通信

1.使用vite 构建 electron项目

创建一个vite 项目

npm init vite@latest

安装electron

  1. npm install electron -D
  2. npm install vite-plugin-electron -D

 根目录新建 electron / index.ts

修改vite.config.ts 配置文件

引入electron插件配置main  entry对应electron的文件

  1. import { defineConfig } from 'vite'
  2. import vue from '@vitejs/plugin-vue'
  3. import electron from 'vite-plugin-electron'
  4. // https://vitejs.dev/config/
  5. export default defineConfig({
  6.   plugins: [vue(), electron({
  7.     main: {
  8.       entry: "electron/index.ts"
  9.     }
  10.   })]
  11. })

编写代码 electron / index.ts

  1. import { app, BrowserWindow } from 'electron'
  2. import path from 'path'
  3. //app 控制应用程序的事件生命周期。
  4. //BrowserWindow 创建并控制浏览器窗口。
  5. let win: BrowserWindow | null;
  6. //定义全局变量获取 窗口实例
  7. const createWindow = () => {
  8. win = new BrowserWindow({
  9. //
  10. webPreferences: {
  11. devTools: true,
  12. contextIsolation: false,
  13. nodeIntegration: true
  14. //允许html页面上的javascipt代码访问nodejs 环境api代码的能力(与node集成的意思)
  15. }
  16. })
  17. if (app.isPackaged) {
  18. win.loadFile(path.join(__dirname, "../index.html"));
  19. } else {
  20. //VITE_DEV_SERVER_HOST 如果是undefined 换成 VITE_DEV_SERVER_HOSTNAME
  21. win.loadURL(`http://${process.env['VITE_DEV_SERVER_HOST']}:${process.env['VITE_DEV_SERVER_PORT']}`)
  22. }
  23. }
  24. //isPackage 不好使换下面的
  25. // if(process.env.NODE_ENV != 'development'){
  26. // win.loadFile(path.join(__dirname, "../index.html"));
  27. // }else{
  28. //win.loadURL(`http://${process.env['VITE_DEV_SERVER_HOSTNAME']}:${process.env['VITE_DEV_SE//RVER_PORT']}`)
  29. // }
  30. //在Electron完成初始化时被触发
  31. app.whenReady().then(createWindow)

配置package json 增加main 字段 type 去掉

  1. {
  2. "name": "electron-vite",
  3. "private": true,
  4. "version": "0.0.0",
  5. "main": "dist/electron/index.js",
  6. "scripts": {
  7. "dev": "vite",
  8. "build": "vue-tsc --noEmit && vite build && electron-builder",
  9. "preview": "vite preview"
  10. },
  11. "dependencies": {
  12. "vue": "^3.2.37"
  13. },
  14. "devDependencies": {
  15. "@vitejs/plugin-vue": "^3.0.0",
  16. "electron": "^19.0.10",
  17. "electron-builder": "^23.1.0",
  18. "typescript": "^4.6.4",
  19. "vite": "^3.0.0",
  20. "vite-plugin-electron": "^0.8.3",
  21. "vue-tsc": "^0.38.4"
  22. }
  23. }

npm run dev

2.打包Electron

需要安装electron-builder

npm install electron-builder -D

package json 配置 build 修改npm run build命令

"build": "vue-tsc --noEmit && vite build  &&  electron-builder",
  1. "build": {
  2. "appId": "com.electron.desktop",
  3. "productName": "electron",
  4. "asar": true,
  5. "copyright": "Copyright © 2022 electron",
  6. "directories": {
  7. "output": "release/"
  8. },
  9. "files": [
  10. "dist"
  11. ],
  12. "mac": {
  13. "artifactName": "${productName}_${version}.${ext}",
  14. "target": [
  15. "dmg"
  16. ]
  17. },
  18. "win": {
  19. "target": [
  20. {
  21. "target": "nsis",
  22. "arch": [
  23. "x64"
  24. ]
  25. }
  26. ],
  27. "artifactName": "${productName}_${version}.${ext}"
  28. },
  29. "nsis": {
  30. "oneClick": false,
  31. "perMachine": false,
  32. "allowToChangeInstallationDirectory": true,
  33. "deleteAppDataOnUninstall": false
  34. },
  35. "publish": [
  36. {
  37. "provider": "generic",
  38. "url": "http://127.0.0.1:8080"
  39. }
  40. ],
  41. "releaseInfo": {
  42. "releaseNotes": "版本更新的具体内容"
  43. }
  44. }

nsis 配置详解 

  1. {"oneClick": false, // 创建一键安装程序还是辅助安装程序(默认是一键安装)
  2. "allowElevation": true, // 是否允许请求提升,如果为false,则用户必须使用提升的权限重新启动安装程序 (仅作用于辅助安装程序)
  3. "allowToChangeInstallationDirectory": true, // 是否允许修改安装目录 (仅作用于辅助安装程序)
  4. "installerIcon": "public/timg.ico",// 安装程序图标的路径
  5. "uninstallerIcon": "public/timg.ico",// 卸载程序图标的路径
  6. "installerHeader": "public/timg.ico", // 安装时头部图片路径(仅作用于辅助安装程序)
  7. "installerHeaderIcon": "public/timg.ico", // 安装时标题图标(进度条上方)的路径(仅作用于一键安装程序)
  8. "installerSidebar": "public/installerSiddebar.bmp", // 安装完毕界面图片的路径,图片后缀.bmp,尺寸164*314 (仅作用于辅助安装程序)
  9. "uninstallerSidebar": "public/uninstallerSiddebar.bmp", // 开始卸载界面图片的路径,图片后缀.bmp,尺寸164*314 (仅作用于辅助安装程序)
  10. "uninstallDisplayName": "${productName}${version}", // 控制面板中的卸载程序显示名称
  11. "createDesktopShortcut": true, // 是否创建桌面快捷方式
  12. "createStartMenuShortcut": true,// 是否创建开始菜单快捷方式
  13. "shortcutName": "SHom", // 用于快捷方式的名称,默认为应用程序名称
  14. "include": "script/installer.nsi", // NSIS包含定制安装程序脚本的路径,安装过程中自行调用 (可用于写入注册表 开机自启动等操作)
  15. "script": "script/installer.nsi", // 用于自定义安装程序的NSIS脚本的路径
  16. "deleteAppDataOnUninstall": false, // 是否在卸载时删除应用程序数据(仅作用于一键安装程序)
  17. "runAfterFinish": true, // 完成后是否运行已安装的应用程序(对于辅助安装程序,应删除相应的复选框)
  18. "menuCategory": false, // 是否为开始菜单快捷方式和程序文件目录创建子菜单,如果为true,则使用公司名称
  19. }

npm run build

 

 

 3.Electron Vscode 输出乱码解决 方案

dev 的时候 加上chcp 65001 输出中文

 "dev": "chcp 65001 && vite",

加上之后

 4.渲染进程和主进程通信

vite.config.ts 需要修改 不然会报一个错Error: Module "path" has been externalized for browser compatibility. Cannot

只要安装了  vite-plugin-electron 就会带上 vite-plugin-electron-renderer 直接引入用就行

  1. import { defineConfig } from 'vite'
  2. import vue from '@vitejs/plugin-vue'
  3. import electron from 'vite-plugin-electron'
  4. import electronRender from 'vite-plugin-electron-renderer'
  5. // https://vitejs.dev/config/
  6. export default defineConfig({
  7. plugins: [vue(), electron({
  8. main: {
  9. entry: "electron/index.ts"
  10. }
  11. }),electronRender()],
  12. build:{
  13. emptyOutDir: false,
  14. }
  15. })

渲染进程使用ipcRenderer 发送

  1. import { ipcRenderer } from 'electron'
  2. const open = () => {
  3. ipcRenderer.send('openFlyCar')
  4. }

主进程使用 ipcMain 接受

  1. ipcMain.on('openFlyCar',()=>{
  2. console.log('收到')
  3. })

主进程通知渲染进程

  1. const win = new BrowserWindow(xxxxx)
  2. win!.webContents.send('load', { message: "electron初始化了" })

渲染进程接受

  1. ipcRenderer.on('load',(_,data)=>{
  2. console.log(data)
  3. })

5.更多配置查看该插件

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发