Vue3官方文档地址:https://v3.cn.vuejs.org/
以前的官方脚手架@vue-cli也可以用,但这里推荐一个更轻快的脚手架Vite
脚手架网址:Vite中文网
方式一:vue-cli脚手架初始化Vue3项目 官方文档:https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-create // 查看@vue/cli版本,确保@vue/cli版本在4.5.0以上 vue --version // 安装或者升级你的@vue/cli npm install -g @vue/cli // 创建 vue create vue_test // 启动 cd vue_test npm run serve
方式二:vite初始化Vue3项目
vite官网:https://vitejs.cn/// 创建工程
npm init vite-app
// 进入工程目录
cd
// 安装依赖
npm install
// 运行
npm run dev
在 Vue 3 中,生命周期钩子函数相比于 Vue 2 有所改变,主要是通过 Composition API 来管理组件的生命周期。以下是 Vue 3 中常用的生命周期钩子函数,包括代码和注释:
Vue 3 生命周期钩子函数示例
{{ message }}
Vue 3 的生命周期钩子函数:
onMounted
、onUpdated
和 onUnmounted
。setup 函数:
mounted
、updated
和 beforeUnmount
等生命周期钩子,而是在 setup
函数中使用函数式 API。setup
函数在组件实例创建时执行,返回需要在模板中使用的数据和方法。onMounted 钩子:
onMounted
在组件被挂载到 DOM 后调用,类似于 Vue 2.x 中的 mounted
钩子。onMounted
函数内部定义的代码将在组件挂载后执行。onUpdated 钩子:
onUpdated
在组件更新后调用,类似于 Vue 2.x 中的 updated
钩子。onUpdated
函数内部定义的代码将在每次组件更新时执行。onUnmounted 钩子:
onUnmounted
在组件即将被销毁前调用,类似于 Vue 2.x 中的 beforeUnmount
钩子。onUnmounted
函数内部定义的代码将在组件销毁前执行清理操作。通过以上示例和解释,你可以更好地理解 Vue 3 中如何使用 Composition API 来管理组件的生命周期,并在需要的时候执行相应的操作。
在 Vue 3 中,ref
是用来创建响应式数据的函数,用于在组件中保存和操作 DOM 元素、计数器等简单数据。以下是几种常见的 ref
使用方式,包括代码和注释:
Vue 3 ref 基本用法
Count: {{ count }}
注释:
ref
函数用来创建一个响应式引用,初始值为 0
。count.value
访问和修改 ref
创建的响应式数据。increment
方法增加 count
的值,每次点击按钮时触发。
Vue 3 ref 获取 DOM 元素
注释:
ref
创建的 inputRef
用来引用
元素。onMounted
钩子函数在组件挂载后调用,此时可以访问 inputRef.value
获取到真实的 DOM 元素。focusInput
方法通过 inputRef.value.focus()
聚焦到
元素。
Vue 3 ref 对象引用
Name: {{ person.name }}
注释:
ref
创建的 person
是一个包含对象 { name: 'John' }
的响应式数据。person.value.name
可以访问和修改对象属性。changeName
方法用来改变 person.value.name
的值,从 'John'
变为 'Jane'
。通过这些示例,你可以了解如何在 Vue 3 中使用 ref
函数来管理简单的数据、DOM 元素引用以及对象引用,并且在 Composition API 中的应用方式。
在 Vue 3 中,reactive
和 toRefs
是 Composition API 中用来创建和处理响应式数据的两个重要方法。下面我将为你展示它们的用法,并附上详细的注释。
Vue 3 reactive 方法
Person: {{ person.name }}, Age: {{ person.age }}
注释:
reactive
方法用来创建一个包含响应式数据的对象 person
。person.name
和 person.age
可以在模板中直接使用,并且会自动响应数据的变化。updatePerson
方法修改 person
对象的属性,任何改变都会在页面上自动更新。
Vue 3 toRefs 方法
Product: {{ product.name }}, Price: {{ product.price }}
注释:
reactive
方法创建一个响应式对象 product
,包含 name
和 price
属性。toRefs
方法将 reactive
对象转换为普通对象的 ref,这样可以在模板中使用 product.name
和 product.price
。updateProduct
方法修改 product
对象的属性,页面会自动更新 name
和 price
的显示。通过 reactive
和 toRefs
方法,可以有效地管理和操作组件中的响应式数据,从而实现数据的动态更新和页面的重新渲染。
之前写的setup语法糖其实可以简写:
{{num}}
在Vue 3中,watch
和watchEffect
都是用来响应式地监视数据变化并执行相应逻辑的功能。它们的使用方式和作用略有不同,下面是它们的代码示例和注释:
import { reactive, watch, watchEffect } from 'vue';
const state = reactive({
count: 0,
doubleCount: 0,
});
// 使用watch来监视特定的响应式数据变化
watch(
() => state.count, // 监视的数据源,可以是一个getter函数
(newValue, oldValue) => {
console.log(`count变化了:新值为${newValue},旧值为${oldValue}`);
state.doubleCount = newValue * 2; // 更新另一个响应式数据
}
);
// 使用watchEffect来监视数据变化并执行副作用
watchEffect(() => {
console.log(`count的值是:${state.count}`);
// 此处可以写一些副作用逻辑,它会在count变化时自动运行
});
// 模拟数据变化
setTimeout(() => {
state.count++;
}, 1000);
watch
示例:
watch
接受两个参数:第一个参数是一个getter函数,它返回要监视的响应式数据;第二个参数是一个回调函数,当监视的数据变化时会被调用。state.count
的变化,一旦它变化,就会打印新旧值,并更新state.doubleCount
为state.count
的两倍。watchEffect
示例:
watchEffect
接受一个函数作为参数,这个函数内部包含了需要执行的副作用逻辑。watch
那样需要显式地指定依赖,watchEffect
会自动追踪其内部使用的所有响应式数据,当这些数据变化时,函数会重新运行。模拟数据变化:
setTimeout
来模拟state.count
的变化。在一秒钟后,state.count
增加1,这将触发watchEffect
内部的打印逻辑和watch
的回调函数。这些功能使得Vue 3能够更加灵活地处理数据变化和副作用,从而构建响应式的用户界面和数据驱动的应用程序。
在Vue 3中,computed
属性用于定义一个基于响应式数据计算得出的属性,它会根据其依赖的响应式数据自动更新。下面是一个示例代码和相应的注释:
import { reactive, computed } from 'vue';
const state = reactive({
count: 0,
});
// 定义一个computed属性
const doubleCount = computed(() => {
return state.count * 2; // 根据state.count计算得出doubleCount
});
// 模拟数据变化
setTimeout(() => {
state.count++;
}, 1000);
// 打印computed属性的值
console.log(doubleCount.value); // 初始值为0,因为count还没有变化
// 监听computed属性的变化
watchEffect(() => {
console.log(`doubleCount的值是:${doubleCount.value}`);
});
// 模拟数据变化后再次打印computed属性的值
setTimeout(() => {
console.log(doubleCount.value); // 输出变为2,因为count变为1后,doubleCount更新为2
}, 2000);
定义computed
属性:
computed
函数来定义一个计算属性doubleCount
,它接受一个函数作为参数,这个函数返回计算后的值。doubleCount
是state.count
的两倍。访问computed属性:
.value
来访问。初始时,doubleCount.value
为0,因为state.count
初始值为0。模拟数据变化:
setTimeout
来模拟state.count
的变化。一秒后,state.count
增加1,这会触发doubleCount
的重新计算。监听computed属性的变化:
watchEffect
来监听doubleCount
的变化。每当doubleCount
发生变化时,打印其值。再次打印computed属性的值:
doubleCount.value
,它会输出2,因为在第二秒时,state.count
变为1,所以doubleCount
被重新计算为2。通过computed
属性,Vue 3能够自动追踪依赖关系,只有在其依赖的响应式数据变化时才重新计算,从而提高了性能和代码的清晰度。