最近在搞Electron-vue
的项目,由于之前没做过这种客户端的开发,所以在开发的过程中一直磕磕绊绊,碰到各种异常的情况,而且网上的资料很少,很多问题都找不到解决办法,而且很多博客都是重复的。一篇博客被很多人转载,而且有的博主会把自己的一片文章发布到不同的平台上,这就导致在搜索的时候,看到很多篇一样的文章,而且都是不能解决问题的,就很烦。
好了闲话少说,这里只是吐槽一下网上千篇一律的博客。我所碰到的问题是这样的。
我做的客户端挺简单的,只有登录页,主页面以及修改密码页,所以页面要展示的东西不是很多,由于主页面没有什么可以展示的,所以几乎所有的操作都会放到托盘中处理,这样可以减少页面由于没有内容而导致的空白太多。就像下面这样简单地浮条,类似于搜狗输入法似的。而且登录后默认会隐藏到托盘中,用户点击托盘图标才会展示。
基于上面的描述,我会把主页面的功能都集中在托盘中,如下。
修改密码会从主页面切换到修改页面,
注销功能会从主页面切换到登录页面,
退出功能是直接退出销毁窗口。
其中的修改密码和注销功能,都是从主进程
向渲染进程
中发送请求,渲染进程
收到请求进行页面跳转。
如果是主进程主动发起事件,那就必须使用窗口发送事件请求mainWindow.webContents.send
,然后在渲染进程中监听事件,做一些逻辑处理。无论是主进程主动发送事件还是渲染进程主动发送,然后主进程监听到再次发送事件。渲染进程都需要使用on
或者once
去做监听。
once: 建立一次性的监听,当监听事件触发执行后,便会销毁该事件监听。
on: 建立永久性监听,即会持续监听该事件的触发,这样可以在程序的生命周期中不断地监听事件触发。
好了,知道上面的两种监听方式的区别,我们来看看实际操作会碰到什么问题。
我是在App.vue
中用<