qiankun icon indicating copy to clipboard operation
qiankun copied to clipboard

想问一下,未来是否考虑支持 vite

Open zengxiaohui2019 opened this issue 3 years ago • 33 comments

官方大大,非常感谢你们辛苦付出! 想问一下,未来是否考虑支持 vite,这个需求很值得期待,对前端开发十分友好,如果官方不考虑支持,是否可以给出对接建议,期待ing...

zengxiaohui2019 avatar Feb 05 '21 06:02 zengxiaohui2019

是啊 vite啥时间有参考的配置啊

zhangjing007 avatar Mar 14 '21 03:03 zhangjing007

个人觉得不支持vite主要是因为vite的script标签中有type="module",而qiankun的依赖之一import-html-entry不支持这个属性,导致整个框架不支持vite。但新版的import-html-entry已经支持type="module"(参见此处),只是qiankun的依赖还没更新,相信快了!

vlev1n avatar Apr 07 '21 06:04 vlev1n

重要的是vite没有动态publicPath的支持, webpack_public_path

snnaenu avatar Apr 21 '21 04:04 snnaenu

webpack_public_path 没有动态 就写死好了

django-d avatar Apr 22 '21 08:04 django-d

个人觉得不支持vite主要是因为vite的script标签中有type="module",而qiankun的依赖之一import-html-entry不支持这个属性,导致整个框架不支持vite。但新版的import-html-entry已经支持type="module"(参见此处),只是qiankun的依赖还没更新,相信快了!

这个依赖早就更新了吧。

由于 qiankun 是通过 eval 来执行这些 js 的内容,而 vite 里面 import/export 没有被转码, 所以直接接入会报错:不允许在非type=module 的 script 里面使用 import

image

也就是说 vite 构建的 js 内容必须在 type=module 的 script 里面。如果修改下 import-html-entry 源码,对 type=module 的 script 进行放行,那么会导致 qiankun 拿不到生命周期函数,因为 js 内容不是 qiankun 执行的。这里改下生命周期函数的获取方式,或许可以。

按照 https://github.com/umijs/qiankun/issues/1268#issuecomment-807954544 这个方法,可以实现生产环境接入,开发环境不行。

但是存在以下问题:

  1. pubicPath 需要写死

  2. 路由无法懒加载

    lazy-load

  3. 图片只会被打包成 base64,无论大小

demo 地址:https://github.com/gongshun/qiankun-vue-demo/tree/feature/vite-child

猜想:其实 umd 打包不是必须的,如果直接在入口文件把生命周期函数挂在 window 上,也是可以拿到生命周期函数的,利用 @vitejs/plugin-legacy 进行转码,可以解决 type=module 的 script 的问题,但是还有其他的事情要做。不使用 umd 打包可以解决上面的问题2和3

@wangzhiwei1888

gongshun avatar May 17 '21 09:05 gongshun

个人觉得不支持vite主要是因为vite的script标签中有type="module",而qiankun的依赖之一import-html-entry不支持这个属性,导致整个框架不支持vite。但新版的import-html-entry已经支持type="module"(参见此处),只是qiankun的依赖还没更新,相信快了!

这个依赖早就更新了吧。

由于 qiankun 是通过 eval 来执行这些 js 的内容,而 vite 里面 import/export 没有被转码, 所以直接接入会报错:不允许在非type=module 的 script 里面使用 import

image

也就是说 vite 构建的 js 内容必须在 type=module 的 script 里面。如果修改下 import-html-entry 源码,对 type=module 的 script 进行放行,那么会导致 qiankun 拿不到生命周期函数,因为 js 内容不是 qiankun 执行的。这里改下生命周期函数的获取方式,或许可以。

按照 #1268 (comment) 这个方法,可以实现生产环境接入,开发环境不行。

但是存在以下问题:

  1. pubicPath 需要写死
  2. 路由无法懒加载 lazy-load
  3. 图片只会被打包成 base64,无论大小

demo 地址:https://github.com/gongshun/qiankun-vue-demo/tree/feature/vite-child

猜想:其实 umd 打包不是必须的,如果直接在入口文件把生命周期函数挂在 window 上,也是可以拿到生命周期函数的,利用 @vitejs/plugin-legacy 进行转码,可以解决 type=module 的 script 的问题,但是还有其他的事情要做。不使用 umd 打包可以解决上面的问题2和3

@wangzhiwei1888

这么搞代价有点大,没必要吧

