欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微前端qiankun主應(yīng)用與子應(yīng)用之間的跳轉(zhuǎn)示例

 更新時(shí)間:2023年08月21日 11:37:50   作者:黑蘿卜不黑  
這篇文章主要為大家介紹了微前端qiankun主應(yīng)用與子應(yīng)用之間的跳轉(zhuǎn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

具體需求

一個(gè)后臺管理系統(tǒng),子應(yīng)用中的token時(shí)效后,接口請求報(bào)錯(cuò),這時(shí)候需要跳轉(zhuǎn)到主應(yīng)用中的登錄頁面。

傳遞一個(gè)登錄方法

在主應(yīng)用調(diào)用子應(yīng)用

傳遞一個(gè)登錄方法,在有需要的地方調(diào)用該方法。

import { registerMicroApps, start } from 'qiankun';
import router from '@/router'
const apps = [
  {
    name: 'sonApp',
    entry: '//localhost:8080',
    container: '#container',
    activeRule: '/son-app',
  }
]
registerMicroApps(apps,{
  // qiankun 生命周期鉤子 - 加載前
  beforeLoad: (app) => {
    console.log('加載子應(yīng)用前,加載進(jìn)度條=', app.name)
    const data = {
      token: 'admin',
    }
    app.props.data = data
    // 退出方法
     app.props.reRegister = () => {
      store.dispatch('LogOut').then(() => {
        sessionStorage.removeItem('tabViews')
        location.reload()
        console.log('重新登錄~')
      })
    }
    return Promise.resolve()
  },
  // qiankun 生命周期鉤子 - 掛載后
  afterMount: (app) => {
    console.log('加載子應(yīng)用前,進(jìn)度條加載完成', app.name)
    return Promise.resolve()
  }
} );
// 啟動(dòng) qiankun
start();

子應(yīng)用接收主應(yīng)用傳遞的參數(shù)和方法

并在有需要的地方使用Vue.prototype.$baseReRegister()

import './public-path';
import Vue from 'vue';
import VueRouter from 'vue-router';
import App from './App.vue';
import routes from './router';
import store from './store';
Vue.config.productionTip = false;
let router = null;
let instance = null;
function render(props = {}) {
  const { container, mainRouter  } = props;
  router = new VueRouter({
    base: window.__POWERED_BY_QIANKUN__ ? '/app-vue/' : '/',
    mode: 'history',
    routes,
  });
  instance = new Vue({
    router,
    store,
    render: (h) => h(App),
  }).$mount(container ? container.querySelector('#app') : '#app');
// 將主應(yīng)用的函數(shù)掛到原生上方便調(diào)用
  Vue.prototype.$baseReRegister = reRegister
}
// 獨(dú)立運(yùn)行時(shí)
if (!window.__POWERED_BY_QIANKUN__) {
  render();
}
export async function bootstrap() {
  console.log('[vue] vue app bootstraped');
}
export async function mount(props) {
  console.log('[vue] props from main framework', props);
  render(props);
}
export async function unmount() {
  instance.$destroy();
  instance.$el.innerHTML = '';
  instance = null;
  router = null;
}

通過history.pushState()方式進(jìn)行跳轉(zhuǎn)

 window.history.pushState({
       user: {}
     }, '', '/login')}

主應(yīng)用開啟qiankun并向子應(yīng)用傳遞數(shù)據(jù)

將主應(yīng)用的路由在吊起子應(yīng)用時(shí)傳遞過去,使用主應(yīng)用的路由完成跳轉(zhuǎn)。但是嘗試未能成功,有采用這條思路做對的小伙伴可以給個(gè)建議。

主應(yīng)用開啟qiankun并向子應(yīng)用傳遞數(shù)據(jù)

import { registerMicroApps, start } from 'qiankun';
import router from '@/router'
const apps = [
  {
    name: 'sonApp',
    entry: '//localhost:8080',
    container: '#container',
    activeRule: '/son-app',
  }
]
registerMicroApps(apps,{
  // qiankun 生命周期鉤子 - 加載前
  beforeLoad: (app) => {
    console.log('加載子應(yīng)用前,加載進(jìn)度條=', app.name)
    const data = {
      token: 'admin',
    }
    app.props.data = data
    // 向子應(yīng)用傳遞路由
    app.props.mainRouter = router
    return Promise.resolve()
  },
  // qiankun 生命周期鉤子 - 掛載后
  afterMount: (app) => {
    console.log('加載子應(yīng)用前,進(jìn)度條加載完成', app.name)
    return Promise.resolve()
  }
} );
// 啟動(dòng) qiankun
start();

