首页 > 编程语言 >将现有vue项目基于electron打包成桌面应用程序 如何隐藏electron窗体的菜单栏

将现有vue项目基于electron打包成桌面应用程序 如何隐藏electron窗体的菜单栏

时间:2022-11-21 19:26:51浏览次数:74  
标签:vue 窗口 默认 菜单栏 electron Boolean const mainWindow

一、前言

  项目本来打算采用B/S架构去做的,浏览器网址方式打开还是让用户不方便;

二、使用electron集成桌面应用

  本身项目是使用vue-cli开发的,在使用electron之前,需要将本身的项目打包好后打开index.html能显示网页.因为刚接触便直接拿官方demo进行打包了.

  1.克隆官方demo:git clone https://github.com/electron/electron-quick-start

  2.cd electron-quick-start->npm install->npm start   到这就能运行demo了

  3.将自己项目打包好的dist文件中的index.html和static文件放入electron-quick-start(跟目录)文件中,重新start一下,运行结果如图

将现有vue项目基于electron打包成桌面应用程序
    





            
如何隐藏electron窗体的菜单栏

4.在package.json中增加如下代码

"pack":"electron-packager . 'health-terminal' --platform=win32 --arch=x64  --out=./out --asar --app-version=0.0.1"

将现有vue项目基于electron打包成桌面应用程序
    





            
如何隐藏electron窗体的菜单栏

安装打包插件

cnpm install electron --save-dev //安装electron 
cnpm install electron-packager --save-dev //这个是打成exe文件的插件,之后要用,提前下载好

运行npm run pack 打包成功 

npm run pack

文件结构

将现有vue项目基于electron打包成桌面应用程序
    





            
如何隐藏electron窗体的菜单栏

 

将现有vue项目基于electron打包成桌面应用程序
    





            
如何隐藏electron窗体的菜单栏

 

5.在electron中进行网络请求时需注意,因为本身项目使用了反向代理,打包后请求路径前面会增加本地路径“file:e/”,解决方式:

  在config-dev.env.js(测试环境)和pro-env.js(正式环境)添加API_ROOT:'192.168.0.0:8080'(根据自己的需要修改)

将现有vue项目基于electron打包成桌面应用程序
    





            
如何隐藏electron窗体的菜单栏

新建一个js文件导出process.env.API_ROOT;

将现有vue项目基于electron打包成桌面应用程序
    





            
如何隐藏electron窗体的菜单栏

 最后在main.js中引用

将现有vue项目基于electron打包成桌面应用程序
    





            
如何隐藏electron窗体的菜单栏

请求路径前加上this.root

 将现有vue项目基于electron打包成桌面应用程序
    





            
如何隐藏electron窗体的菜单栏

至此一个桌面应用已经打包完成

以下是界面配置

在main.js 当中通过配置 BrowserWindow 来改变外观

width Integer - 窗口宽度,单位像素. 默认是 800 .

height Integer - 窗口高度,单位像素. 默认是 600 .

x Integer - 窗口相对于屏幕的左偏移位置.默认居中. y Integer - 窗口相对于屏幕的顶部偏移位置.默认居中. useContentSize Boolean - width 和 height 使用web网页size, 这意味着实际窗口的size应该包括窗口框架的 size,稍微会大一点,默认为 false . center

Boolean - 窗口屏幕居中. minWidth Integer - 窗口最小宽度,默认为 0 .

minHeight Integer - 窗口最小高度,默认为 0 .

maxWidth Integer - 窗口最大宽度,默认无限制.

maxHeight Integer - 窗口最大高度,默认无限制.

resizable Boolean - 是否可以改变窗口size,默认为 true .

movable Boolean - 窗口是否可以拖动. 在 Linux 上无效. 默认为 true .

minimizable Boolean - 窗口是否可以最小化. 在 Linux 上无效. 默认为 true .

maximizable Boolean - 窗口是否可以最大化. 在 Linux 上无效. 默认为 true .

closable Boolean - 窗口是否可以关闭. 在 Linux上无效. 默认为 true .