haitaodesign avatar May 26 '21 01:05 haitaodesign

个人觉得不支持vite主要是因为vite的script标签中有type="module",而qiankun的依赖之一import-html-entry不支持这个属性,导致整个框架不支持vite。但新版的import-html-entry已经支持type="module"(参见此处),只是qiankun的依赖还没更新,相信快了!

这个依赖早就更新了吧。 由于 qiankun 是通过 eval 来执行这些 js 的内容,而 vite 里面 import/export 没有被转码, 所以直接接入会报错:不允许在非type=module 的 script 里面使用 import image 也就是说 vite 构建的 js 内容必须在 type=module 的 script 里面。如果修改下 import-html-entry 源码,对 type=module 的 script 进行放行,那么会导致 qiankun 拿不到生命周期函数,因为 js 内容不是 qiankun 执行的。这里改下生命周期函数的获取方式,或许可以。 按照 #1268 (comment) 这个方法,可以实现生产环境接入,开发环境不行。 但是存在以下问题:

  1. pubicPath 需要写死
  2. 路由无法懒加载 lazy-load
  3. 图片只会被打包成 base64,无论大小

demo 地址:https://github.com/gongshun/qiankun-vue-demo/tree/feature/vite-child 猜想:其实 umd 打包不是必须的,如果直接在入口文件把生命周期函数挂在 window 上,也是可以拿到生命周期函数的,利用 @vitejs/plugin-legacy 进行转码,可以解决 type=module 的 script 的问题,但是还有其他的事情要做。不使用 umd 打包可以解决上面的问题2和3 @wangzhiwei1888

这么搞代价有点大,没必要吧

写了一个基于es打包的 vite插件 vite-plugin-qiankun , 大家可以试试a

npm install vite-plugin-qiankun 配置简单、保留es特性

tengmaoqing avatar Jul 06 '21 07:07 tengmaoqing

同问,后续官方大大会有计划支持吗?我们的项目在计划转vite了,但使用了qiankun作为微前端框架,该计划一直搁浅。求助!!!

不支持的话,又没有相关建议,万分感谢!!!

jiangjunfeng98 avatar Jul 23 '21 08:07 jiangjunfeng98

同问,后续官方大大会有计划支持吗?我们的项目在计划转vite了,但使用了qiankun作为微前端框架,该计划一直搁浅。求助!!!

不支持的话,又没有相关建议,万分感谢!!!

vite-plugin-qiankun 这个插件我在生产使用,目前没有遇到什么问题,欢迎使用。

tengmaoqing avatar Jul 23 '21 09:07 tengmaoqing

同问,后续官方大大会有计划支持吗?我们的项目在计划转vite了,但使用了qiankun作为微前端框架,该计划一直搁浅。求助!!! 不支持的话,又没有相关建议,万分感谢!!!

vite-plugin-qiankun 这个插件我在生产使用,目前没有遇到什么问题,欢迎使用。

请问有文档或者demo吗?

zhangjing007 avatar Jul 23 '21 10:07 zhangjing007

同问,后续官方大大会有计划支持吗?我们的项目在计划转vite了,但使用了qiankun作为微前端框架,该计划一直搁浅。求助!!! 不支持的话,又没有相关建议,万分感谢!!!

vite-plugin-qiankun 这个插件我在生产使用,目前没有遇到什么问题,欢迎使用。

请问有文档或者demo吗?

https://github.com/tengmaoqing/vite-plugin-qiankun 这个

tengmaoqing avatar Jul 23 '21 10:07 tengmaoqing

同问,后续官方大大会有计划支持吗?我们的项目在计划转vite了,但使用了qiankun作为微前端框架,该计划一直搁浅。求助!!! 不支持的话,又没有相关建议,万分感谢!!!

vite-plugin-qiankun 这个插件我在生产使用,目前没有遇到什么问题,欢迎使用。

我用了,不知道是不是我的配置有问题,开发环境不行。我也参考呢你的demo,但demo的vite项目是build后一起启动的,我们还是想要dev模式。 老哥,有解不?

jiangjunfeng98 avatar Jul 23 '21 13:07 jiangjunfeng98

同问,后续官方大大会有计划支持吗?我们的项目在计划转vite了,但使用了qiankun作为微前端框架,该计划一直搁浅。求助!!! 不支持的话,又没有相关建议,万分感谢!!!

vite-plugin-qiankun 这个插件我在生产使用,目前没有遇到什么问题,欢迎使用。

