从Vue2到Vue3, 一键升级前端开发技能

这篇具有很好参考价值的文章主要介绍了从Vue2到Vue3, 一键升级前端开发技能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文的目的,是为了让已经有 Vue2 开发经验的  ,快速掌握 Vue3 的写法。

因此, 本篇假定你已经掌握 Vue 的核心内容 ,只为你介绍编写 Vue3 代码,需要了解的内容。

一、Vue3 里 script 的三种写法

首先,Vue3 新增了一个叫做组合式 api 的东西,英文名叫 Composition API。因此 Vue3 的 script 现在支持三种写法,

1、最基本的 Vue2 写法

<template>
 <div>{{ count }}</div>
 <button @click="onClick">
 增加 1
 </button>
</template>
<script>
export default {
 data() {
 return {
 count: 1,
 };
 },
 methods: {
 onClick() {
 this.count += 1;
 },
 },
}
</script>

2、setup() 属性

<template>
 <div>{{ count }}</div>
 <button @click="onClick">
 增加 1
 </button>
</template>
<script>
import { ref } from 'vue';
export default {
 // 注意这部分
 setup() {
 let count = ref(1);
 const onClick = () => {
 count.value += 1;
 };
 return {
 count,
 onClick,
 };
 },
  
}
</script>

3、<script setup>

<template>
 <div>{{ count }}</div>
 <button @click="onClick">
 增加 1
 </button>
</template>
<script setup>
import { ref } from 'vue';
const count = ref(1);
const onClick = () => {
 count.value += 1;
};
</script>

正如你看到的那样,无论是代码行数,还是代码的精简度,<script setup> 的方式是最简单的形式。

如果你对 Vue 很熟悉,那么,我推荐你使用 <script setup> 的方式。

这种写法,让 Vue3 成了我最喜欢的前端框架。

如果你还是前端新人,那么,我推荐你先学习第一种写法。

因为第一种写法的学习负担更小,先学第一种方式,掌握最基本的 Vue 用法,然后再根据我这篇文章,快速掌握 Vue3 里最需要关心的内容。

第一种写法,跟过去 Vue2 的写法是一样的,所以我们不过多介绍。

第二种写法,所有的对象和方法都需要 return 才能使用,太啰嗦。除了旧项目,可以用这种方式体验 Vue3 的新特性以外,我个人不建议了解这种方式。反正我自己暂时不打算精进这部分。

所以,接下来,我们主要介绍的,也就是 <script setup> ,这种写法里需要了解的内容。

注意: <script setup> 本质上是第二种写法的语法糖,掌握了这种写法,其实第二种写法也基本上就会了。(又多了一个不学第二种写法的理由)。

二、如何使用 <script setup> 编写组件

学习 Vue3 并不代表你需要新学习一个技术,Vue3 的底层开发思想,跟 Vue2 是没有差别的。

V3 和 V2 的区别就像是,你用不同的语言或者方言说同一句话。

所以我们需要关心的,就是 Vue2 里的内容,怎么用 Vue3 的方式写出来。

1、data——唯一需要注意的地方

整个 data 这一部分的内容,你只需要记住下面这一点。

以前在 data 中创建的属性,现在全都用 ref() 声明。

 template 中直接用,在 script 中记得加 .value 

在开头,我就已经写了一个简单的例子,我们直接拿过来做对比。

1)写法对比

// Vue2 的写法
<template>
 <div>{{ count }}</div>
 <button @click="onClick">
 增加 1
 </button>
</template>
<script>
export default {
 data() {
 return {
 count: 1,
 };
 },
 methods: {
 onClick() {
 this.count += 1;
 },
 },
}
</script>
// Vue3 的写法
<template>
<div>{{ count }}</div>
<button @click="onClick">
增加 1
</button>
</template>
<script setup>
import { ref } from 'vue';
// 用这种方式声明
const count = ref(1);
const onClick = () => {
// 使用的时候记得 .value
count.value += 1;
};
</script>

2)注意事项——组合式 api 的心智负担

a、ref 和 reactive

Vue3 里,还提供了一个叫做 reactive 的 api

但是我的建议是,你不需要关心它。绝大多数场景下,ref 都够用了。

