DCloud_UNI_WZF
DCloud_UNI_WZF
  • 发布:2020-09-22 17:06
  • 更新:2025-03-30 10:02
  • 阅读:274268

uni-app 项目支持 vue 3.0 介绍,及升级指南

分类:uni-app

简介

HBuilderX 3.3.0+ 更新uni-app编译器,支持基于 Vite 编译到小程序平台。

至此,uni-appApp/H5/小程序全平台支持Vue 3.0开发,且全平台支持Vite编译器,下载 HBuilderX 3.3.0+ 体验

Tips:

除支持 vue3 语法特性外,uni-app 特有的生命周期钩子支持 Composition API,如 onLaunchonShowonLoad... ,使用方法见 Vue2 迁移 Vue3 文档

HBuilderX创建支持 vue3 的 uni-app 项目

从 HBuilderX 3.3.0+ 起,支持创建 vue3 的 uni-app 项目,一套代码运行到多端:

  1. 创建一个 uni-app 项目

  2. 在项目的 manifest 的「基础配置」中切换 「vue 版本选择」,默认是 vue2,切换为 vue3 即可

cli 创建支持 vue3 的 uni-app 项目

  1. 创建 Vue3/Vite 工程

    # 创建以 javascript 开发的工程  
    npx degit dcloudio/uni-preset-vue#vite my-vue3-project  
    
    # 创建以 typescript 开发的工程  
    npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project  
  2. 进入工程目录

    cd my-vue3-project  
  3. 安装依赖

    npm i  或  yarn  
  4. 运行

    # 运行到 h5   
    npm run dev:h5  
    # 运行到 app   
    npm run dev:app  
    # 运行到 微信小程序  
    npm run dev:mp-weixin  
  5. 打包

    # 打包到 h5   
    npm run build:h5  
    # 打包到 app   
    npm run build:app  
    # 打包到 微信小程序  
    npm run build:mp-weixin  

更新依赖版本

参考:https://uniapp.dcloud.net.cn/quickstart-cli.html#cliversion

从 vue2 迁移到 vue3

请参看官方文档从 vue2 迁移到 vue3

注意事项

  • vue3 响应式基于 Proxy 实现,不支持iOS9和ie11。vue3 中文文档
  • 暂不支持新增的 Teleport,Suspense 组件。
  • 在 Vue3 中, 处理 API Promise 化 调用结果的方式不同于 Vue2。更多
    • Vue3 中,调用成功会进入 then 方法,调用失败会进入 catch 方法
    • Vue2 中,调用无论成功还是失败,都会进入 then 方法,返回数据的第一个参数是错误对象,第二个参数是返回数据

欢迎开发者反馈使用该版本遇到的问题,我们将积极收集意见。

49 关注 分享
剑心无间 3***@qq.com 1***@189.cn wenju Yuhuawang l***@163.com l***@gmail.com lmsorry j***@qq.com 毛学生 最光阴 2***@qq.com 默毅品牌设计 1***@qq.com FISH_FLYING 苏陌 1***@qq.com Warn 低调路人甲 DCloud_IOS_XTY 1***@qq.com 小人物1992 我是船长 PepsiCola l***@163.com BruceAn QLing 4***@qq.com 1***@163.com l***@gmail.com 然然Ranan j***@126.com 7***@qq.com 丶且听风吟8 五茶 hormo 2***@qq.com 4***@qq.com y***@qq.com 某人gmgn3 2***@qq.com 张迪迦 1***@qq.com 3***@qq.com 1***@163.com HRK w***@163.com sonicsunsky Jello

要回复文章请先登录注册

j***@qq.com

j***@qq.com

vue3版的小程序有办法在浏览器里面预览吗
2021-08-02 14:46
1***@qq.com

1***@qq.com

后续会支持多端吗?H5 版的编译小程序报错的
2021-08-02 11:04
温柔两刀

温柔两刀

用哪个版本无所谓,就是TypeScript支持要好呀。
2021-07-29 11:24
adsadsa

adsadsa

自定义组件在onMounted中如何使用 createSelectorQuery().in().selectAll(''),之前in(this) 解决方法


<template>
<view class="tabBar">
<scroll-view
:scroll-left="left"
class="scroll_view"
scroll-with-animation="true"
scroll-x="true"
>
<view class="box" id="box" :ref="box">
<view
class="item"
@click="_click"
v-for="(item, i) in list"
:key="item.id"
>
<text :class="(index || activeIndex) === i ? 'active' : ''">
{{ item.name }}
</text>
</view>
</view>
</scroll-view>
</view>
</template>

<script>
import { computed, ref, onMounted ,getCurrentInstance} from "vue";
import {createSelectorQuery} from "@dcloudio/uni-mp-weixin"
export default {
props: {
list: {
type: Array,
required: true,
},
index: {
type: Number,
default: 0,
},
},
setup(props) {
const { proxy, ctx } = (getCurrentInstance())
let activeIndex = ref(0);
let left = ref(0);
let box = ref(null);
const _click = (e) => {
const query = uni.createSelectorQuery().in(ctx)
query
.select("#box")
.boundingClientRect((data) => {
console.log(data)
})
.exec();
left.value = e.target.offsetLeft;
};
return {
activeIndex,
left,
box,
_click,
};
},
};
</script>

<style scoped>
.tabBar {
--height: 100rpx;
height: var(--height);
}
.box {
display: flex;
}
.box .item {
padding: 0 35rpx;
flex-shrink: 0;
font-size: 26rpx;
/* font-weight: bold; */
height: var(--height);
line-height: var(--height);
}
.box .item text {
display: inline-block;
line-height: 93rpx;
height: 93rpx;
border-bottom: 6rpx solid transparent;
}
.box .item .active {
color: var(--color_blue);
border-color: var(--color_blue);
}
</style>
2021-07-28 18:42
adsadsa

adsadsa

回复 差得多先生 :
import { computed, ref, onMounted ,getCurrentInstance} from "vue";
setup(props) {
const { proxy, ctx } = (getCurrentInstance())
const query = uni.createSelectorQuery().in(ctx)
query
.select("#box")
.boundingClientRect((data) => {
console.log(data)
})
.exec();
}
2021-07-28 18:41
uniappyyds

uniappyyds

程序员哥哥,app支持vue3预计什么时候出来呀
2021-07-28 17:50
8***@qq.com

8***@qq.com

H5 + 小程序多端不能同一套吗? 小程序工程不能跑H5
2021-07-28 15:40
l***@163.com

l***@163.com

今年能不能用得上啊
2021-07-27 22:24
2***@qq.com

2***@qq.com

<template> cannot be keyed. Place the key on real elements instead.
2021-07-26 14:24
温柔两刀

温柔两刀

希望Vue 2.7早日用上。微信PC版的chromium浏览器内核太老,搞不好Vue3写的小程序在PC版微信上会有问题。
2021-07-25 12:37