Vue 3第一章:vue3介绍

1. Vue 3 入门指南

Vue.js 是一个流行的前端 JavaScript 框架,它可以帮助开发者构建交互式的用户界面。Vue 3 是 Vue.js 的最新版本,它包含了一些令人兴奋的新功能和改进。在这篇博客中,我们将介绍 Vue 3 的一些重要特性和入门指南。

Vue3官网地址 | 查看更详细的介绍

1.1. 安装 Vue 3

安装 Vue 3 非常简单,只需要在终端中输入以下命令:

npm install vue@next

这将安装 Vue 3 的最新版本。

1.2. 创建 Vue 3 应用程序

要创建 Vue 3 应用程序,我们需要使用 Vue CLI。如果您还没有安装 Vue CLI,请在终端中运行以下命令:

npm install -g @vue/cli

现在,您可以使用以下命令创建一个新的 Vue 3 应用程序:

vue create my-app

这将创建一个新的 Vue 3 应用程序,并安装所有必要的依赖项。

2. Vue 3 的新特性

Vue 3 包含了许多新功能和改进。以下是一些值得关注的新特性:

2.1. Composition API

  • 使用选项式 (option)API,我们可以用包含多个选项的对象来描述组件的逻辑,例如 datamethodsmounted。选项所定义的属性都会暴露在函数内部的 this 上,它会指向当前的组件实例。
<template>
  <button @click="increment">Count is: {{ count }}</button>
</template>

<script>
export default {
  // data() 返回的属性将会成为响应式的状态
  // 并且暴露在 `this` 上
  data() {
    return {
      count: 0
    }
  },

  // methods 是一些用来更改状态与触发更新的函数
  // 它们可以在模板中作为事件监听器绑定
  methods: {
    increment() {
      this.count++
    }
  },

  // 生命周期钩子会在组件生命周期的各个不同阶段被调用
  // 例如这个函数就会在组件挂载完成后被调用
  mounted() {
    console.log(`The initial count is ${this.count}.`)
  }
}
</script>
  • 通过组合式(Composition) API,我们可以使用导入的 API 函数来描述组件逻辑。在单文件组件中,组合式 API 通常会与 <script setup> 搭配使用。这个 setup attribute 是一个标识,告诉 Vue 需要在编译时进行一些处理,让我们可以更简洁地使用组合式 API。比如,<script setup> 中的导入和顶层变量/函数都能够在模板中直接使用。

下面是使用了组合式 API 与 <script setup> 改造后和上面的模板完全一样的组件:

<template>
  <button @click="increment">Count is: {{ count }}</button>
</template>
<script setup>
	import { ref, onMounted } from 'vue'
	
	// 响应式状态
	const count = ref(0)
	
	// 用来修改状态、触发更新的函数
	function increment() {
	  count.value++
	}
	
	// 生命周期钩子
	onMounted(() => {
	  console.log(`The initial count is ${count.value}.`)
	})
</script>

2.2. Teleport

Teleport 是 Vue 3 中的另一个新功能,它允许您在应用程序中移动 DOM 元素,而无需破坏组件的层次结构。可以让开发者将组件渲染到指定的目标中,这对于创建具有复杂动画效果的应用程序非常有用。

下面是一个Teleport的具体示例:

<button @click="open = true">Open Modal</button>

<Teleport to="body">
  <div v-if="open" class="modal">
    <p>Hello from the modal!</p>
    <button @click="open = false">Close</button>
  </div>
</Teleport>

<Teleport> 接收一个 to prop 来指定传送的目标。to 的值可以是一个 CSS 选择器字符串,也可以是一个 DOM 元素对象。这段代码的作用就是告诉 Vue“把以下模板片段传送到 body 标签下”。

2.3. Fragments

Vue 3 引入了 Fragments,这使得开发者可以在不添加额外 DOM 元素的情况下渲染多个根元素。

vue2中模板里只允许存在一个根元素,写多个根元素会报错

<template>
	<div><div>
</template>

vue3以后模板中可以存在多个根元素

<template>
	<div><div>
	<div><div>
	<div><div>
</template>

2.4. 全局 API 重命名

Vue 3 中,许多全局 API 的名称被重命名,以下是一些需要注意的。

  • 过滤器被移除:在 Vue 3 中,过滤器已经被移除了,我们需要使用计算属性或方法来替代它们。
  • 全局 API 被重命名:Vue 3 中一些全局 API 已经被重命名了,例如 Vue.filter 变成了 Vue.app.filterVue.directive 变成了 Vue.app.directive 等等。
  • 自定义指令 API 发生变化:在 Vue 3 中,自定义指令的 API 发生了变化,我们需要使用 createdbeforeUnmount 代替 bindunbind。另外,update 方法也被移除了,我们需要使用 beforeUpdateupdated 代替它。