b、什么时候用 ref() 包裹,什么时候不用。

要不要用ref,就看你的这个变量的值改变了以后,页面要不要跟着变。

当然,你可以完全不需要关心这一点,跟过去写 data 一样就行。

只不过这样做,你在使用的时候,需要一直 .value

c、不要解构使用

在使用时,不要像下面这样去写,会丢失响应性。

也就是会出现更新了值,但是页面没有更新的情况

xml

复制代码

// Vue3 的写法
<template>
 <div>{{ count }}</div>
 <button @click="onClick">
 增加 1
 </button>
</template>
<script setup>
import { ref } from 'vue';
const count = ref(1);
const onClick = () => {
 // 不要这样写!!
 const { value } = count;
 value += 1;
};
</script>

注意: 学习 Vue3 就需要考虑像这样的内容,徒增了学习成本。实际上这些心智负担,在学习的过程中,是可以完全不需要考虑的。

这也是为什么我推荐新人先学习 Vue2 的写法。

2、methods

声明事件方法,我们只需要在 script 标签里,创建一个方法对象即可。

剩下的在 Vue2 里是怎么写的,Vue3 是同样的写法。

xml

复制代码

// Vue2 的写法
<template>
 <div @click="onClick">
 这是一个div
 </div>
</template>
<script>
export default {
 methods: {
 onClick() {
 console.log('clicked')
 },
 },
}
</script>
// Vue3 的写法
<template>
 <div @click="onClick">
 这是一个div
 </div>
</template>
<script setup>
// 注意这部分
const onClick = () => {
 console.log('clicked')
}
</script>

3、props

声明 props 我们可以用 defineProps(),具体写法,我们看代码。

1)写法对比

// Vue2 的写法
<template>
 <div>{{ foo }}</div>
</template>
<script>
export default {
 props: {
 foo: String,
 },
 created() {
 console.log(this.foo);
 },
}
</script>
// Vue3 的写法
<template>
 <div>{{ foo }}</div>
</template>
<script setup>
// 注意这里
const props = defineProps({
 foo: String
})
// 在 script 标签里使用
console.log(props.foo)
</script>

2)注意事项——组合式 api 的心智负担

使用 props 时,同样注意不要使用解构的方式。

<script setup>
const props = defineProps({
 foo: String
})
 // 不要这样写
const { foo } = props;
console.log(foo)
</script>

4、emits 事件

与 props 相同,声明 emits 我们可以用 defineEmits(),具体写法,我们看代码。

// Vue2 的写法
<template>
 <div @click="onClick">
 这是一个div
 </div>
</template>
<script>
export default {
 emits: ['click'], // 注意这里
 methods: {
 onClick() {
 this.$emit('click'); // 注意这里
 },
 },
  
}
</script>
// Vue3 的写法
<template>
 <div @click="onClick">
 这是一个div
 </div>
</template>
<script setup>
// 注意这里
const emit = defineEmits(['click']);
const onClick = () => {
 emit('click') // 注意这里
}
</script>

5、computed

直接上写法对比。

// Vue2 的写法
<template>
 <div>
 <span>{{ value }}</span>
 <span>{{ reversedValue }}</span>
 </div>
</template>
<script>
export default {
 data() {
 return {
 value: 'this is a value',
 };
 },
 computed: {
 reversedValue() {
 return value
 .split('').reverse().join('');
 },
 },
}
</script>
// Vue3 的写法
<template>
 <div>
 <span>{{ value }}</span>
 <span>{{ reversedValue }}</span>
 </div>
</template>
<script setup>
import {ref, computed} from 'vue'
const value = ref('this is a value')
// 注意这里
const reversedValue = computed(() => {
 // 使用 ref 需要 .value
 return value.value
 .split('').reverse().join('');
})
</script>

6、watch

这一部分,我们需要注意一下了,Vue3 中,watch 有两种写法。一种是直接使用 watch,还有一种是使用 watchEffect

两种写法的区别是:

  • watch 需要你明确指定依赖的变量,才能做到监听效果。

  • 而 watchEffect 会根据你使用的变量,自动的实现监听效果。

1)直接使用 watch

