umijs / qiankun

📦 🚀 Blazing fast, simple and complete solution for micro frontends.
https://qiankun.umijs.org
MIT License
15.74k stars 2.01k forks source link

v-html和importEntry不会导致js被下载两次吗 #309

Closed bacy closed 4 years ago

bacy commented 4 years ago

What happens?

一个小疑问,v-html和importEntry不会导致js被下载两次吗?

image

一次是v-html导致,一次是fetch查的。这样不会有性能或者效率的损失吗?

最小可复现仓库

复现步骤,错误日志以及相关配置

相关环境信息

fringesoft commented 4 years ago

我也碰到同样的问题,vue中用v-html指令渲染的时候js文件会被下载两次,当js文件较大时有些游览器还会加载包content-length不一致的错误,我目前的解决方法是在赋值给v-html前移除所有用link标签加载的js脚本:

  //避免重复加载资源
    var fixedAppContent = "";
    if (appContent) {
      fixedAppContent = appContent;
      var linkTags = appContent.match(/<link((?!<).)*>/g);
      for (let i = 0; i < linkTags.length; i++) {
        fixedAppContent = fixedAppContent.replace(
          linkTags[i],
          linkTags[i].replace("<", "<!--").replace(">", "-->")
        );
      }
    }
bacy commented 4 years ago

我也碰到同样的问题,vue中用v-html指令渲染的时候js文件会被下载两次,当js文件较大时有些游览器还会加载包content-length不一致的错误,我目前的解决方法是在赋值给v-html前移除所有用link标签加载的js脚本:

//避免重复加载资源
  var fixedAppContent = "";
  if (appContent) {
    fixedAppContent = appContent;
    var linkTags = appContent.match(/<link((?!<).)*>/g);
    for (let i = 0; i < linkTags.length; i++) {
      fixedAppContent = fixedAppContent.replace(
        linkTags[i],
        linkTags[i].replace("<", "<!--").replace(">", "-->")
      );
    }
  }

这是个不错的办法,不过你这样写,会把css给移除了 image 除了判断link的话,还得把style过滤掉

kuitos commented 4 years ago

npm update 更新到最新的依赖即可