lowcode-engine icon indicating copy to clipboard operation
lowcode-engine copied to clipboard

抛个砖,分享几个自己对引擎代码的小fix,顺便求一下workspace的使用示例

Open fantasysango opened this issue 2 years ago • 2 comments

1. 微前端环境下中用不了子应用window上的JS库

原因: new Function 中拿到的window,是主应用的的window,而非经过代理后的子应用window packages/renderer-core/src/utils/common.ts

修改后:

// ...
    // 微前端环境下,将当前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类型扩展运算后是空对象 packages/renderer-core/src/utils/data-helper.ts 修改后:
// ...
          // 支持参数为array的情况,当参数为array时,不做参数合并(fix: 追加判断FormData场景)
          params:
            Array.isArray(options.params) || Array.isArray(params) || params instanceof FormData
              ? params || options.params
              : {
                ...options.params,
                ...params,
              },
// ...
  • post请求里始终会对参数进行序列化,转成string packages/renderer-core/src/utils/request.ts
// ...
  const body = params instanceof FormData 
    ? params 
    : processedHeaders['Content-Type'].indexOf('application/json') > -1 || Array.isArray(params)
    ? JSON.stringify(params)
    : serializeParams(params);
// ...

大致就这些了,希望官方人员觉得有价值可以采纳~~

最后再次求一下新版本里workspace的使用示例,感觉是个很有用的东西,但就是不知道该咋上手[手动捂脸]

fantasysango avatar Feb 15 '23 12:02 fantasysango

感谢反馈!bugfix欢迎PR哈,如果是经验类的也欢迎写成文章发到技术社区,我们可以把链接放到官网。

workspace的使用文档和demo还在抓紧产出中~

JackLian avatar Feb 16 '23 01:02 JackLian

nice!这周刚要处理微前端的window环境问题,及时雨哇

501981732 avatar Feb 28 '23 04:02 501981732

https://mp.weixin.qq.com/s/dwi40gJjGBHW9MVpag5Oxg

JackLian avatar May 05 '23 07:05 JackLian