// Vue2 的写法
<template>
 <div>{{ count }}</div>
 <div>{{ anotherCount }}</div>
 <button @click="onClick">
 增加 1
 </button>
</template>
<script>
export default {
 data() {
 return { 
 count: 1,
 anotherCount: 0,
 };
 },
 methods: {
 onClick() {
 this.count += 1;
 },
 },
 watch: {
 count(newValue) {
 this.anotherCount = newValue - 1;
 },
 },
}
</script>
// Vue3 的写法
<template>
 <div>{{ count }}</div>
 <div>{{ anotherCount }}</div>
 <button @click="onClick">
 增加 1
 </button>
</template>
<script setup>
import { ref, watch } from 'vue';
const count = ref(1);
const onClick = () => {
 count.value += 1;
};
const anotherCount = ref(0);
// 注意这里
// 需要在这里,
// 明确指定依赖的是 count 这个变量
watch(count, (newValue) => {
 anotherCount.value = newValue - 1;
})
</script>

2)使用 watchEffect

// Vue2 的写法
<template>
 <div>{{ count }}</div>
 <div>{{ anotherCount }}</div>
 <button @click="onClick">
 增加 1
 </button>
</template>
<script>
export default {
 data() {
 return { 
 count: 1,
 anotherCount: 0,
 };
 },
 methods: {
 onClick() {
 this.count += 1;
 },
 },
 watch: {
 count(newValue) {
 this.anotherCount = newValue - 1;
 },
 },
}
</script>
// Vue3 的写法
<template>
 <div>{{ count }}</div>
 <div>{{ anotherCount }}</div>
 <button @click="onClick">
 增加 1
 </button>
</template>
<script setup>
import { ref, watchEffect } from 'vue';
const count = ref(1);
const onClick = () => {
 count.value += 1;
};
const anotherCount = ref(0);
// 注意这里
watchEffect(() => {
 // 会自动根据 count.value 的变化,
 // 触发下面的操作
 anotherCount.value = count.value - 1;
})
</script>

7、生命周期

Vue3 里,除了将两个 destroy 相关的钩子,改成了 unmount,剩下的需要注意的,就是在 <script setup> 中,不能使用 beforeCreate 和 created 两个钩子。

如果你熟悉相关的生命周期,只需要记得在 setup 里,用 on 开头,加上大写首字母就行。

// 选项式 api 写法
<template>
 <div></div>
</template>
<script>
export default {
 beforeCreate() {},
 created() {},
  
 beforeMount() {},
 mounted() {},
  
 beforeUpdate() {},
 updated() {},
  
 // Vue2 里叫 beforeDestroy
 beforeUnmount() {},
 // Vue2 里叫 destroyed
 unmounted() {},
  
 // 其他钩子不常用,所以不列了。
}
</script>
// 组合式 api 写法
<template>
 <div></div>
</template>
<script setup>
  import {
   onBeforeMount,
   onMounted,
   onBeforeUpdate,
   onUpdated,
   onBeforeUnmount,
   onUnmounted,
  } from 'vue'
  onBeforeMount(() => {})
  onMounted(() => {})
  onBeforeUpdate(() => {})
  onUpdated(() => {})
  onBeforeUnmount(() => {})
  onUnmounted(() => {})
</script>

三、结语

好了,对于快速上手 Vue3 来说,以上内容基本已经足够了。

这篇文章本身不能做到帮你理解所有 Vue3 的内容,但是能帮你快速掌握 Vue3 的写法。

 

如果想做到对 Vue3 的整个内容心里有数,还需要你自己多看看 Vue3 的官方文档。文章来源地址https://www.toymoban.com/news/detail-481142.html