alwaysOnTop Boolean - 窗口是否总是显示在其他窗口之前. 在 Linux上无效. 默认为 false .

fullscreen Boolean - 窗口是否可以全屏幕. 当明确设置值为When false ,全屏化按钮将会隐藏,在 macOS 将禁用. 默认 false .

fullscreenable Boolean - 在 macOS 上,全屏化按钮是否可用,默认为 true . skipTaskbar Boolean - 是否在任务栏中显示窗口. 默认是 false .

kiosk Boolean - kiosk 方式. 默认为 false . title String - 窗口默认title. 默认 "Electron" .

icon NativeImage - 窗口图标, 如果不设置,窗口将使用可用的默认图标.

show Boolean - 窗口创建的时候是否显示. 默认为 true .

frame Boolean - 指定 false 来创建一个 Frameless Window. 默认为 true .

acceptFirstMouse Boolean - 是否允许单击web view来激活窗口 . 默认为 false .

disableAutoHideCursor Boolean - 当 typing 时是否隐藏鼠标.默认 false .

autoHideMenuBar Boolean - 除非点击 Alt ,否则隐藏菜单栏.默认为 false .

enableLargerThanScreen Boolean - 是否允许允许改变窗口大小大于屏幕. 默认是 false .

backgroundColor String -窗口的 background color 值为十六进制,如 #66CD00 或 #FFF 或 #80FFFFFF (支持透明 度). 默认为在 Linux和 Windows 上为 #000 (黑色) , Mac上为 #FFF (或透明).

hasShadow Boolean - 窗口是否有阴影. 只在 macOS 上有效. 默认为 true .

darkTheme Boolean - 为窗口使用 dark 主题, 只在一些拥有 GTK+3 桌面环境上有效. 默认为 false .

transparent Boolean - 窗口 透明. 默认为 false .

type String - 窗口type, 默认普通窗口. 下面查看更多. titleBarStyle String - 窗口标题栏样式. 下面查看更多.

webPreferences Object - 设置界面特性. 下面查看更多.

 

 

electron中默认带有顶部菜单栏,有时候我们的应用不需要。

再main.js文件中设置

const electron = require('electron')

const path = require('path')
const url = require('url')

let mainWindow
const Menu = electron.Menu
function createWindow () {
 // 隐藏菜单栏
  Menu.setApplicationMenu(null)
  // Create the browser window.设置窗口宽高,最小宽高,图标等
  mainWindow = new BrowserWindow({ width: 800, height: 600, minWidth: 1280, minHeight: 800, resizable: false, allowRunningInsecureContent: true, experimentalCanvasFeatures: true, icon: './favicon.ico'})
  mainWindow.loadURL("http://www.nlfit.cn/saas/index.html#/login")
 
  mainWindow.on('closed', function () {
    mainWindow = null
  })
}

 

