背景 我面临着使工具现代化并将其转换为具有反应前端的微服务的任务。我的想法是有一个包含例如一般内容的通用顶级组件。 Nav和包含该功能的每个微服务的组件。
的方法:
我认为这会放弃不必为每次更改重新部署整个应用程序的优势
使用这种方法,我可以自己webpack每个组件,并从主页面异步导入它,但可能会有巨大的开销
我读到了基于组件的拆分与反应可加载和捆绑react-router或webpack,但我找不到有关如何从不同的URL-Endpoints加载小包的信息。
问题: 是否有可能自行捆绑反应组件并从不同的资源URL导入它们?如何处理它?(或者React甚至适合它)
答案 0 :(得分:1)
因此,经过大量搜索和实验,我找到了Zalando的Project Mosaic。它提供了一种出色的React组件拆分方式来支持Micro Frontends。但是请注意,它可能不适合较小的项目,因为需要花费一些时间来了解材料并设置所有必要的应用程序。
答案 1 :(得分:0)
看看下面的链接:
https://www.martinfowler.com/articles/micro-frontends.html
我最近根据该文章创建了一个项目,我认为这可能是您正在寻找的。 我制作了包装器应用程序,该应用程序根据URL和路由在运行时动态呈现微前端。在上面的文章中,有一个演示应用程序演示了这个想法。 每个微前端都是具有自己的代码存储库的单独项目。 https://demo.microfrontends.com/
每个应用程序都已托管,并且js块正在运行时加载。这段代码可能会使它变得更清楚了。
componentDidMount() {
const { name, host } = this.props;
const scriptId =
micro-frontend-script-$ {name}`;
if (document.getElementById(scriptId)) {
this.renderMicroFrontend();
return;
}
fetch(`${host}/asset-manifest.json`)
.then(res => res.json())
.then(manifest => {
const script = document.createElement('script');
script.id = scriptId;
script.src = `${host}${manifest['main.js']}`;
script.onload = this.renderMicroFrontend;
document.head.appendChild(script);
});
}`
希望您会发现这很有帮助:) 祝你好运!