我们在开发的过程中难免会遇到需要创建一个子窗口(子进程),但是在这个子进程中所有值都是初始化的,而我们肯定是需要一些值才能进行下一步操作,比如:token; 那么我们怎么去传递值呢?
我先给伙伴们说一些,基本原理(下面很多东西会建立在vue的基础上生命周期,如果是其他框架就自行修改就行),然后再给大家根据代码一步一步操作。
- 首先我们是需要创建一个子进程(或者叫新窗口,模态框都可以)
- 发送一个命令到主进程去创建一个新窗口
- 新窗口创建好以后等页面渲染完成(mounted/this.$nextTick)
- 然后我们在this.$nextTick中通知子进程页面已经渲染完成,
- 子进程接收到消息以后,通知主进程的渲染进程
- 主进程的渲染进程接收到消息以后,携带值发送给主进程,然后发送给子进程的渲染进程
- 到这儿就完成了
大家看到这儿可能觉得很麻烦,但是如果我们在创建新窗口的时候就传递值的话,可能子进程的渲染进程拿不到值;主要原因有:
- 可能子进程还没创建成功,但是值就已经过来了,这个时候你去发送请求啊什么的,就会失败!
- 还有就是可能会出现在创建窗口的时候比较卡顿,你的值过去了,创建还是白面等等
所以我们当时搞了这种方法,目前运行半年以上基本上都没得问题;如果你有更好的方法也可以告诉我们,一起聊聊;哈哈哈