micro-frontend icon indicating copy to clipboard operation
micro-frontend copied to clipboard

请教一下对于css污染怎么处理

Open yuleiQ opened this issue 3 years ago • 0 comments

我是想给我的应用加一个独有class名称,然后在unmount的时候重写方法卸载他

下面是我的代码,注册应用的loadApp函数

export function loadApp(app) {
   return async config => {
    // 开始加载 app
    try {
      const doc = await http.get(appUrl);
      const {
        scripts,
        links
      } = parseHtml(doc, appUrl);
     // 在这里loadcss
      console.log('loader'); // 每个插件在这里只执行了一次 导致挂上css 卸载掉后,切换回来class不再被load了
      links.map(url => {
        return loadCss(name, url);
      });
      scripts.map(url => {
        return loadJs(url);
      });
      console.log('loader');
    } catch (e) {
      error = e;
    }
   return new Promise((resolve, reject) => {
      if (error) {
        return reject(error);
      }
      sdk.onAppLoaded(name, e => {
        store.commit(`app/app_success`, {
          name,
          data: e
        });
        // 重写插件卸载方法,卸载时删除插件
        const unmount = e.unmount;
        e.unmount = async (...args) => {
          const res = await unmount(...args);
          console.log(`${name} unmount--------------------`);
          unLoadCss(name);
          return res;
        };
        resolve(e);
      });
    });
}

yuleiQ avatar Sep 24 '21 02:09 yuleiQ