我用了,不知道是不是我的配置有问题,开发环境不行。我也参考呢你的demo,但demo的vite项目是build后一起启动的,我们还是想要dev模式。 老哥,有解不?

dev就是不支持,只有生产支持

Hxgh avatar Aug 13 '21 02:08 Hxgh

同问,后续官方大大会有计划支持吗?我们的项目在计划转vite了,但使用了qiankun作为微前端框架,该计划一直搁浅。求助!!! 不支持的话,又没有相关建议,万分感谢!!!

vite-plugin-qiankun 这个插件我在生产使用,目前没有遇到什么问题,欢迎使用。

我用了,不知道是不是我的配置有问题,开发环境不行。我也参考呢你的demo,但demo的vite项目是build后一起启动的,我们还是想要dev模式。 老哥,有解不?

现在支持dev环境了,欢迎尝试

tengmaoqing avatar Aug 14 '21 05:08 tengmaoqing

个人觉得不支持vite主要是因为vite的script标签中有type="module",而qiankun的依赖之一import-html-entry不支持这个属性,导致整个框架不支持vite。但新版的import-html-entry已经支持type="module"(参见此处),只是qiankun的依赖还没更新,相信快了!

这个依赖早就更新了吧。 由于 qiankun 是通过 eval 来执行这些 js 的内容,而 vite 里面 import/export 没有被转码, 所以直接接入会报错:不允许在非type=module 的 script 里面使用 import image 也就是说 vite 构建的 js 内容必须在 type=module 的 script 里面。如果修改下 import-html-entry 源码,对 type=module 的 script 进行放行,那么会导致 qiankun 拿不到生命周期函数,因为 js 内容不是 qiankun 执行的。这里改下生命周期函数的获取方式,或许可以。 按照 #1268 (comment) 这个方法,可以实现生产环境接入,开发环境不行。 但是存在以下问题:

  1. pubicPath 需要写死
  2. 路由无法懒加载 lazy-load
  3. 图片只会被打包成 base64,无论大小

demo 地址:https://github.com/gongshun/qiankun-vue-demo/tree/feature/vite-child 猜想:其实 umd 打包不是必须的,如果直接在入口文件把生命周期函数挂在 window 上,也是可以拿到生命周期函数的,利用 @vitejs/plugin-legacy 进行转码,可以解决 type=module 的 script 的问题,但是还有其他的事情要做。不使用 umd 打包可以解决上面的问题2和3 @wangzhiwei1888

这么搞代价有点大,没必要吧

写了一个基于es打包的 vite插件 vite-plugin-qiankun , 大家可以试试a

npm install vite-plugin-qiankun 配置简单、保留es特性

大佬这个能支持vue3么?

kakajun avatar Sep 06 '21 15:09 kakajun

@Kuitos 组内也有接入vite的想法,想问下官方是否考虑支持?

humorHan avatar Nov 05 '21 03:11 humorHan

@kuitos 组内也有接入vite的想法,想问下官方是否考虑支持?

https://github.com/umijs/qiankun/discussions/1378 @humorHan

gongshun avatar Nov 05 '21 03:11 gongshun

目前的尝试,希望能有更好的解决方案。https://juejin.cn/post/7078958486041657374

zbeanbean avatar Mar 25 '22 10:03 zbeanbean

显然,并没有得到官方团队的正面答复丫~

nongzhenli avatar May 05 '22 08:05 nongzhenli

过几天再来看看吧

kongweigen avatar May 18 '22 01:05 kongweigen

+1

shunyue1320 avatar May 20 '22 15:05 shunyue1320

+1

nvuhung avatar May 30 '22 02:05 nvuhung

mark +1

zhoufanglu avatar May 31 '22 03:05 zhoufanglu

mark +1

gitzhaochen avatar Jun 02 '22 08:06 gitzhaochen

mark +1

lxlneo avatar Jun 06 '22 06:06 lxlneo

mark +1

itLeeyw avatar Jun 11 '22 05:06 itLeeyw

+1

galaxynova1999 avatar Jun 13 '22 05:06 galaxynova1999

用iframe降级使用了

sunsmeil avatar Jul 07 '22 09:07 sunsmeil

为啥官方不回复这个问题呀?

lieqiang avatar Jul 09 '22 02:07 lieqiang

右上侧可以订阅这个 issue 的更新,建议后来的朋友不必回复无意义的 + 1,所有订阅的人都会收到邮件通知。

Meowu avatar Jul 12 '22 03:07 Meowu