lowcode-engine
lowcode-engine copied to clipboard
抛个砖,分享几个自己对引擎代码的小fix,顺便求一下workspace的使用示例
1. 微前端环境下中用不了子应用window上的JS库
原因: new Function 中拿到的window,是主应用的的window,而非经过代理后的子应用window

修改后:
// ...
// 微前端环境下,将当前window传入,保障new Function里的window是子应用的window
if ((window as any).__POWERED_BY_QIANKUN__) {
const code = `with($win) { with(${thisRequired ? '{}' : '$scope || {}'}) { ${tarStr} } }`;
return new Function('$scope', "$win", code)(self, window);
}
const code = `with(${thisRequired ? '{}' : '$scope || {}'}) { ${tarStr} }`;
return new Function('$scope', code)(self);
// ...
PS:
- 保险起见,只加了qiankun微前端环境的判断,若想更广泛地支持,可以用去掉判断,直接替换下面两行原来代码
- 编辑器中还有很多地方用了 new Function,但我这边没有在微前端环境下使用编辑器的诉求,故只改了渲染容器
2. 数据源请求方法不支持FormData类型参数
原因:
- 对非数组参数做了扩展运算,而FormData类型扩展运算后是空对象
修改后:
// ...
// 支持参数为array的情况,当参数为array时,不做参数合并(fix: 追加判断FormData场景)
params:
Array.isArray(options.params) || Array.isArray(params) || params instanceof FormData
? params || options.params
: {
...options.params,
...params,
},
// ...
- post请求里始终会对参数进行序列化,转成string
// ...
const body = params instanceof FormData
? params
: processedHeaders['Content-Type'].indexOf('application/json') > -1 || Array.isArray(params)
? JSON.stringify(params)
: serializeParams(params);
// ...
大致就这些了,希望官方人员觉得有价值可以采纳~~
最后再次求一下新版本里workspace的使用示例,感觉是个很有用的东西,但就是不知道该咋上手[手动捂脸]
感谢反馈!bugfix欢迎PR哈,如果是经验类的也欢迎写成文章发到技术社区,我们可以把链接放到官网。
workspace的使用文档和demo还在抓紧产出中~
nice!这周刚要处理微前端的window环境问题,及时雨哇
https://mp.weixin.qq.com/s/dwi40gJjGBHW9MVpag5Oxg