uni-app 申请支持微信小程序分包异步化

smdncfj3  于 2021-11-27  发布在  Java
关注(0)|答案(14)|浏览(566)

微信小程序推出了分包异步化(官方指引)的功能,异步分包将能大大降低主包尺寸的压力。

估计其实现对vue体系来说是个不小的挑战,希望大神们能出手。

如同推出easycom一样。

dfddblmv

dfddblmv1#

提交了一个PR,支持componentPlaceholder配置,望采纳。

bjp0bcyl

bjp0bcyl2#

期待PR(#2936) review反馈

x0fgdtte

x0fgdtte4#

异步分包将能大大降低主包尺寸的压力
尺寸问题,普通分包就解决了吧,异步主要是解决不同分包之间互相引用

e0bqpujr

e0bqpujr5#

当项目达到一定的规模,普通分包已经无法解决主包过大问题:

  1. 多个分包公用的组件常会挪到主包维护,导致主包尺寸增加,不然就得把同一个组件拷贝到多个分包。
  2. 微信小程序插件可以从主包移到分包引入,但同一个插件只能在一个分包引入,这会导致其它分包无法使用该插件,除非把该插件放到主包引入,但这又会增加主包尺寸。(比如引入echart最小也600k)
  3. 还有其它一些js模块依赖问题会导致代码编译到主包,增大主包尺寸。
  4. 一般主包引入一个UI库 + 公用组件 + 公用JS模块 + 其它一些依赖库,2M的容量所剩无几了,尤其在UNIAPP的开发框架下。

微信新推出这个能力正好能解决上述问题,比增大主包尺寸要灵活、强大很多,应该是经过推敲的。理论上可以通过巧妙的代码依赖设计,充分用好20M的总包尺寸。

kxeu7u2r

kxeu7u2r6#

该功能跨平台的话,似乎比较困难,还需要评估一下

sqxo8psd

sqxo8psd7#

是的,毕竟是微信刚推出的新特性,算是非常底层和实用的框架支持了。

我提交的PR改得也非常小心,除了公共类的cache代码外'packages/uni-cli-shared/lib/cache. js',其它都是微信的webpack loader代码,实现微信小程序的代码和配置翻译。再有就是vue component option的配置命名了,目前选用了和微信小程序一样的命名,因为不知道其它平台会如何跟进。但对小程序来说,也就微信雄霸一方了。

uz75evzq

uz75evzq8#

微信小程序用的shadow-dom和不支持scope slot,让一切变得非常特殊,尤其对UI组件来说,样式穿透、节点关系等都不太一样,还有组件循环嵌套等。

有赞的VANT UI也不得不专门写了一套vant-weapp,我把它迁移到uniapp的框架体系,命名为iox ui,尽管加上了uniapp的预编译宏指令,依然难以完美兼容像支付宝之类的小程序。

提取平台的共性,同时支持平台的特性确实是个纠结而了不起的工作。

期望能尽早支持微信的分包异步化特性,包尺寸放大了确实能让小程序设计得更加强大。

oknrviil

oknrviil9#

@fxy060608
评估得怎么样了,是否能接纳PR的实现方式?

按UNIAPP的发布周期,接纳并测试发布,也得一个月之后了。

6l7fqoea

6l7fqoea10#

目前正在处理 vue3 小程序迁移到vite,等vue3相关工作结束后,可以考虑实现组件的跨分包使用,我大概看了下这个PR,目前似乎没有考虑vue3,可以再评估下,是否可以设计一套更容易兼容vue2,vue3的定义方式,以及如何兼容其他平台,如果兼容不了,只能开发者自行条件编译区分?

p4tfgftt

p4tfgftt11#

谢谢回复!腾讯的分包异步化确实是个很聪明的做法,也是前端开发很成熟的技术了。

当前未考虑到vue3,目前适合vue2,用于uniapp 2.x。比较羡慕那些没有公共组件负担、或者已经完成自身组件库升级的同学,能直接上vue3。vue2到vue3在工程上是个漫长的过程。

我稍后会建一个patch工程,稍后发布到github上,供临时有需要的同学共享。

bqjvbblv

bqjvbblv12#

创建了一个patch工程,地址为:https://github.com/huadong/uniapp-patch

patch相关联的PR和issue:#2949#2936#1383

  • 增强Tree shaking优化

patches/@dcloudio+vue-cli-plugin-uni+2.0.0-32920210927002.patch

  • 支持微信小程序分包异步化(仅限组件)

patches/@dcloudio+uni-cli-shared+2.0.0-32920210927002.patch
patches/@dcloudio+webpack-uni-mp-loader+2.0.0-32920210927002.patch

  • 增强externalClasses继承

patches/@dcloudio+uni-mp-weixin+2.0.0-32920210927002.patch

  • 解决@dcloudio/types定义的小问题

patches/@dcloudio+types+2.5.12.patch

cclgggtu

cclgggtu13#

@fxy060608 借题问一下,uni next版本目前有发布时间的预期么

a2mppw5e

a2mppw5e14#

目前小程序vite版本已经在内部测试,测试完成后,就会对外发布alpha版本,预计这2周左右就会发布

相关问题