Qiankun实践总结:从跨站发送Cookies到实战微前端
2024-01-10 02:49:26
在我们的项目中,我们使用iframe嵌入不同的微应用,iframe虽然有挺多坑,但用着还算顺手。想要切换到qiankun,主要原因是Chrome80后的版本会出现跨站不发送Cookies的问题。因此,我们决定尝试qiankun,看看能否解决这个问题,同时也能在实际项目中测试实践微前端。
基于Vue的qiankun实践总结
一、遇到跨域Cookies问题
在使用qiankun之前,我们遇到跨域Cookies问题,主要表现为:在主应用中设置的Cookies在微应用中无法获取,而在微应用中设置的Cookies在主应用中也无法获取。
为了解决这个问题,我们尝试了以下几种方法:
- 在主应用中设置
Access-Control-Allow-Credentials
首部,允许微应用获取主应用的Cookies。 - 在微应用中设置
Access-Control-Allow-Origin
首部,允许主应用获取微应用的Cookies。 - 在主应用和微应用之间使用代理服务器,将请求转发到各自的服务器。
但是,这些方法都没有解决问题。最终,我们决定使用qiankun来解决这个问题。
二、qiankun简介
qiankun是一个基于Vue的微前端框架,它可以帮助我们轻松地将不同的微应用集成到一个主应用中。qiankun具有以下特点:
- 开箱即用:qiankun提供了开箱即用的解决方案,不需要额外的配置或修改。
- 灵活:qiankun可以与任何Vue微应用集成,并且支持多种微应用加载方式。
- 性能优化:qiankun提供了各种性能优化措施,如代码拆分、路由懒加载等。
- 安全:qiankun提供了各种安全措施,如沙箱隔离、跨域保护等。
三、qiankun的使用
在我们的项目中,我们将主应用和微应用都升级到了Vue 3,并使用qiankun将微应用集成到了主应用中。我们遵循了qiankun的官方文档,并在项目的package.json
文件中添加了以下依赖:
{
"dependencies": {
"qiankun": "^2.0.0"
}
}
然后,我们在主应用中创建了一个main.js
文件,并在其中配置了qiankun:
import { createApp } from 'vue'
import App from './App.vue'
import { registerMicroApps, start } from 'qiankun'
const app = createApp(App)
// 注册微应用
registerMicroApps([
{
name: 'app1',
entry: '//localhost:3001',
container: '#app1'
},
{
name: 'app2',
entry: '//localhost:3002',
container: '#app2'
}
])
// 启动qiankun
start()
app.mount('#app')
在微应用中,我们也创建了一个main.js
文件,并在其中配置了qiankun:
import { createApp } from 'vue'
import App from './App.vue'
import { initGlobalState } from 'qiankun'
const app = createApp(App)
// 初始化全局状态
initGlobalState({
// ...
})
app.mount('#app')
四、qiankun的优势和不足
经过一段时间的使用,我们发现qiankun具有以下优势:
- 开箱即用: qiankun提供了开箱即用的解决方案,不需要额外的配置或修改。
- 灵活: qiankun可以与任何Vue微应用集成,并且支持多种微应用加载方式。
- 性能优化: qiankun提供了各种性能优化措施,如代码拆分、路由懒加载等。
- 安全: qiankun提供了各种安全措施,如沙箱隔离、跨域保护等。
但是,qiankun也存在以下不足:
- 文档不完善: qiankun的官方文档还不够完善,有些内容需要自己摸索。
- 社区支持力度有限: qiankun的社区支持力度有限,有些问题可能得不到及时解答。
- 缺乏成熟的工具链: qiankun缺乏成熟的工具链,需要自己开发一些工具来辅助开发。
五、结合实际情况进行微前端改造
在我们的项目中,我们结合实际情况进行了微前端改造,具体包括以下几个方面:
- 拆分微应用: 我们将项目中的大型微应用拆分成了多个小型微应用,这样做的好处是减小了微应用的体积,提高了加载速度。
- 优化微应用间的通信: 我们优化了微应用间的通信方式,减少了微应用间的通信次数,提高了微应用的性能。
- 实现微应用的热更新: 我们实现了微应用的热更新,这样当微应用的代码发生变化时,不需要重新启动主应用,只需要刷新微应用即可。
六、总结
经过一段时间的实践,我们发现qiankun是一个非常好的微前端框架,它可以帮助我们轻松地将不同的微应用集成到一个主应用中。qiankun具有开箱即用、灵活、性能优化和安全等优点,但是也存在文档不完善、社区支持力度有限和缺乏成熟的工具链等缺点。
在我们的项目中,我们结合实际情况进行了微前端改造,包括拆分微应用、优化微应用间的通信和实现微应用的热更新等。这些改造提高了项目的性能和稳定性,也为我们积累了微前端开发的经验。
总之,qiankun是一个值得推荐的微前端框架,它可以帮助我们轻松地实现微前端开发。