gpt4 book ai didi

javascript - 使用 Webpack,如何动态加载使用另一个 Webpack 构建的外部模块

转载 作者:行者123 更新时间:2023-12-05 07:15:04 29 4
gpt4 key购买 nike

假设我管理着 2 个使用 Webpack 构建的 JavaScript 项目:

  • 一个名为用户网站的网站
  • 一个名为 External-Module
  • 的 JavaScript 模块

请注意,出于 Micro Front end 描述的相同原因,我使用了 2 个独立的项目。架构。

我希望我的User-Website 能够按需动态加载External-Module(使用任何 JavaScript 模块技术)。我的 User-Website 在构建时知道访问 External-Module 的 URL。

我可以选择User-WebsiteExternal-Module 所需的任何技术。

我正在寻找解决方案:

  • 这很容易实现(也许 Webpack 已经处理动态加载 block 的 JSONP?)
  • 这不会增加User-WebsiteExternal-Module 的太多开销(例如JavaScript modules 看起来不错,但需要大量填充)

我的问题与 https://github.com/webpack/webpack/issues/7526 有关


我尝试在我的External-Module 上使用 JSONP 库输出,但我不知道如何在User-Website 中加载它。

我也在考虑使用 SystemJSUser-Website 中动态加载 External-Module:

  • 我还可以在 Webpack 中用 SystemJS 替换内部 JSONP 机制(以节省在 m 个包中使用 JSONP 机制)。
  • SystemJS看起来比 RequireJS 更好更现代
  • 这将需要添加 SystemJS (仅限 s.js)开销。我正在尝试使用尽可能少的依赖项。

最佳答案

如果我没有得到问题,我很抱歉,但我最近根据您提供的链接中的文章做了一个项目。您不能只托管两个应用程序并在运行时加载 chunk.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);
});
}

关于javascript - 使用 Webpack,如何动态加载使用另一个 Webpack 构建的外部模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59735080/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com