2.5. 更好的 Tree-Shaking 支持

Vue 3 中,更好的 Tree-Shaking 支持提高了应用程序的性能,它允许我们只导入应用程序中实际使用的代码,而不是导入整个库。要实现更好的 Tree-Shaking,我们需要使用模块化的构建方式,例如使用 ES 模块或 CommonJS 模块。这将允许编译器在构建时进行优化,从而减少应用程序的包大小。以下是一个示例代码:

import { createApp } from 'vue'
import App from './App.vue'
import { createStore } from 'vuex'
import { createRouter, createWebHistory } from 'vue-router'

const store = createStore({
  state: {
    count: 0
  }
})

const router = createRouter({
  history: createWebHistory(),
  routes: [
    { path: '/', component: Home },
    { path: '/about', component: About }
  ]
})

const app = createApp(App)

app.use(store)
app.use(router)

app.mount('#app')

在这个例子中,我们只导入了实际使用的 createAppcreateStorecreateRouter 函数,而没有导入整个 vuevue-router 库。这将使编译器能够在构建时更好地优化我们的应用程序,减少包大小和提高性能。

2. 6. 性能优化

Vue 3 进行了大量的性能优化,包括更快的渲染速度、更小的包大小和更少的运行时错误。这使得 Vue 3 成为了一个更快、更可靠的框架。以下是一些性能优化的具体内容:

  • 使用 Proxy 替代 Object.defineProperty,提高响应式系统的性能
  • 重构虚拟 DOM,减少了创建和比较虚拟 DOM 的开销
  • 优化组件实例初始化过程,减少了内存分配和初始化的开销
  • 优化编译器,减少了编译和渲染的开销
  • 改进 Tree-Shaking 支持,减少了打包后的文件大小

2.7. 新的组件钩子

Vue 3 中的组件钩子有一些变化。以下是一些新的组件钩子:

  • onBeforeMount:在组件挂载之前调用。这个钩子在 Vue 2 中被称为 beforeMount
  • onMounted:在组件挂载之后调用。这个钩子在 Vue 2 中被称为 mounted
  • onBeforeUpdate:在组件更新之前调用。这个钩子在 Vue 2 中被称为 beforeUpdate
  • onUpdated:在组件更新之后调用。这个钩子在 Vue 2 中被称为 updated
  • onBeforeUnmount:在组件卸载之前调用。这个钩子在 Vue 2 中被称为beforeDestroy
  • onUnmounted:在组件卸载之后调用。这个钩子在 Vue 2 中被称为 destroyed

以下是一个示例代码,演示了如何使用新的组件钩子:

<template>
  <div>
    {{ message }}
  </div>
</template>

<script setup>
import { ref, onMounted, onUnmounted } from 'vue'

const message = ref('Hello, world!')

onMounted(() => {
  console.log('Component mounted')
})

onUnmounted(() => {
  console.log('Component unmounted')
})
</script>

在这个例子中,我们使用了 onMountedonUnmounted 钩子来处理组件的生命周期。在组件挂载时,onMounted 钩子会被调用,我们可以在这里执行一些初始化操作。在组件卸载时,onUnmounted 钩子会被调用,我们可以在这里清理一些资源。

2.8. TypeScript 支持

Vue 3 提供了对 TypeScript 的原生支持,这意味着我们可以使用 TypeScript 来编写 Vue 应用程序。在使用 TypeScript 时,我们需要为 Vue 3 安装相应的 TypeScript 类型。如果您使用的是 Vue CLI 创建的项目,那么这些类型已经自动安装了。如果你使用的是其他方式创建的项目,则可以使用以下命令安装它们:

npm install --save-dev @types/vue

安装完成后,我们可以在 Vue 3 中使用 TypeScript,例如:

<template>
  <div>
    {{ message }}
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue'

let message: string = ref('hello word')

</script>

2.9. 响应式系统和模板编译器的改进

  • 在 Vue.js 3版本中,响应式系统采用了 Proxy 替代了 Object.defineProperty,提高了性能和可维护性。同时,Vue.js 3版本的响应式系统也支持了嵌套对象和数组的深层监听。

  • Vue.js 3版本的模板编译器也进行了改进,支持了更多的特性和指令,如 v-model 的多个参数、v-bind 的缩写语法、v-for 的模板片段等。此外,Vue.js 3版本的模板编译器还支持了标记和片段的缓存,提高了性能。

总结

Vue 3 是一个强大的前端框架,它包含了许多新功能和改进。在这篇博客中,我们介绍了如何安装 Vue 3,创建 Vue 3 应用程序以及一些值得关注的新功能。希望这篇文章能够帮助您入门 Vue 3,开始构建交互式的用户界面。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

剑九_六千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值