create-vue是官方新的脚手架工具,底层切换到了vite(下一代构建工具),为开发提供急速响应
创建项目和yun:
创建一个Vue应用:npm init vue@latest
接下来会需要输入项目名,此时输入的项目名是:vue_project
接下来输入执行下面的语句(之后如果要打开项目也是指令,终端要进入项目所在的目录)
cd vue_project
npm install
npm run dev(之后打开项目使用这条语句)
执行时,比beforeCreate还要早
setup函数中,获取不到this(this是underfined)
(定义数据+函数 然后以对象方式return)
- <script>
- export default {
- setup(){
- console.log('setup函数')
- const message='hello'
- const logMessage=()=>{
- console.log(message)
- }
- return{
- message,
- logMessage
- }
- },
- beforeCreate() {
- console.log('beforeCreate函数')
- }
- }
- </script>
- <template>
- <div>{{ message }}</div>
- <button @click="logMessage">按钮</button>
- </template>
(使用组合式API)
-
- <script setup>
- //数据
- const message='this is a message'
- const logMessage=()=>{
- console.log(message)
- }
- </script>
- <template>
- <div>{{ message }}</div>
- <button @click="logMessage">按钮</button>
- </template>
接收一个对象类型的数据,返回一个响应式的对象
- <script setup>
- import {reactive} from "vue";
- const state=reactive({
- count:100
- })
- const setCount=()=>{
- state.count++
- }
- </script>
-
- <template>
- <div>{{state.count}}</div>
- <button @click="setCount">++</button>
- </template>
接收简单类型或复杂类型,返回一个响应式对象
本质:是在原有传入数据的基础上,外层包了一层对象,包成了复杂类型
底层:保存复杂类型之后,再借助reactive实现的响应式
注意:
- <script setup>
- // import {reactive} from "vue";
- // const state=reactive({
- // count:100
- // })
- // const setCount=()=>{
- // state.count++
- // }
- import {ref} from "vue";
- const count=ref(0)
- const setCount=()=>[
- count.value++
- ]
- </script>
-
- <template>
- <div>{{count}}</div>
- <button @click="setCount">++</button>
- </template>
步骤:
只读写法:

可写方法:

监听一个或多个数据的变化,数据变化时执行回调函数

不管哪个数据变化都需要监听
1.其中第三个参数可以写immediate:true,可以立刻执行(例如在打开页面时)

2.deep深度监视,默认watch进行的是浅层监视
3.对于对象中的单个属性,进行监视


由于写了setup,所以无法直接配置props,此处借助于“编译器宏”函数defineProps接收传递的数据
defineProps原理
就是编译阶段的一个标识,实际编译器解析时,遇到后会进行编译转换



概念:通过ref标识获取真实的都没对象或者组件实例对象

在默认情况下