DCloud_heavensoft
DCloud_heavensoft
  • 发布:2020-02-26 07:24
  • 更新:2022-09-29 13:06
  • 阅读:23495

公告:App老版“自定义组件编译模式”将于2020年4月的HBuilderX 2.7版本下线

分类:uni-app
v3

从2018年至今,uni-app的编译器历经了3代发展:非自定义组件模式、自定义组件模式、v3编译器。

在经历了3次重写编译器后,v3的出现,代表着uni-app进入成熟期。

关于v3编译器的新特性介绍,详见:https://ask.dcloud.net.cn/article/36599

v3编译器凝集了DCloud团队在2年的uni-app开发历程中的所有经验和教训,吸收了数百万开发者在实践中的反馈,在架构层面堪称完美。

在可预见的将来,DCloud不会立项开发v4编译器,而是将在v3的架构上持续迭代完善。

目前“非自定义组件模式”已经下线,“自定义组件模式”也走到生命周期的尾声。

为了集中精力、减少包体积,2020年4月发布的HBuilderX 2.7版本起,及对应的App SDK包,将不再提供“自定义组件模式”。(uni小程序sdk本身也仅支持v3)。

届时新版uni-app里将没有各种编译器的概念,包括v3的概念也没有,manifest里会取消所有编译器设置,项目默认运行在v3编译器下。对于新的开发者,他将无需理解这些编译器名称、区别。

与非自定义组件升级自定义组件不同,自定义组件升级v3正常没有需要改代码的地方,在设计上是完全向下兼容的。

如果你的App之前正常,但勾选v3编译器后异常,有2种可能:

  1. v3编译器有bug,请在社区单独发帖,提供重现方式。DCloud会优先解决,保障v3的向下兼容性。
  2. 你的应用之前使用了不推荐的写法,比如一些hack方式。此时需要你更正为正确的写法。如果正常写法无法满足你的需求,请发帖告知我们。

因v3的升级是app-vue端的,如果你之前的应用不涉及App端,或者App是纯nvue的,那么不受“自定义组件模式”下线的影响。

详细的过渡调整方案如下:

  • HBuilderX 2.6.9开始,manifest.json的默认值从非v3调整为v3,即不写"compilerVersion" : 3,,也是v3编译模式。如果需要降级为非v3,请在manifest可视化界面-App其他常用配置 中去掉v3编译器的勾选。

  • HBuilderX 2.7开始,将移除非v3编译器,只保留v3编译模式。如果开发者使用老版HBuilderX,也仍然可使用非v3编译器。本地打包可以通过使用老版的sdk来继续使用非v3。然后云打包将于5月底不再支持非v3的打包。

不管HBuilderX新版怎么调整,开发者已经发布在线上的App不会受到影响。

最后,再次强调,官方之所以敢于下线老版,是因为这2个编译器的差异没有那么大。正常老应用应该都是可以兼容的。如果在发布2.7版本前,v3的向下兼容性问题没有修复完毕的话,是不会强制下线的。

目前已知的主要问题就是subnvue的postmessage通信写法不再支持,建议使用新的页面通信方式https://uniapp.dcloud.io/collocation/frame/communication,更新常见问题排查:https://ask.dcloud.net.cn/article/37342

另,最新的HBuilderX 修复了很多v3的bug,如果要报新bug,请体验新版后再报。

注意:我们强烈建议开发者尽快升级v3版本,因为后续新增功能仅支持v3版本,非v3版本将不再维护。如果您坚持使用老的编译器,有两个方案:

  1. 离线打包
  2. 使用HBuilderX 2.6.16 版(参考https://ask.dcloud.net.cn/article/37302下载历史版本),该版本将继续支持云端打包,其它老的HBuilderX版本将不再支持云端打包。注意,2.6.16版目前仅支持非v3打包,如果是v3版,请正常升级最新HBuilderX。
5 关注 分享
y***@telsafe.com.cn 5***@qq.com Iain 退堂鼓选手 上风下云

要回复文章请先登录注册

6***@qq.com

6***@qq.com

无法往下兼容,这是一个软件设计最大的失误,而你们官方却以此为荣,真是可悲
2020-05-25 10:17
6***@qq.com

6***@qq.com

根本没法办法往下兼容,V3模式下页面全部变形,建议不要下线老版本的云端打包,否则我们将弃用你们的编译器
2020-05-25 10:15
2***@qq.com

2***@qq.com

在v3下面云打包,发现这个不会弹出调用摄像头或者打开相册,取消V3云打包是可以的。请问这个怎么解决?
uni.chooseImage({
count: 1, //默认9
sizeType: ['compressed'], // 'original' ,'compressed' 可以指定是原图还是压缩图,默认二者都有
sourceType: ['camera', 'album'], // camera 从相机选择, album 从相册选择
success: (res) => {
2020-05-24 22:05
1***@qq.com

1***@qq.com

回复 1***@qq.com :
我就想问问官方这样引用组件有啥问题吗?
2020-05-23 15:32
1***@qq.com

1***@qq.com

<uni-notice-bar scrollable="true" single="true" show-icon="true" :text="noticeMsg" :show-get-more="true" @click="goNotice" v-if="role == 'baseUser'"></uni-notice-bar>
import {
uniNoticeBar
} from '@/components/uni-notice-bar/uni-notice-bar.vue'

components: {
orderPro,
cmdProgress,
uniDrawer,
uniNoticeBar,
uniPopup
},
2020-05-23 15:31
1***@qq.com

1***@qq.com

升级了之后,疯狂报错,样式错乱,还找不到问题在哪
2020-05-23 15:30
DCloud_UNI_CHB

DCloud_UNI_CHB

v3是一个性能更高且更为稳定的版本,大家可以放心使用。

如果出现自己无法排查的编译异常,可以加入 v3版本专项问题qq群:291942688,发送示例项目,官方提供专人快速解决。

注意:需要提供可复现问题的工程项目!
2020-05-21 18:44
上风下云

上风下云

同更新2.7正式版后 vant小程序组建在app内就疯狂报错了,用的是插件商场5.11更新的新版vant插件。
2020-05-21 17:08
1***@126.com

1***@126.com

更新了2.7.5.20200519版本后,自定义组件无法使用了。
原来代码里是这么写的
"globalStyle": {
...
"usingComponents": {
"ly-tree-node": "/components/ly-tree/ly-tree-node"
}
}
更新完之后,
"usingComponents": {
"ly-tree-node": "/components/ly-tree/ly-tree-node"
}
这两行代码不起作用了。
自定义组件该怎么调用啊,你们给个说法啊。
2020-05-21 16:48
DCloud_heavensoft

DCloud_heavensoft (作者)

回复 ben_w :
先关注运行基座的问题,独立开贴,提供详情
2020-05-21 16:39