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

一、为什么要从Vue2升级到Vue3

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

二、升级步骤

1、Hbuildx安装vue3依赖版本

2、vue2项目依赖库切换vue3

3、替换index.html文件

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

xml 复制代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta
      name="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代码如下

javascript 复制代码
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

javascript 复制代码
// 导入
// 之前 - 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 生命周期执行顺序

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

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

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

相关推荐
狮子座的男孩22 分钟前
js基础:10、函数对象方法(call/apply)、arguments类数组对象、Date对象、Math工具类、包装类、字符串方法、正则表达式
前端·javascript·正则表达式·包装类·字符串方法·arguments·date对象
jackzhuoa31 分钟前
Rust 异步核心机制剖析:从 Poll 到状态机的底层演化
服务器·前端·算法
JIngJaneIL39 分钟前
财务管理|基于SprinBoot+vue的个人财务管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·财务管理系统
qq_338032921 小时前
VUE的生命周期钩子,vue2和vue3的生命周期钩子的核心差异
前端·javascript·vue.js
IT_陈寒1 小时前
Vue3性能翻倍秘籍:5个Composition API技巧让你的应用快如闪电⚡
前端·人工智能·后端
Dontla1 小时前
npm install命令介绍
前端·npm·node.js
天天向上10241 小时前
在 Vue3 项目中使用 el-tree
javascript·vue.js·elementui
天天向上10241 小时前
vue2 vue3 修改elementUI和elementPlus主题颜色
前端·javascript·elementui
Zhangzy@2 小时前
Rust Workspace 构建多项目体系
开发语言·前端·rust
通往曙光的路上2 小时前
day23_密码加密 前端验证码 监听器 svn版本控制
前端·svn