通过脚手架vue-cli创建
npm install -g @vue/cli 或 yarn global add @vue/cli
vue create app-name 或 通过ui页面进行创建
vue3引入方式
import { createApp } from 'vue'; //引入工厂函数
import App from './App.vue'; //导入app组件
const app = createApp(App)
app.mount('#app')
vue2引入方式
import Vue from 'vue'
import App from './app.vue'
new Vue({
render: h => h(App)
}).$mount('#app')
vue3的组件可以不写根标签,vue3会自动的将元素包裹到一个fragment中
vue3新增了setup配置项,原有的data、methods、computed等等配置项都可以在setup中书写,setup在beforeCreate之前执行一次,此时this值为undefined,所以在setup中不推荐使用this,有以下几个注意点:
setup: function(props, context) {
let name = 'wmh',
let age = 18
return {
name,
age
}
}
setup的参数问题:
ref和reactive函数:响应性基础api
import { ref } from 'vue' //导入ref函数
setup() {
let name = ref('wmh') //接收一个值并返回一个响应式可变的ref对象(引用对象)
name.value = 'wyz' //需要通过.value操作值
return {
name
}
}
import { creative } from 'vue' //导入creative函数
setup() {
let person = creative({ //返回一个reactive对象(代理对象)
name:'wmh',
age: 18
})
person.name = 'wyz' //不需要通过.value操作值
return {
person
}
}
ref和reactive的对比:
使用方式类似vue2,但定义有些许不同,用代码演示
import { computed } from 'vue' //导入computed函数
//以下代码书写在setup配置项中
// 写法一:简写
let fullName = computed({
return firstName + lastName
})
// 写法二:完整写法
let fullName = computed({
get(){
return firstName + lastName
}
set(){}
})
类似vue2的watch配置项,书写在setup配置项中,需要注意的是,它监听的是一个reactive或ref对象,意思是,在这里侦听时不需要.value,
import { watch } from 'vue' //导入watch函数
let count = ref(0) //定义一个ref对象
let count1 = ref(18)
let person = reactive({ //定义一个代理对象
name: 'wmh',
age: 18
})
// 监听ref对象
watch(count, (count, oldCount) => {
/* ... */
})
// 监听代理对象
watch(person, person => {
/* ... */
})
监听reactive包裹的代理对象时,oldValue无法正确获得且强制开启深度监视
// 监听person的name属性
watch(() => person.name, (value, oldValue) => {
/* ... */
})
监视reactive定义的数据中的某个属性时,deep配置生效(需要手动配置深度监视)
注意,此处oldValue可以正确获得
// 监听person的name和age属性
watch([() => person.name,() => person.age], (value, oldValue) => {
/* ... */
})
// 监听多个属性
watch([count, count1], ([count, count1], [oldCount, oldCount1]) => {
/* ... */
})
不同于普通的watch函数,既需要指明侦听的属性,也需要指明回调,watchEffect不用指明侦听哪个属性,侦听的回调中用到哪个属性,就侦听哪个属性
import { watchEffect } from 'vue'
let name = ref('wmh')
let age = ref(18)
// 以下代码使用到name和age属性,则会自动监听这两个属性
watchEffect(() => {
const x1 = name.value
const x2 = age.value
})
watchEffect和computed的对比: