如这里是Header
组件
// @flow
import React, { Component } from 'react';
import style from './Header.css';
const { ipcRenderer } = require('electron');
export default class Home extends Component {
// 最小化、最大化、关闭窗口
buttonClick = type => {
ipcRenderer.send(type);
};
render() {
return (
<div className={style['header-main']}>
<div className={style['header-title']}>我是前端</div>
<div className={style['header-right']}>
<a
href="javacript:;"
rel="最小化"
className={style['header-min']}
onClick={this.buttonClick.bind(this,'min')}
>
最小化
</a>
<a
href="javacript:;"
rel="最大化"
className={style['header-max']}
onClick={e => this.buttonClick('max', e)}
>
最大化
</a>
<a
href="javacript:;"
rel="关闭"
className={style['header-close']}
onClick={this.buttonClick.bind(this,'close')}
>
关闭
</a>
</div>
</div>
);
}
}
main.js
或index.js
主进进程文件是有创建mainWindow = new BrowserWindow()
的
加入以下代码
1.这里注意下,
frame: false
状态下,仅一个isMaximized()
并不能准确判断窗口是否已经最大化,所以加上判断是否全屏isFullScreen()
2.如果mainWindow
的transparent
属性设置了true,窗口是不允许变化的
import { ipcMain } from 'electron';
/**
* 监听最大化、最小化、关闭操作
*/
ipcMain.on('min', e => mainWindow.minimize());
ipcMain.on('max', e => {
if (mainWindow.isMaximized() || mainWindow.isFullScreen()) {
mainWindow.unmaximize();
} else {
mainWindow.maximize();
}
});
ipcMain.on('close', e => mainWindow.close());
https://segmentfault.com/a/1190000011765025 (vue的方式)
https://electronjs.org/docs/api/browser-window
https://electronjs.org/docs/api/ipc-renderer
electron通过reactjs自定义最大化、最小化、关闭功能
无边框窗口是不带外壳(包括窗口边框、工具栏等),只含有网页内容的窗口。 这些是 BrowserWindow 类上的选项。透明窗口是没有阴影部分。利用css设置自定义区域可拖动。
nsis中文手册及安装
对electron目录调整后,打包白屏?而使用electron-packager打包没问题,什么原因呢?
electron .命令是什么?能换成别的目录吗?当然可以~
electron-builder相对electron-packager有更丰富的的功能,支持更多的平台,同时也支持了自动更新,electron-builder打出的包更为轻量,并且可以打包出不暴露源码的setup安装程序
window下使用 electron-packager将electron打包成exe可执行文件
electron快速开始入门