FreeMaker如何使用 QIANKUN 微前端小计

第一步 获取 乾坤地址
https://unpkg.com/browse/qiankun@2.5.1/dist/index.umd.min.js
老项目是php模版渲染的,服务是用docker 起的,以php项目为父应用,请问怎么配置。可以使用这个
第二步 集成到项目中
    <!-- qiankun START -->
    <@jversion url="qiankun/index.umd.min.js"></@jversion>
    <!-- qiankun END -->
第三步 集成项目中

<script>

    /**
     * Step2 注册子应用
     * 主应用注册微应用时,entry 可以为相对路径,activeRule 不可以和 entry 一样(否则主应用页面刷新就变成微应用)
     */
    qiankun.registerMicroApps(
        [
            {
                name: 'shop-cart', // 子应用 名字
                container: '#subapp-viewport', // 挂载节点 容器名
                activeRule: '/nhCart', 
                entry: '//localhost:7101/', // 子容器地址
                props: { data: {name:'zhangsan',age:12} } // 默认传值
            }
        ],
        {
            // qiankun 生命周期钩子 - 微应用加载前
            beforeLoad: [
                app => {
                    console.log('[Life-Cycle] before load %c%s', 'color: green;', app.name);
                },
            ],
            beforeMount: [
                app => {
                    console.log('[Life-Cycle] before mount %c%s', 'color: green;', app.name);
                },
            ],
            // qiankun 生命周期钩子 - 微应用挂载后
            afterMount: [
                app => {
                    console.log('[Life-Cycle] after unmount %c%s', 'color: green;', app.name);
                },
            ],
            afterUnmount: [
                app => {
                    console.log('[Life-Cycle] after unmount %c%s', 'color: green;', app.name);
                },
            ],
        },
    );

    /**
     * Step3 设置默认进入的子应用
     */
    // qiankun.setDefaultMountApp('/shopCart');

    qiankun.runAfterFirstMounted(() => {
        console.log('[Life-Cycle]-[qiankun-- MainApp] first app mounted');
    });

    // 扩展
    // 如果微应用不是直接跟路由关联的时候,你也可以选择手动加载微应用的方式:
    // qiankun.loadMicroApp({
    //   name: 'vue app',
    //   container: '#subapp-viewport',
    //   activeRule: '/vue',
    //   entry: '//localhost:7101',
    //   props: { data: {} }
    // });

    /**
     * 添加全局的未捕获异常处理器
     */
    qiankun.addGlobalUncaughtErrorHandler((event) => {
        console.log('请检查应用是否可运行,子应用加载未成功', event);
    })
    /**
     * 添加全局的未捕获异常处理器
     */
    // addGlobalUncaughtErrorHandler((event: Event | string) => {
    //     console.error(event);
    //     const { message: msg } = event as any;
    //     // 加载失败时提示
    //     if (msg && msg.includes("died in status LOADING_SOURCE_CODE")) {
    //         console.error("微应用加载失败,请检查应用是否可运行");
    //     }
    // });
    //

    /**
     * Step4 启动应用
     */
    qiankun.start();
    // qiankun.start({prefetch: true, sandbox: {experimentalStyleIsolation: true}});


    // 初始化 state 使用initGlobalState(state)全局传值
    const actions = qiankun.initGlobalState({name:'wangwu', age:'108'});

    // 监听数据变化 在当前应用监听全局状态,有变更触发 callback,fireImmediately = true 立即触发 callback
    actions.onGlobalStateChange((state, prev) => {
        // state: 变更后的状态; prev 变更前的状态
        console.log("FreeMaker state 变更后的状态= = = ---> ", state);
        console.log("FreeMaker prev 变更前的状态-= = = ---> ", prev);
    });

    // 改变数据 按一级属性设置全局状态,微应用中只能修改已存在的一级属性
    actions.setGlobalState({name:'zhaoliu', age:'88'});

    // 移除监听 移除当前应用的状态监听,微应用 umount 时会默认调用
    // actions.offGlobalStateChange(); 打开注释 就会接受不到消息。

    console.log("qiankun 00000 .------ > ", qiankun);


    // 主应用 传值 到 子应用
    var i = 1;
    function meOnclock() {
        i ++ ;
        actions.setGlobalState({name:'zhaoliu', age:'88', index: i});
    }
</script>
子应用
按照官方项目配置项目
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值