在遇到公司的巨石项目时,不要惊慌。微型前端可能是一个很好的建议。许多朋友的公司可能拥有自己的微型前端解决方案。当您再次开发公司的巨石项目时,您可以尝试一下,因此公司的项目代码不再像庞然大物。您还可以保持自愿。然后,您必须阅读本文
在这里,我们主要分享蚂蚁团队的开源,这是一个相对成熟的微型前端解决方案。我是保姆的心,请原谅我
微观前端的概念值是将大型项目分为多个子项目。每个子项目都是独立的,不会互相影响,并且互连。和研究。
单击模块输入系统后,系统的功能都是相同的。在这种情况下,无论您是否使用它,该项目的最终代码都会很大。慢跑(说应该以相同的统一处理SSR同学),包装速度很慢,并且打开了项目以观看提示提示。互相撰写,教学,研究,模块,每个项目,并将这三个项目集成到一个类似的方式中。那一开始不开心吗???3?好吧,您了解微阵线的概念主要是完成
因此,微观前端架构的核心价值是什么:
如果您可以做这些要点,嘿,如果您考虑的话,您很高兴,对吗?
如前所述,将多个大型模块分为独立的应用程序,因此如何集成多个子应用程序,在这里我们使用它来练习波
在您这样做之前,我们假设我们有一个项目作为主要应用程序,一个作为子申请,另一个作为另一个子申请。
因此,我们去创建一个项目结构
我通过脚手架的脚手架创建的基础是该项目的主要18版,作为集成资源的主要项目,这里17,18无动于衷
React17版本是作为儿童应用程序创建的(请注意React的版本,此处的最新18个版本将存在个人问题,我仍在尝试阅读React18文档,Storm哭泣...)
创建的VUE3项目是最子申请。不管您习惯于Vue2,您都知道可以在哪里更改WebPack的配置
好吧,已经创建了第一个和第二个儿子的三个项目,然后如何实现和整合。(前面提到的是微型前端与技术堆栈无关)
第一步是在基地下方,首先安装路线和Qiankun,
在根组件下写这样的代码
运行基本效果:
现在,我们要在单击VUE应用程序时访问该应用程序,当您单击React应用程序时,您可以访问该应用程序
目前,您需要注册这两个子应用程序到基础,并在基本> src中创建registerapps.js文件
因为代码中有评论,所以您不会一一解释含义。我相信你可以理解
注册这两个子申请后,我们将registerapps.js文件介绍给base> src> index.js
再次启动基本项目,单击VUE应用程序效果:
这条路线到达http:// localhost:3000/vue,但现在我正在报告错误,因为我们的应用程序尚未启动,因此在基数中注册无效,然后我们将在M-Vue应用程序中开发一些东西首先要在M-Vue应用程序中开发某些内容。
因为我们在基础中注册的VUE应用程序端口号为8080,并且Vue脚手架默认值的端口号为8080,因此它是正确的,但是如果要修改端口号,则需要更改上面的端口,并且上方的端口,上方的端口,上方的端口,上方的端口,上方的端口,上方的端口,上方的端口,上方的端口,以及上方的端口,以及上方的端口,上方的端口以及上方的端口,端口以及上方的端口,修改M-Vue应用程序中的配置,在M-Vue项目的根目录中创建vue.config.js并写下
M-Vue配置项目在配置项目的注释中说明
在这里,我们提前安装了Vue-Router,并配备了两个简单的页面(不安装自己)。我们不会为路线的配置解释太多。相信自己,让我们直接将其放在这里。路线的代码(页面本身创建它)
添加到app.vue
启动M-VUE应用程序后:
好的,当子申请本身运行时没有问题,然后进入基本应用程序的启动接口
似乎在基本的主要应用中,控件告诉我们,已安装了此M-Vue的子应用程序。
在这里,我们需要解释:在子申请中,Bootstrap,Mount,在三个生命周期中卸下,都在Qiankun中。我们只需要公开这些名称的这三个功能,它们将与主要应用程序中的生命周期集成。
好吧,在结束之前,我们需要将VUE应用程序安装到基础上。在我们连续单击以切换子应用程序时,我们涉及sub -application.let的安装和卸载。let,请意识到自己的安装,然后修改main.js
并修改路由配置文件,删除多余部分
修改后,我们分别启动M Vue子申请
好!没问题,然后来运行基础的主要应用程序
同样好!此时,您可以紧紧叹息!交叉路口
通过这种方式,我们成功地将M-Vue子应用程序集成到了基础的主要应用中,因此我们继续将另一个M反应子应用集成到基础中
当您进入M-REACT项目时,在同一第一步中,我们需要修改M-REACT子应用程序的配置文件(或微型应用),并且有许多方法可以修改React配置文件。但是,以这种方式暴露的配置文件太多。我们在M-REACT根目录中选择轻巧,安装插件,然后创建.sriptsrc.js配置文件
这里的配置与VUE中的配置相同的知识语法相同。语法由插头确定。我们不会解释太多
此外,我们希望它可以在端口3001上运行,并且在React中,项目运行的末端数与VUE相对差异。
m反应> .env
最后,因为我们使用插件 - reccripts重写了项目配置,因此我们需要在package.json中修改project启动命令。
完成这些工作后,您可以看到M-REACT应用程序:
单独的M反应应用没有问题,所以让我们看一下基础的效果
我想您已经知道问题所在。我们没有在子申请中导出三个生命周期!
这里的执行逻辑与VUE中的执行逻辑相同。让我们看一下主要应用程序中的效果:
这是一个局外人,在React17中询问Reactdom.unmountcomponentatnode()具有这样的未安装函数。在更新第18版之后,此卸载功能已经消失,因此文章强调了注意力版本。
它也似乎成功了。现在,您尝试单击VUE应用程序并进行反应应用程序。两个子应用的切换没有问题。这是实现的!交叉路口
它真的在这里完成吗?还没有
现在,页面上这两个导航的样式实际上将随着应用程序的切换而改变。这个问题也是微型前端设计设计中最常见的问题。
然后,Qiankun中当前采用的解决方案是通过添加前缀的CSS模块式隔离样式
我们只需要在寄存器apps.js文件中修改主文件
目前,该解决方案仍在试用,并且将来可能会进行修改。好吧,让我们看一下页面的效果。NAV导航的风格刚才没有问题。您还可以在控制台上看到它。
再次将属性添加到页面标签中以使用此属性充当实现样式隔离的前缀
在这一点上,我们已经完成了React项目中集成两个子应用的效果。您还认为微型前端非常有趣> _ <
文章参考
Qiankun官方网站
珠穆朗玛峰
原始:https://juejin.cn/post/7095266141970366500