首页 > 其他分享 >如何杀死保活的无界/wujie子应用?

如何杀死保活的无界/wujie子应用?

时间:2023-08-31 16:11:06浏览次数:27  
标签:销毁 const SUB 保活 window 无界 应用 wujie

原因

  1. 由于业务原因,子应用都需要保持状态,所以给子应用都设置为保活模式,在路由跳转时,无奈只能通过eventBus传递给子应用,由子应用进行跳转。
  2. 但是当出现一些情况我们需要刷新子应用,比如登录状态变了,用户退出登录。重新登录进入,子应用应该重新打开,虽说可以重新传递用户信息等参数给子应用,但是要处理的逻辑就未免过多了,也为未来运行埋下坑。
  3. 所以,就需要一个方法,让保活的子应用失效,在切换到该子应用时,子应用能够重新加载。
  4. 之前尝试了一下刷新页面(window.reload),可以把子应用杀死,但是太不优雅了,而且用户体验不好。
  5. destroyApp虽然杀死了应用,但是再也打不开了(没试过,官方说如果再也用不到该子应用才使用这个方法)。
  6. 无界作者在github的issue中提到,未来也许会提供refreshApp的方法,用来主动刷新保活的子应用。
  7. 但是现阶段还未提供这个方法,可以按照下面的方式来销毁应用。

具体方法

在子应用中销毁

// 在子应用中调用这个方法,即可把当前子应用的沙箱缓存清除
window.__WUJIE?.inject?.idToSandboxMap.clear();

在主应用中销毁

// 主应用可以通过下述方法,主动清除子应用的沙箱缓存
const SUB_NAME = "subApp";
const SUB_WINDOW = window.document.querySelector(`iframe[name=${SUB_NAME}]`).contentWindow; // 这里的window应该是顶级窗口,也就是主应用的window
const SUB_IDMAP = SUB_WINDOW.__WUJIE?.inject?.idToSandboxMap;
const refreshApp = () => SUB_IDMAP.clear();
refreshApp();

// 如果在销毁时,主应用当前的路由就是目标子应用,销毁后,子应用会失去响应,所以建议销毁后主应用应该及时跳转回首页
import { useRouter } from "vue-router";
const router = useRouter();
router.push('/'); // 填入首页的路由

可能会出现的问题

  1. 主应用销毁保活子应用后,若还处于子应用,点击切换路由,子应用会失去响应,并提示以下错误。
    image

标签:销毁,const,SUB,保活,window,无界,应用,wujie
From: https://www.cnblogs.com/crispyChicken/p/17669792.html

相关文章

  • 行行AI人才直播第17期:无界AI联合创始人马千里《AIGC,比生产力还多》
    谁也没有想到,短短几个月内,AI就在各行各业掀起了一阵狂风暴雨。ChatGPT、StableDiffusion、Midjourney……AI已经变得十八般武艺样样精通,不仅能够高效率完成很多日常工作,还能为人提供源源不断的灵感。同样火爆的AI绘画领域,AI已经在短时间内就取代了动漫、游戏、设计等领域人类从业......
  • 行行AI人才直播第16期:【无界AI首席研究员】刘秋衫《AI创新设计:AIGC赋能设计行业的新思
    在这一轮生成式AI浪潮中,设计行业是受波及最为广泛的一个行业。这是设计师们始料未及的事情,至少在此之前,人们认为以设计、艺术为首的创意产业是最难被AI改变的产业之一。而生成式AI的出现,与其说是一次冲击,不如说是一次机遇,让设计师们重新思考设计、艺术、创意、行业······在......
  • 无界面压测
    jmeter-n-t[jmxfile]-l[resultfile]-e-o[pathtowebreportfolder]jmeter是命令名称-n:nongui启用cli模式-t:测试计划,jmx脚本名称,可以带路径。(默认路径是jmeter的bin路径。)-l:输出性能结果到文件,jtl,csv。文件一般都是jtl格式文件。文件必现不存在,不能......
  • android 双进程保活
    Android双进程保活在Android应用开发中,为了提供更好的用户体验,保证应用的稳定性和持久运行,我们常常需要保持应用进程的活跃状态。其中,双进程保活是一种常用的方式,本文将介绍如何通过双进程保活来实现应用的长时间运行。什么是双进程保活双进程保活是指通过启动一个后台进程来保......
  • Windows服务启动exe无界面终极解决方案
    摘自:https://www.cnblogs.com/ZoeWong/p/17516579.html1、前言我这个方案(C#操作)是彻底解决【从Windows服务启动程序exe,程序无界面】问题的终极解决方案,终极方案,绝对的终极方案,本来打算收钱的,还是算了,你们也不容易,关注我一下就行。后附代码下载地址。由于安全性问题,Vista以后的......
  • Windows服务启动exe无界面终极解决方案
      1、前言我这个方案(C#操作)是彻底解决【从Windows服务启动程序exe,程序无界面】问题的终极解决方案,终极方案,绝对的终极方案,本来打算收钱的,还是算了,你们也不容易,关注我一下就行。后附代码下载地址。由于安全性问题,Vista以后的Windows都会出现该问题,从服务中调用/启动其他程序......
  • Python+SQLite开发无界面版通信录管理系统
    本文重点在于演示Python对SQLite数据库的操作,以及命令行式菜单的工作原理和实现。首先使用SQLiteDatabaseBrowser创建SQLite数据库data.db,然后创建一个数据表addressList,最后在数据表addressList中创建字段id(INTEGERPRIMARYKEY类型)、name(TEXT类型)、sex(TEXT类型)、age(NUMERIC类型......
  • 把戏剧讲给你听——视听无界让无障碍戏剧走进村镇
    党的二十大报告强调“增进民生福祉,提高人民生活品质”,明确要求“完善残疾人社会保障制度和关爱服务体系,促进残疾人事业全面发展”。同时《上海市无障碍环境建设条例》经上海市第十六届人大第一次会议表决通过,并将于2023年3月1日起施行。为响应党的二十大号召和助力上海市无障碍环境......
  • 前端微服务无界实践
    一、前言随着项目的发展,前端SPA应用的规模不断加大、业务代码耦合、编译慢,导致日常的维护难度日益增加。同时前端技术的发展迅猛,导致功能扩展吃力,重构成本高,稳定性低。因此前端微服务应运而生。前端微服务优势1.复杂度可控:业务模块解耦,避免代码过大,保持较低的复杂度,便于维......
  • 前端微服务无界实践 | 京东云技术团队
    一、前言随着项目的发展,前端SPA应用的规模不断加大、业务代码耦合、编译慢,导致日常的维护难度日益增加。同时前端技术的发展迅猛,导致功能扩展吃力,重构成本高,稳定性低。因此前端微服务应运而生。前端微服务优势1.复杂度可控:业务模块解耦,避免代码过大,保持较低的复杂度,便于维护与......