vue3学习笔记
编写App组件
<template>
<!-- html -->
<div class="app">
<h1>你好</h1>
</div>
</template>
<script lang="ts">
// JS或TS
export default {
name:'App'//组件名
}
</script>
<style>
/* 样式 */
.app {
background-color: #ddd;
box-shadow: 0 0 10px;
border-radius: 10px;
padding: 20px;
}
</style>
vue的组成
template:里面装html元素
script:里面装JS或TS元素
style:里面装元素样式
// 引入createApp用于创建应用
import {createApp} from 'vue'
// 引入App根组件
import App from './App.vue'
createApp(App).mount('#app')
运行vue
在终端打出命令:npm run dev
简单效果(vue2)
<template>
<!-- html -->
<div class="person">
<h2>姓名:{{ name }}</h2>
<h2>年龄:{{ age }}</h2>
<button @click="changeName">修改名字</button>
<button @click="changeAge">修改年龄</button>
<button @click="showTel">查看联系方式</button>
</div>
</template>
<script lang="ts">
// JS或TS
export default {
name:'Person',//组件名
data(){
return {
name:'张三',
age:18,
tel:'1368888888'
}
},
methods:{
showTel(){
alert(this.tel);
},
changeName(){
this.name='zhang-san'
},
changeAge(){
this.age+=1
},
}
}
</script>
<style scoped>
/* 样式 */
.person {
background-color: skyblue;
box-shadow: 0 0 10px;
border-radius: 10px;
padding: 20px;
}
button {
margin: 0 5px;
}
</style>
导出组件
export default {
name:'Person',//组件名
//数据
data(){
return {
name:'张三',
age:18,
tel:'1368888888'
}
},
//方法
methods:{
showTel(){
alert(this.tel);
},
changeName(){
this.name='zhang-san'
},
changeAge(){
this.age+=1
},
}
}
事件点击监听
<button @click="changeName">修改名字</button>
<button @click="changeAge">修改年龄</button>
<button @click="showTel">查看联系方式</button>
用数据渲染页面
<h2>姓名:{{ name }}</h2>
<h2>年龄:{{ age }}</h2>
引入导出的组件
import Person from './components/Person.vue'
将引入的组件导出
export default {
name:'App',//组件名
components:{Person}//注册组件
}
OptionsAPI&CompositionAPI
OptionsAPI(vue2)
配置风格
在export default {}里面的都是配置项
包括data、methods、computed......
弊端:数据、方法、计算属性等都是分散的,若是想新增或者修改一个需求,就需要分别修改配置项,不便于维护和利用。页面渲染只能有一个根标签,如果要有多个要用其他的标签包裹。
CompositionAPI(vue3)
组合式风格
用函数的方式,更加优雅地组织代码,让相关功能的代码更加有序的组织在一起。可以有多个根标签
setup
概述:
setup是 Vue3中一个新的配置项,值是一个函数,它是 Composition API “表演的舞台_**”**_,组件中所用到的:数据、方法、计算属性、监视......等等,均配置在 setup中。
特点:
- setup函数返回的对象中的内容,可直接在模板中使用。
- setup中访问 this是 undefined。
- setup函数会在 beforeCreate之前调用,它是“领先”所有钩子执行的。
<template>
<div class="person">
<h2>姓名:{{name}}</h2>
<h2>年龄:{{age}}</h2>
<button @click="changeName">修改名字</button>
<button @click="changeAge">年龄+1</button>
<button @click="showTel">点我查看联系方式</button>
</div>
</template>
<script lang="ts">
export default {
name:'Person',
setup(){
// 数据,原来写在data中(注意:此时的name、age、tel数据都不是响应式数据)
let name = '张三'
let age = 18
let tel = '13888888888'
// 方法,原来写在methods中
function changeName(){
name = 'zhang-san' //注意:此时这么修改name页面是不变化的
console.log(name)
}
function changeAge(){
age += 1 //注意:此时这么修改age页面是不变化的
console.log(age)
}
function showTel(){
alert(tel)
}
// 返回一个对象,对象中的内容,模板中可以直接使用
return {name,age,tel,changeName,changeAge,showTel}
}
}
</script>
定义
setup() {
//数据
let name='张三'
let age=18
let tel='1388888888'
return {a:name,b:age}//{name,age}
}
渲染页面
<h2>姓名:{{ a }}</h2>//{{name}}
<h2>年龄:{{ b }}</h2>//{{age}}
vue3学习笔记
http://localhost:8090//archives/vue3xue-xi-bi-ji