当前位置: 首页 > news >正文

微前端简单实用

微前端 qiankun:底层基于single-spa
浏览器的微服务,基座。不同管理不同部署
package.json 配置。

"workspaces": ["app/*","experiment/*"
]

基座注册使用registerMicroApps,开启start
简单举例

registerMicroApps([{name: 'm-vue',entry:'//localhost:20000/',container:'#container',activeRule:'/vue',loader}],{beforeLoad:()=>{console.log('加载前', '')},beforeMount:()=>{console.log('挂载前', '')},afterMount:()=>{console.log('挂载后', '')},beforeUnmount:()=>{console.log('销毁前', '')},afterUnmount:()=>{console.log('销毁后', '')}
})

子应用// 需要暴露协议文件

let history, routes, app
export async function bootstrap(){console.log('vue2 bootstrap', )
}
export async function mount(props){console.log('vue2 mount', )render(props)
}
export async function unmount(){console.log('vue2 mount', )history = nullroutes=nullapp=null
}
function render(props){}

vue中
需要放在mount中,加载的时候再去挂载,不能一上来就加载 new Vue
另外路由需要改的createRouter需要更改
生成的时候使用,卸载的时候清空

render(props={}){
history = createWebHistory('/vue')createRouter({history,routes})
app = createApp()
app.use(router).mount(props.container ? props.container.querySelector('#app'):'#app')  // 这里挂载在哪,接收mount里面传递过来props.判断是自己来的还是接受过来的
}

bootstrap 只会在微应用初始化的时候调用一次,下次微应用重新进入时会直接调用 mount 钩子,不会再重复触发 bootstrap。
通常我们可以在这里做一些全局变量的初始化,比如不会在 unmount 阶段被销毁的应用级别的缓存等
应用每次进入都会调用 mount 方法,通常我们在这里触发应用的渲染方法

qian kun渲染的时候给我门一个变量, window.POWERED_BY_QIANKUN
可以根据需要做判断
if (!window.POWERED_BY_QIANKUN) {

}

if (window.POWERED_BY_QIANKUN) {

}

react中配置

if (!window.__POWERED_BY_QIANKUN__) {ReactDOM.render(<App towerProps={{}} />, document.querySelector('#root'));
}if (window.__POWERED_BY_QIANKUN__) {// 动态设置 webpack publicPath,防止资源加载出错// eslint-disable-next-line no-undefwindow.__webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__;
}
export async function bootstrap() {console.log('react app bootstraped');
}export async function mount(props){console.log('react app mount', )let {container} = props// const root = ReactDOM.createRoot(document.getElementById('root'));ReactDOM.render(<App />,document.getElementById(container?container.querySelector('#root'):'#root'));// render()
}// render(props)export async function unmount(props){ReactDOM.unmountComponentAtNode(props.container? props.container.querySelector('#root'): document.querySelector('#root'),);}

http://www.mrgr.cn/news/48664.html

相关文章:

  • 哪个软件可以在线编辑ppt? 一口气推荐5个做ppt的得力助手!
  • 微调大型语言模型:根据您的需求定制Llama 3 8B
  • flutter 仿淘宝推荐二级分类效果
  • CDGA|数据治理:从理念到实践,为企业价值赋能的关键路径
  • 鸿蒙开发之ArkUI 界面篇 三十三 Builder(封装容器)
  • antd table合并复杂单元格、分组合并行、分组合并列、动态渲染列、嵌套表头
  • flutter实现头像覆盖轮播滚动组件
  • opencv外接矩形cv2.boundingRect和cv2.minAreaRect区别
  • d3dcompiler_47.dll缺失怎么修复,马上教你六种靠谱的方法
  • 【LLM大模型】一些Llama3微调工具以及如何在Ollama中运行
  • 界面耻辱纪念堂--隐喻使用不当05
  • MySQL 中的数据库锁和表锁
  • java 洛谷题单【数据结构1-2】二叉树
  • 【linux开发-驱动】-STM32MP157启动相关
  • 介绍xshell的使用技巧
  • 【记录47】防止按钮短时间频繁点击触发接口,导致影响性能和用户的体验不好及浪费资源
  • leetcode.3158 xor值(亦或运算)
  • 教你一招快速解决MacOS鼠标滚轮反转的问题
  • 90%客户都避不开的通风天窗选购误区!后悔没早点看到
  • 智汇云舟亮相WAFI世界农业科技创新大会,并参编数字农业产业图谱