使用 uni-app 开发小程序和 H5,分包异步化只能在小程序生效, H5 只能写兼容代码吗?

148 天前
 hereIsChen
原来的小程序中,由于代码比较多,之前做了分包,并且很多地方用了分包异步化来处理。比如富文本渲染用到 wxParse ,写成了一个组件,专门放到了一个分包中,然后通过分包异步化引入其他页面使用。除此之外还有些其他的,比如公用的 iconfont 图标,表单组件,重写的带搜索的 Picker 等,都是通过异步化加载的。

最近需要用 uniapp 来重构,但是使用分包异步化有些问题。
在 uniapp 中的 page.json 中,定义了 usingComponents 和 componentPlaceholder 。编译后,发现无法生成对应分包信息,后面发现需要在对应的分包 pages 中也添加组件的 xxx.vue 的地址,也就是需要当作页面定义好才能正确生成分包并引入。但是此种方法引入的组件,无法在 H5 网页中正确的显示和使用。

有没有什么方法可以直接引入后使用,而无需编写其他的兼容代码?



ps:前段时间还看了下 taro ,taro 的分包异步化只能通过 webpack 打包时处理,自定义组件还需要写成原本的 wxml 这些,然后用 copy 复制。也就是说必须要写兼容代码才行
765 次点击
所在节点    问与答
1 条回复
tomjack
148 天前
之前也遇到过这种问题,所以后来我在新开小程序项目的时候,首次进入的底部 TAB 页面,可能只有 4 ,5 个页面左右,只把这个放到 pages 也就是主包里面,其余所有的全部放到分包里。 至于涉及到插件的,之前项目里使用到了 ucharts. 这个单独开个分包,因为它本身就比较大。 所有涉及到引用 ucharts 的,全部放到这个分包里。

我宁愿多分点包也不愿意将来单独去处理这个分包的问题

也尝试过分包 异步加载的,预加载的。但是不确定将来的需求能否满足,可能将来要打包成 h5, App 的。所以我的选择还是尽量手动处理好。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1060365

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX