Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
zengxiaohui2019 opened this issue Feb 5, 2021 · 57 comments
Open

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

zengxiaohui2019 opened this issue Feb 5, 2021 · 57 comments

Comments

@zengxiaohui2019
Copy link

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

@zhangjing007
Copy link

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

@vlev1n
Copy link

vlev1n commented Apr 7, 2021

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

@snnaenu
Copy link

snnaenu commented Apr 21, 2021

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

@django-d
Copy link

webpack_public_path 没有动态 就写死好了

@gongshun
Copy link
Collaborator

gongshun commented May 17, 2021

个人觉得不支持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:/gongshun/qiankun-vue-demo/tree/feature/vite-child

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

@wangzhiwei1888

@haitaodesign
Copy link
Contributor

个人觉得不支持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:/gongshun/qiankun-vue-demo/tree/feature/vite-child

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

@wangzhiwei1888

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

@tengmaoqing
Copy link

个人觉得不支持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:/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特性

@jiangjunfeng98
Copy link

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

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

@tengmaoqing
Copy link

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

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

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

@zhangjing007
Copy link

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

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

请问有文档或者demo吗?

@tengmaoqing
Copy link

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

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

请问有文档或者demo吗?

https:/tengmaoqing/vite-plugin-qiankun 这个

@jiangjunfeng98
Copy link

jiangjunfeng98 commented Jul 23, 2021

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

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

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

@Hxgh
Copy link

Hxgh commented Aug 13, 2021

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

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

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

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

@tengmaoqing
Copy link

tengmaoqing commented Aug 14, 2021

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

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

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

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

@kakajun
Copy link

kakajun commented Sep 6, 2021

个人觉得不支持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:/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么?

@humorHan
Copy link
Contributor

humorHan commented Nov 5, 2021

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

@gongshun
Copy link
Collaborator

gongshun commented Nov 5, 2021

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

#1378 @humorHan

@zbeanbean
Copy link

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

@nongzhenli
Copy link

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

@kongweigen
Copy link

过几天再来看看吧

@shunyue1320
Copy link

+1

1 similar comment
@nvuhung
Copy link

nvuhung commented May 30, 2022

+1

@zhoufanglu
Copy link

mark +1

3 similar comments
@gitzhaochen
Copy link

mark +1

@lxlneo
Copy link

lxlneo commented Jun 6, 2022

mark +1

@itLeeyw
Copy link

itLeeyw commented Jun 11, 2022

mark +1

@YornQiu
Copy link

YornQiu commented Jul 20, 2022

乾坤的沙盒是通过with+eval实现的,但是esm中import必须放在顶部,这时沙盒就无法运行。
那么换一个方向,如果不使用沙盒,是不是就可以支持vite了,在同时只加载一个子应用的情况下这么做似乎没有什么问题。
又或者,有没有办法实现一个适用于esm的沙盒?

@LeifJG
Copy link

LeifJG commented Jul 25, 2022

+1

@yugasun
Copy link

yugasun commented Aug 9, 2022

Refer to my project: https:/yugasun/micro-frontend-starter

@kakajun
Copy link

kakajun commented Oct 11, 2022 via email

@evemike
Copy link

evemike commented Oct 27, 2022

+1 mark

@gaorubin1990
Copy link

vite-plugin-qiankun 暂时没发现啥问题

@AYang518989
Copy link

AYang518989 commented Nov 13, 2022

vite-plugin-qiankun 暂时没发现啥问题

我自己本地的小demo可以运行,但是到项目子应用的生命周期从头走到尾,直接销毁了,请问有什么方法解决吗?

@lishaobos
Copy link

lishaobos commented Nov 17, 2022

其实换个思路也不是没办法,比较简单,我自己写了个 https:/lishaobos/vite-plugin-legacy-qiankun, 公司已经跑了好一段时间了。

@lishaobos
Copy link

可以讨论交流还有没有更好的办法

@MechaGirls
Copy link

同问,官方大佬们啥时可以适配vite

1 similar comment
@TengFeiHao
Copy link

同问,官方大佬们啥时可以适配vite

@sky124380729
Copy link

mark

2 similar comments
@SericXu
Copy link

SericXu commented Feb 6, 2023

mark

@russellmars
Copy link

mark

@lishaobos
Copy link

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

2年过去了,也没见他们快起来呀。 又是一个kpi项目?哈哈哈,国内大厂... 啧啧啧

咱们是使用者,这么说也不好,有想法也可以给他们提 pr。

@mxismean
Copy link

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

2年过去了,也没见他们快起来呀。 又是一个kpi项目?哈哈哈,国内大厂... 啧啧啧

咱们是使用者,这么说也不好,有想法也可以给他们提 pr。

害,你说的对

@lishaobos
Copy link

lishaobos commented Feb 23, 2023

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

2年过去了,也没见他们快起来呀。 又是一个kpi项目?哈哈哈,国内大厂... 啧啧啧

咱们是使用者,这么说也不好,有想法也可以给他们提 pr。

害,你说的对

楼上不是有个老兄开发了个 vite 插件么,我自己也因为沙箱问题自己也开发了一个,你可以都试试,看能暂时解决你的问题么,大家都还是想把这弄好。

@mxismean
Copy link

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

2年过去了,也没见他们快起来呀。 又是一个kpi项目?哈哈哈,国内大厂... 啧啧啧

咱们是使用者,这么说也不好,有想法也可以给他们提 pr。

害,你说的对

楼上不是有个老兄开发了个 vite 插件么,我自己也因为沙箱问题自己也开发了一个,你可以都试试,看能暂时解决你的问题么,大家都还是想把这弄好。

好的 ,感谢

@lydhl
Copy link

lydhl commented Feb 27, 2023

裂开了 针灸无解呗

@cjlhll
Copy link

cjlhll commented Mar 23, 2023

其实换个思路也不是没办法,比较简单,我自己写了个 https:/lishaobos/vite-plugin-legacy-qiankun, 公司已经跑了好一段时间了。

element 的icon字体文件404怎么办啊,webpack有__webpack_public_path__可以解决。

@Mboulianne
Copy link

+1

@gjmhandsome
Copy link

其实换个思路也不是没办法,比较简单,我自己写了个 https:/lishaobos/vite-plugin-legacy-qiankun, 公司已经跑了好一段时间了。

element 的icon字体文件404怎么办啊,webpack有__webpack_public_path__可以解决。

写个vite plugin,在transform的时候手动加上public_path

@alexwjj
Copy link

alexwjj commented May 12, 2023

现在支持的咋样了,感觉原理冲突,有点难搞啊

@longshihui
Copy link

沙盒的原理是要拦截script脚本的加载,通过闭包的方式做沙盒。
es module原生加载是不支持拦截的,除非浏览器出新标准,否则我感觉想es module沙盒化,几乎是不可能

@lishaobos
Copy link

沙盒的原理是要拦截script脚本的加载,通过闭包的方式做沙盒。 es module原生加载是不支持拦截的,除非浏览器出新标准,否则我感觉想es module沙盒化,几乎是不可能

生产环境配合 legacy 还是没问题的,dev 就是代理到qiankun 的 window

@zidanDirk
Copy link

mark

@alexwjj
Copy link

alexwjj commented May 25, 2023

qiankun3.0已经支持了,等等把: #1378

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests