Closed ywager closed 4 years ago
这里的 *.chunk.js
需要拷贝到主应用的 assets 目录里。
Mooa 在设计的时候没有针对子应用的情况考虑。就现在的情况来看,iframe 模式应该有两种做法:
Hi Phodal, 谢谢您的回复。 这里的 .chunk.js 需要拷贝到主应用的 assets 目录里。 // 用开发模式即ng serve启动主应用时,加载子应用.chunk.js也是用的"/"路径 例如: Request URL:http://localhost:4200/0.4713efcc5d1961c449e7.chunk.js Request Method:GET Status Code:404 Not Found
2.独立部署子应用,然后由 iframe 指定这个应用 // 独立部署子应用后,需要怎么在主应用加载这个子应用?
不好意思,之前看错了。
实现 1,在开发环境需要打包,然后到 dist
目录运行一个 HTTP Server。
实现 2,这个功能还没有实现,但是改起来比较方便:export function createApplicationIframeContainer(mooaApp: MooaApp)
除了此,应该可以用 ng eject
,然后修改 webpack 的 chunk 插件的构建就可以了。
Hi phodal, 多谢, 按照您的思路, 我先试一试.
@phodal 对于Angular Lazyload Module,我发现你这边重复定义了,iframe里面的html页下的
function createApplicationIframeContainer(mooaApp) {
var opts = mooaApp.appConfig;
if (mooaApp.switchMode === 'coexist') {
var iframeElement = isIframeElementExist(mooaApp);
if (iframeElement) {
iframeElement.style.display = 'block';
return iframeElement;
}
}
var iframe = document.createElement('iframe');
iframe.frameBorder = '';
iframe.width = '100%';
iframe.height = '100%';
iframe.src = window.location.origin + '/assets/iframe.html';
iframe.id = generateIFrameID(mooaApp.appConfig.name);
var el = document.createElement(opts.selector);
if (opts.parentElement) {
var parentEl = document.querySelector(opts.parentElement);
if (parentEl) {
parentEl.appendChild(iframe);
}
}
else {
document.body.appendChild(iframe);
}
var iframeEl = document.getElementById(iframe.id);
iframeEl.contentWindow.document.write('<div></div>');
iframeEl.contentWindow.document.body.appendChild(el);
//注释此代码
// iframeEl.contentWindow.document.head.innerHTML =
// iframeEl.contentWindow.document.head.innerHTML + "<base href='/' />";
iframeEl.contentWindow.mooa = {
isSingleSpa: true
};
iframeEl.contentWindow.addEventListener(MOOA_EVENT.ROUTING_NAVIGATE, function (event) {
if (event.detail) {
navigateAppByName(event.detail);
}
});
}
@kisslove 欢迎来 Pull Request
@phodal 我这边也是在研究微前端的时候,发现你的项目,我们项目打算尝试使用一下
@kisslove 哈哈,欢迎来意见,这个框架是我们去年研究的时候写的——很多东西,我都忘了。
原来是这里有个坑,我原以为要去修改 webpack。
@phodal 你们项目中有使用这套框架吗,需要更多的人来维护,这个才活跃的起来哦
哈哈,我们的客户不打算用这个框架。
因为用的人少,而且 issue 也少,欢迎试坑交流。
@phodal ,哈哈。好的,目前框架搭起来,我需要测试一下,再来评估。填完的坑,我后面提pull request,你那边也可以看看
@phodal 你好,请问mooa框架请适用手机端吗,ionic4、ionic3+angular移动混合项目
@benben22 理论上,用 Angular 写的都可以
please try https://github.com/worktile/ngx-planet
For Angular Lazyload Module
inline.bundle.js will load script for / path.
So, just copy *.chunk.js files to dist/, then deploy it.
以上是针对生产环境环境下的配置,测试OK。如果是开发环境*.chunk.js需要拷贝到哪个目录,才能成功加载使用lazyload的子应用?