子應(yīng)用接收數(shù)據(jù),在需要更改到主路由的地方使用Vue.prototype.parentRouter

import './public-path';
import Vue from 'vue';
import VueRouter from 'vue-router';
import App from './App.vue';
import routes from './router';
import store from './store';
Vue.config.productionTip = false;
let router = null;
let instance = null;
function render(props = {}) {
  const { container, mainRouter  } = props;
  router = new VueRouter({
    base: window.__POWERED_BY_QIANKUN__ ? '/app-vue/' : '/',
    mode: 'history',
    routes,
  });
  instance = new Vue({
    router,
    store,
    render: (h) => h(App),
  }).$mount(container ? container.querySelector('#app') : '#app');
// 將主應(yīng)用的函數(shù)掛到原生上方便調(diào)用
 Vue.prototype.parentRouter = mainRouter
}
// 獨(dú)立運(yùn)行時(shí)
if (!window.__POWERED_BY_QIANKUN__) {
  render();
}
export async function bootstrap() {
  console.log('[vue] vue app bootstraped');
}
export async function mount(props) {
  console.log('[vue] props from main framework', props);
  render(props);
}
export async function unmount() {
  instance.$destroy();
  instance.$el.innerHTML = '';
  instance = null;
  router = null;
}

以上就是微前端qiankun主應(yīng)用與子應(yīng)用之間的跳轉(zhuǎn)示例的詳細(xì)內(nèi)容,更多關(guān)于qiankun主應(yīng)用子應(yīng)用跳轉(zhuǎn)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue3提示用戶版本更新方式

    vue3提示用戶版本更新方式

    本文介紹了如何在項(xiàng)目中創(chuàng)建和使用自定義插件,以在構(gòu)建過程中檢查版本號,具體步驟包括在項(xiàng)目根目錄下創(chuàng)建buildLifeHook.ts文件,并在public目錄下創(chuàng)建version文件夾,然后在vite.config.ts中引用該插件,并在src/utils目錄下創(chuàng)建XxzUtils.ts文件
    2024-12-12
  • 如何理解Vue的作用域插槽的實(shí)現(xiàn)原理

    如何理解Vue的作用域插槽的實(shí)現(xiàn)原理

    本篇文章主要介紹了如何理解Vue的作用域插槽的實(shí)現(xiàn)原理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • Vue3中的常見組件通信之mitt使用詳解

    Vue3中的常見組件通信之mitt使用詳解

    這篇文章主要介紹了Vue3中的常見組件通信之mitt使用,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Vue組件二次封裝的一些實(shí)用技巧總結(jié)

    Vue組件二次封裝的一些實(shí)用技巧總結(jié)

    我們在做項(xiàng)目經(jīng)常會遇到組件功能不能滿足業(yè)務(wù)需求的時(shí)候,這時(shí)候需要在原有的組件上進(jìn)行二次封裝,下面這篇文章主要給大家介紹了關(guān)于Vue組件二次封裝的一些實(shí)用技巧,需要的朋友可以參考下
    2022-04-04
  • Vue用v-for給src屬性賦值的方法

    Vue用v-for給src屬性賦值的方法

    下面小編就為大家分享一篇Vue用v-for給src屬性賦值的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue.js?el-table虛擬滾動(dòng)完整實(shí)例代碼

    vue.js?el-table虛擬滾動(dòng)完整實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于el-table虛擬滾動(dòng)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用vue.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-12-12
  • vue?路由切換過渡動(dòng)效滑入滑出效果的實(shí)例代碼

    vue?路由切換過渡動(dòng)效滑入滑出效果的實(shí)例代碼

    在支付寶賬單頁面有這樣一個(gè)特效切換過渡動(dòng)效滑入滑出效果,非常方便實(shí)用,那么這個(gè)功能如何實(shí)現(xiàn)的呢?下面小編通過vue實(shí)現(xiàn)路由切換過渡動(dòng)效滑入滑出效果,感興趣的朋友一起看看吧
    2022-03-03
  • vue實(shí)現(xiàn)購物車功能(親測可用)

    vue實(shí)現(xiàn)購物車功能(親測可用)

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)購物車功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue數(shù)據(jù)雙向綁定的注意點(diǎn)

    vue數(shù)據(jù)雙向綁定的注意點(diǎn)

    這篇文章主要為大家詳細(xì)介紹了vue數(shù)據(jù)雙向綁定的注意點(diǎn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • vue?v-if未生效問題及解決

    vue?v-if未生效問題及解決

    這篇文章主要介紹了vue?v-if未生效問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評論