electron学习

app 常用事件,生命周期

ready 完成初始化
window-all-closed 关闭所有窗口
before-quit 关闭窗口触发
will-quit 关闭所有窗口并退出
quit 退出事件

did-finish-load 子页面导航完成
dom-ready 子页面全部完成

进程

子进程打印,process 进程信息
nodeIntegration:true  是否继承node 

file 对象,文件对象

```html
<div id="holder">
  Drag your file here
</div>

<script>
  document.addEventListener('drop', (e) => {
    e.preventDefault(); //阻止默认事件
    e.stopPropagation();//阻止冒泡

    for (const f of e.dataTransfer.files) {
      console.log('File(s) you dragged here: ', f.path)
    }
  });
  document.addEventListener('dragover', (e) => { //阻止抬起事件 这些是html5事件
    e.preventDefault();
    e.stopPropagation();
  });
</script>
```

webview 组件,内嵌网站

默认是不能使用的,需要手动开启
webviewTag:true
事件,非常强大
	[拥有很多api](https://www.electronjs.org/docs/api/webview-tag)

window.open和BrowserWindow 管理子窗口

window.open 开启子窗口
数据传递 //这里不详细写,具体百度
window.opener.postMessage(message, targetOrigin)

父窗口也可以操作子窗口

BrowserWindow 管理窗口,子进程

优雅显示窗口
const { BrowserWindow } = require('electron')
let win = new BrowserWindow({ show: false })
win.once('ready-to-show', () => {
  win.show()
})
	```
### 	父子窗口
	
```javascript
const { BrowserWindow } = require('electron')

let top = new BrowserWindow()
let child = new BrowserWindow({ parent: top })
child.show()
top.show()

模态窗口

const { BrowserWindow } = require('electron')

let child = new BrowserWindow({ parent: top, modal: true, show: false })
child.loadURL('https://github.com')
child.once('ready-to-show', () => {
  child.show()
})

对话框,提示,需要打开的文件

const { dialog } = require(‘electron’).remote //在子进程使用方法
点击查看

快捷键

[查看手册](https://www.electronjs.org/docs/api/global-shortcut)
	const { app, globalShortcut } = require('electron')
	
	app.on('ready', () => {
	  // 注册一个 'CommandOrControl+X' 的全局快捷键
	  const ret = globalShortcut.register('CommandOrControl+X', () => {
	    console.log('CommandOrControl+X is pressed')
	  })
	
	  if (!ret) {
	    console.log('registration failed')
	  }
	
	  // 检查快捷键是否注册成功
	  console.log(globalShortcut.isRegistered('CommandOrControl+X'))
	})
	
	app.on('will-quit', () => {
	  // 注销快捷键
	  globalShortcut.unregister('CommandOrControl+X')
	
	  // 注销所有快捷键
	  globalShortcut.unregisterAll()
	})

进程之间通信

子进程向主进程通信

// 在主进程中.
const { ipcMain } = require('electron')
ipcMain.on('asynchronous-message', (event, arg) => {
  console.log(arg) // prints "ping"
  event.reply('asynchronous-reply', 'pong')
})

ipcMain.on('synchronous-message', (event, arg) => {
  console.log(arg) // prints "ping"
  event.returnValue = 'pong'
})
//在渲染器进程 (网页) 中。
const { ipcRenderer } = require('electron')
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')) // prints "pong"

ipcRenderer.on('asynchronous-reply', (event, arg) => {
  console.log(arg) // prints "pong"
})
ipcRenderer.send('asynchronous-message', 'ping')

主进程主动向子进程通信

setTimeout(function(){
mainWindow.webContents.send(‘ping1111’, ‘sdfsaf sdaf as’)
},2000);

//这个里面是,w3c案例,应该查看官方案例,估计有点老
// In main process. 主进程里面
const ipcMain = require('electron').ipcMain;
ipcMain.on('asynchronous-message', function(event, arg) {
  console.log(arg);  // prints "ping"
  event.sender.send('asynchronous-reply', 'pong');
});

ipcMain.on('synchronous-message', function(event, arg) {
  console.log(arg);  // prints "ping"
  event.returnValue = 'pong';
});



// In renderer process (web page). 子进程里面
const ipcRenderer = require('electron').ipcRenderer;
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')); // prints "pong"

ipcRenderer.on('asynchronous-reply', function(event, arg) {
  console.log(arg); // prints "pong"
});
ipcRenderer.send('asynchronous-message', 'ping');

原生菜单

查看手册

网络模版 net 类似 http 调用远程 api 和后端交互

默认库不好用,但是需要了解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

两个人的幸福online

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值