uniapp升级Vue3:避坑指南与步骤详解

server/2024/10/18 14:25:54/

为什么要升级到 Vue3

Vue3 是 Vue.js 的最新版本,相比 Vue2,它带来了许多改进和新特性,比如更小的包体积、更好的性能、更强大的组合式 API 等。通过升级到 Vue3,我们可以享受到这些新特性带来的好处,提升项目的开发效率和用户体验

二、升级步骤

1、Hbuildx 安装 vue3 依赖版本

图片

2、vue2 项目依赖库切换 vue3

图片

3、替换 index.html 文件

在项目根文件 index.html 文件替换为以下内容

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><metaname="viewport"content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/><title></title><!--preload-links--><!--app-context--></head><body><div id="app"><!--app-html--></div><script type="module" src="/main.js"></script></body>
</html>

三、语法替换

vue3 新增了一些新语法和使用限制,需升级为 vue3 新语法、使项目在 vue3 版本正常运行

创建实例新写法

vue3 中使用 createSSRAapp 创建实例 ,在 main.js 代码如下

import App from './App'
import { createSSRApp } from 'vue'
// 不能修改导出的 createApp 方法名,不能修改从 Vue 中导入的 createSSRApp。
export function createApp() {const app = createSSRApp(App)return {app}
}

1、commonJs 改为 ES6 模块规范

所有 require 不可使用,改为 import

// 导入
// 之前 - Vue 2, 使用 commonJS
var utils = require("../../../common/util.js");
// 之后 - Vue 3, 只支持 ES6 模块
import utils from "../../../common/util.js";
// 导出
// 之前 - Vue 2, 依赖如使用 commonJS 方式导出
module.exports.X = X;
// 之后 - Vue 3, 只支持 ES6 模块
export default { X };

2、避免 if 和 for 一起使用

v-if 优先级更好,因此 for 和 v-if 不建议写在一起

3、过滤器改为函数写法

vue3 中删除 filter ,将所有的 filter 改为 函数式写法

4、声明周期新写法

在 Vue3 中组件卸载的生命周期被重新命名

  • destroyed 修改为 unmounted

  • beforeDestroy 修改为 beforeUnmount

created 和 onLoad 生命周期执行顺

1、created 为组件生命周期,onLoad 为页面生命周期。因此 created 执行先于 onLoad 更合理。

Vue3 在实现时 created 先于 onLoad 执行;Vue2 项目由于历史包袱较重不便修改,仅在使用组合式 API 时与 Vue3 对齐。

在编写代码时不应依赖 created 和 onLoad 生命周期执行顺序


http://www.ppmy.cn/server/116930.html

相关文章

简单了解深度学习

1. 引言 深度学习作为机器学习的一个分支&#xff0c;近年来因其在图像识别、语音处理和自然语言理解等领域取得的重大突破而备受关注。本文旨在为初学者提供一个全面的深度学习入门指南&#xff0c;涵盖从基础知识到实际应用的各个方面。 2. 深度学习基础 神经网络概述&…

OpenAI的API调用之初探,python调用GPT-API(交互式,支持多轮对话)

准备工作 关于如何开通gpt账号、API功能、获取API的key&#xff0c;请大家自行百度&#xff0c;当大家看到如下界面&#xff0c;代表第一步的准备工作完成&#xff1a; 关于python的环境安装以及OpenAI 第三方库的安装&#xff1a; pip list 需求场景 有两个场景&#xff0c;…

【数据库】MySQL聚合统计

目录 1.聚合函数 案例1&#xff1a; 统计班级共有多少同学 案例2&#xff1a;统计本次考试的数学成绩分数个数 案例3&#xff1a;统计数学成绩总分 案例4&#xff1a;统计平均总分 案例5&#xff1a;返回英语最高分 案例6&#xff1a;返回 > 70 分以上的数学最低分 2.分…

【贪心算法】(二)贪心算法区间问题及进阶习题

贪心算法区间问题及进阶习题 贪心算法解决区间问题跳跃问题1. 跳跃游戏2. 跳跃游戏 Ⅱ 重叠区间问题3. 用最少数量的箭引爆气球4. 无重叠区间5. 划分字母区间6. 合并区间 其他问题7. 最大子序和8. 加油站9. 监控二叉树 贪心算法解决区间问题 跳跃问题 对于跳跃问题这一类问题&…

springboot系列--自动配置原理

一、容器功能 一、组件添加功能 一、Configuration Configuration有两种模式&#xff0c;Full模式与Lite模式。 1、配置 类组件之间无依赖关系用Lite模式加速容器启动过程&#xff0c;减少判断 2、配置类组件之间有依赖关系&#xff0c;方法会被调用得到之前单实例组件&#…

Java进阶13讲__补充2/2

1. 设计模式 1.1 什么是设计模式 1.2 单例设计模式 package com.itheima.a_单例_饿汉式;public class T1 {public static void main(String[] args) {new Thread(new Runnable() {Overridepublic void run() {Demo demo Demo.createDemo();System.out.println(Thread.curr…

String存储原理

1.是什么 在Java中&#xff0c;String 是一种特殊的类&#xff0c;它是不可变的并且存储在堆内存中。为了理解 String 的存储原理&#xff0c;我们需要分解几个关键概念&#xff1a;不可变性、堆内存、字符串常量池和垃圾回收机制。下面我将详细解释这些概念并举例说明。 不可变…

监听html元素是否被删除,删除之后重新生成被删除的元素

/*** 监听水印是否清除和修改*/ export function watermarkClear() {// 添加水印的盒子let box: any document.querySelector(.dplayer-video-wrap)// 水印let watermark: any document.querySelector(.dplayer-logo)// 观察器的配置&#xff08;需要观察什么变动&#xff09…