到了这里,关于从Vue2到Vue3, 一键升级前端开发技能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何升级Vue的版本 vue2.9.6升级到vue3.0

    背景:电脑使用多年,一直使用vue 2.x版本,项目开发过程中由于一个模块涉及的集成模块过多,导致需要进行定义的变量越来越多,代码出现冗余,因此在同事的推动下,鉴于vue 3.x的优化,故对自己本来使用的vue 2.9.6升级到vue 3.0版本。那么如何升级呢,请查阅如下步骤:

    2023年04月08日
    浏览(44)
  • VUE3相比VUE2升级了哪些内容

    目录 一、Vue 3 、Vue 2 对比及提升项 二、  Vue 3 创建app.vue示例  三、Vue3 的setup、Vue2 的 data对比 一、Vue 3 、Vue 2 对比及提升项 性能提升:Vue 3 做了大量的优化工作,提升了运行时的性能。例如,在模板编译时进行的静态分析和优化,以及使用了更高效的响应式系统,使得数据

    2024年01月22日
    浏览(50)
  • Vue2与Vue3的区别与升级指南

    个人笔记不喜勿喷,如有错误感谢评论指正。 一、下面是Vue 2和Vue 3之间的一些主要区别: 1. 性能优化: Vue 3对虚拟DOM进行了重写,提高了渲染性能。它引入了静态树提升和新的编译器,减少了包的大小。 2. 响应式系统的重写: Vue 3中的响应式系统使用了Proxy代理,而不再使

    2024年02月15日
    浏览(48)
  • vue2升级为vue3 vuedraggable 拖动组件报错

    升级组件 npm i -S vuedraggable@next 使用示例 2、Item slot must have only one child 官方GitHub - SortableJS/vue.draggable.next: Vue 3 compatible drag-and-drop component based on Sortable.js  官方demo https://sortablejs.github.io/vue.draggable.next/#/two-lists

    2024年02月16日
    浏览(41)
  • 使用Vue3和Vite升级你的Vue2+Webpack项目

    🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页 ——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文并茂🦖生动形象🐅简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》 🐾 学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础

    2024年02月09日
    浏览(68)
  • 前端开发攻略---从源码角度分析Vue3的Propy比Vue2的defineproperty到底好在哪里。一篇文章让你彻底弄懂响应式原理。

    Vue的响应式到底要干什么? 无非就是要知道当你 读取 对象的时候,要知道它读了。要做一些别的事情 无非就是要知道当你 修改 对象的时候,要知道它改了。要做一些别的事情 所以要想一个办法, 把读取和修改的动作变成一个函数 ,读取和修改的时候分别调用对应的函数

    2024年04月17日
    浏览(46)
  • vue2+webpack升级vue3+vite,在vue3组合式编程中使用vuex

    同学们可以私信我加入学习群! 我的项目是从vue2+webpack升级为vue3+vite,这种升级工作,其实最重要的不是如何快速准确地把原有vue2项目全部重构为vue3项目,因为这是不现实的。 升级工作一定是一个长久的持续过程,所以如何保证旧的vue2项目与新的vue3模块之间互相兼容,才

    2024年01月18日
    浏览(55)
  • 【前端面经】Vue3和Vue2的区别

    Vue是一种非常流行的JavaScript框架,因其易用性和灵活性在开发人员中备受欢迎。Vue2是Vue框架的上一个重要版本,于2016年发布。但是,Vue3是最新版本的Vue框架,于2020年正式发布并带来了一些重大变化。本文将探讨Vue3和Vue2之间的主要区别。 Vue3的一个显着优势是其更小的代码

    2024年02月02日
    浏览(82)
  • 前端(四)——vue.js、vue、vue2、vue3

    😊博主:小猫娃来啦 😊文章核心: vue.js、vue、vue2、vue3从全局到局部 Vue.js是一款流行的JavaScript框架 vue,vue2,vue3都是vue.js的不同版本。 Vue:Vue.js的第一个版本,也称为Vue 1.x。它于2014年首次发布,并获得了广泛的应用和认可。 Vue2:Vue.js的第二个版本,也称为Vue 2.x。它在Vu

    2024年02月12日
    浏览(78)
  • 前端vue2、vue3去掉url路由“ # ”号——nginx配置

    大家好,我是yma16,本文分享关于vue2、vue3去掉url路由 # 号——nginx配置。 html的 hash模式 HTML的hash模式指的是URL中的锚点部分(#后面的内容)被用于在单个页面中显示不同的内容,而不是导航到不同的页面。例如: 在这个示例中, #about 部分是一个锚点,用于在页面上显示关

    2024年02月11日
    浏览(75)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包