kami
kami
> 请问最后怎么解决呢 每个子应用的App.vue的created时期,根据主应用传过来的主题色去改变子应用自己的主题色,并监听这个主题色的变量,若果有改变就重新调用修改主题色的方法去修改当前的子应用主题色
感谢,我看我安装了依赖,所以没想到。结果一看,还是依赖安装出问题了,我重新安装就好了
> Vue2 的插件都是全局的,没有办法避免污染,只能在 mount 函数里面覆盖,或者换个函数名(加上子应用name前缀) > > Vue3的插件可以注册到实例上,不会污染全局。 > Vue2 的插件都是全局的,没有办法避免污染,只能在 mount 函数里面覆盖,或者换个函数名(加上子应用name前缀) > > Vue3的插件可以注册到实例上,不会污染全局。 那我是得要考虑升级到 vue3,还是有没有哪些插件能帮助我自动将全局的变量和方法名带上系统的名字作前缀或后缀呢?
> > ##问题背景: > > 在子应用 A 中有个过滤器函数 byteToSize,子应用 B 中也有这个函数,在某个表格中用到,两个应用都是用 Vue.filter 将 filter 注册为全局的 filter 挂载在 Vue 实例下。打包上线后发现,只要先打开子应用 B ,然后再打开子应用 A,再切回子应用 B 就会发现 B 用的却是 A 的 byteToSize 过滤器。...
> 这个其实还会引起原型链污染的问题。目前的qiankun沙盒式解不了这个问题的,只能自己写的时候注意,别太依赖原型链相关的东西 的确,现在才发现Vue2配合qiankun的污染问题影响比较大,还是得迭代到Vue3才好处理,希望qiankun能在文档标注下对应一些框架较为严重的问题,避免开发后才发现所用框架与qiankun问题太多
> > 的确,现在才发现Vue2配合qiankun的污染问题影响比较大,还是得迭代到Vue3才好处理,希望qiankun能在文档标注下对应一些框架较为严重的问题,避免开发后才发现所用框架与qiankun问题太多 > > 试试cdn + external, @@@然后子应用不添加ignore,让子应用走http缓存呢?@LuoHongXin cdn + external也是提取公共依赖的一种方式,但不行,vue的原型链同样是会受到干扰
> > cdn + external也是提取公共依赖的一种方式,但不行,vue的原型链同样是会受到干扰 > > 你的子应用的html文件加载cdn了吗?我这里测试是不会影响的,因为他们使用的vue都不是同一个。 我试了把vue相关的package都用cdn,其它有些公共package不好弄成cdn则继续使用dll方式,但vue的原型链还是会受到干扰
> 是的,就是这个问题,因为vue2的插件以及它的API注册都是通过vue.use形式,直接作用于vue原型链的。现在我打算升级到vue3.0去解决这个问题了,cdn简单但并不适合所有package,所以我才采用dll
> > 是的,就是这个问题,因为vue2的插件以及它的API注册都是通过vue.use形式,直接作用于vue原型链的。现在我打算升级到vue3.0去解决这个问题了,cdn简单但并不适合所有package,所以我才采用dll > > 看下我的这个[demo](https://github.com/ViavaCos/demo-qiankun) > > 我在主应用`main`和子应用`child-a` `child-b` 的main.js 文件中都添加了`Vue.prototype.$test`属性。 并且在他们三者直接相互切换依旧还是正常得到了自己的值。  没有提取公共依赖,应用之间还是能正常隔离,互相没有干扰的,但是用dll把公共的依赖提取到主应用中,所有应用使用的公共依赖都来自主应用,就会出现这种问题,这是dll方式造成的问题,你这个demo直接启用各自应用是没问题的
> > 没有提取公共依赖,应用之间还是能正常隔离,互相没有干扰的,但是用dll把公共的依赖提取到主应用中,所有应用使用的公共依赖都来自主应用,就会出现这种问题,这是dll方式造成的问题,你这个demo直接启用各自应用是没问题的 > > ┓( ´∀` )┏, 所以回到了起点。dll也是在主应用中抛出全局变量,所以对于这种有副作用的依赖,还是不好共享的好。 走http缓存也是挺香的。  问题是要提取的公共依赖有很多,有些自己开发的依赖可能也会不定时升级的,所以cdn形式走缓存只能说很麻烦,不能保证要提取的依赖(现在或未来可能要提取的依赖)都支持umd格式,而用dll则可以直接打包node_modules中的依赖,如果说你知道有办法把node_modules中的依赖生成为umd格式的文件,那使用cdn形式就太方便了