const electron = require('electron') // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected.
// const app = electron.app // const BrowserWindow = electron.BrowserWindow const path = require('path') const url = require('url')
let mainWindow const Menu = electron.Menu function createWindow () { Menu.setApplicationMenu(null) // Create the browser window. mainWindow = new BrowserWindow({ width: 800, height: 600, minWidth: 1280, minHeight: 800, resizable: false, allowRunningInsecureContent: true, experimentalCanvasFeatures: true, icon: './favicon.ico'}) // and load the index.html of the app. mainWindow.loadURL("http://www.nlfit.cn/saas/index.html#/login") // Open the DevTools. // mainWindow.webContents.openDevTools()
// Emitted when the window is closed. mainWindow.on('closed', function () { // Dereference the window object, usually you would store windows // in an array if your app supports multi windows, this is the time // when you should delete the corresponding element. mainWindow = null }) }

electron中默认带有顶部菜单栏,有时候我们的应用不需要。

再main.js文件中设置

const electron = require('electron')

const path = require('path')
const url = require('url')

let mainWindow
const Menu = electron.Menu
function createWindow () {
 // 隐藏菜单栏
  Menu.setApplicationMenu(null)
  // Create the browser window.设置窗口宽高,最小宽高,图标等
  mainWindow = new BrowserWindow({ width: 800, height: 600, minWidth: 1280, minHeight: 800, resizable: false, allowRunningInsecureContent: true, experimentalCanvasFeatures: true, icon: './favicon.ico'})
  mainWindow.loadURL("http://www.nlfit.cn/saas/index.html#/login")
 
  mainWindow.on('closed', function () {
    mainWindow = null
  })
}

 

const electron = require('electron') // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected.
// const app = electron.app // const BrowserWindow = electron.BrowserWindow const path = require('path') const url = require('url')
let mainWindow const Menu = electron.Menu function createWindow () { Menu.setApplicationMenu(null) // Create the browser window. mainWindow = new BrowserWindow({ width: 800, height: 600, minWidth: 1280, minHeight: 800, resizable: false, allowRunningInsecureContent: true, experimentalCanvasFeatures: true, icon: './favicon.ico'}) // and load the index.html of the app. mainWindow.loadURL("http://www.nlfit.cn/saas/index.html#/login") // Open the DevTools. // mainWindow.webContents.openDevTools()
// Emitted when the window is closed. mainWindow.on('closed', function () { // Dereference the window object, usually you would store windows // in an array if your app supports multi windows, this is the time // when you should delete the corresponding element. mainWindow = null }) }

标签:vue,窗口,默认,菜单栏,electron,Boolean,const,mainWindow
From: https://www.cnblogs.com/wangyb56/p/16912889.html

相关文章

  • java桌面端开发为什么没就行起来,大部分人选qt,winform,electron?
    java桌面端开发为什么没就行起来的主要原因是基于Java开发的windows桌面端软件的安装部署运行的不便,绝大多数的windows电脑没有安装Java运行环境,并且基于不同版本Java开......
  • Electron 打包 (electron-builder)
    本文只测试了Windows10下打包Windows基础安装包更多花哨的配置,请戳官方文档https://www.electron.build/​www.electron.build/构建基础项目,可以参考之前文章依赖安......
  • Vue3官方出的Playground你都用了吗?没有没关系,直接原理讲给你听
    相比​​Vue2​​​,​​Vue3​​​的官方文档中新增了一个在线​​Playground​​:打开是这样的:相当于让你可以在线编写和运行​​Vue​​​单文件组件,当然这个东西也是开源......
  • vuex持久化方案(vuex-persistedstate)
    安装npminstallvuex-persistedstate--save介绍Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题这篇文章主要介绍了Vuex持久化插件(vuex-persistedstate......
  • vue2 过滤器8 私有过滤器 全局过滤器
    过滤器vue3已经去掉了   过滤器函数必须要定义到filters函数下,过滤器本质是也是一个函数,必须要return出去过滤器需有返回值val形参是前面的值 上述过滤器属于......
  • 关于Electron环境配置与一些相关的错误解决
    安装步骤:1.安装NVM:这个是nodejs的版本管理器,github上有一个nvmforwindows,由于不能的nodejs的版本问题,可以自由进行切换.下载地址:https://github.com/coreybutle......
  • vue项目:其他电脑无法访问本机端口
    1.问题描述:本地成功生成localhost端口号后,但是同事的电脑却无法访问。2.尝试方法: 1)  2)  将这两个禁用改为开启,3.最后成功访问。4.总结:之后遇到不能访......
  • 5个测试Vue.js程序的有用工具和库
    原文| https://blog.bitsrc.io/5-useful-tools-and-libraries-for-testing-vuejs-applications-13166f930da8作者|NethmiWijesinghe在过去的几年中,vue.js已成为最受欢......
  • vue3.0之ref函数
    1、ref推荐定义基本数据类型(ref值也可以是对象,但是一般情况下是对象直接使用reactive更合理)。2、在 vue 的模板中使用ref的值不需要通过value获取(vue 会通过自动......
  • 2022-11-21 vue+uniapp之小程序 video iphone手机 视频播放卡顿
    如题。卡一两次可以当成是视频缓存问题,可要是一直卡者不动那就是代码问题了。经测试,android和ios手机存在卡顿情况,ios较为明显一点,原因我猜测是在小程序中video这个标签在......