微前端(qiankun,webpack5模块联邦)

5 篇文章 0 订阅
4 篇文章 0 订阅
本文介绍了在node.jsV17升级后OpenSSL3.0带来的限制如何影响singleSpaVue项目,提供了解决方案如临时设置NODE_OPTIONS,以及如何配置子应用独立运行、统一前缀和模块联邦(QianKun)的方法。
摘要由CSDN通过智能技术生成

1singleSpa

vue

出现这个错误是因为 node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响.

临时方案

export NODE_OPTIONS=--openssl-legacy-provider

总结

子应用

子应用独立运行

判断是不是在父应用

if(window.singleSpaNavigate){
  __webpack_public_path__='http://localhost:20000/'
}else{
  new Vue({
  router,
  render: h => h(App)
}).$mount('#app')
}

子应用统一前缀

const router = new VueRouter({
  mode: 'history',
  base: '/vue',
  routes
})

main.js

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import SingleSpaVue from 'single-spa-vue'

Vue.config.productionTip = false


const appOptions={
  el:'#vue',
  router,
  render:h=>h(App),
}
const lifeCycle=SingleSpaVue(
  {
      // createApp,
      Vue,
      appOptions,
  }
)
//独立运行
if(window.singleSpaNavigate){
  __webpack_public_path__='http://localhost:20000/'
}else{
  new Vue({
  router,
  render: h => h(App)
}).$mount('#app')
}
//
export const bootstrap=lifeCycle.bootstrap;
export const unmount=lifeCycle.unmount;
export const mount=lifeCycle.mount;

// new Vue({
//   router,
//   render: h => h(App)
// }).$mount('#app')

vue.config.js

module.exports={
    configureWebpack:{
        output:{
            library:'singleVue',
            libraryTarget:'umd'
        },
        devServer:{
            port:20000
        }
    }
}

父应用

1-给元素承载子应用内容 App.vue

<template>
  <div id="nav">
    <router-link to="/vue">加载vue</router-link> 
      <router-view/>

      <div id='vue'></div>

  </div>
</template>

别忘记start

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import {registerApplication,start} from 'single-spa'

async function loadScript(url){
    console.log(url)
  return new Promise((resolve,reject)=>{
        let script=document.createElement('script');
        script.src=url;
        script.onload=resolve;
        script.onerror=reject;
        document.head.appendChild(script)
  })
}

registerApplication('childvue',async()=>{
    console.log('load')
    await loadScript('http://localhost:20000/js/chunk-vendors.js');
    await loadScript('http://localhost:20000/js/app.js');
    return window.singleVue
},location=>location.pathname.startsWith('/vue')) //用户切换到了/vue路由下,我要加载vue子应用
start()
createApp(App).use(router).mount('#app')

2qiankun

3模块联邦

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值