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
作者
林依琪
发布于
2024年11月11日
许可协议