Vue基础

Vue基础

简介

Vue是一套用于构建用户界面的渐进式框架,采用自底向上逐层设计,核心库只关注视图层,

特性

  • 声明式渲染

单文件组件(SFC)

  • 一个 Vue 单文件组件 (SFC),是使用 *.vue 作为文件扩展名的文件;

  • 每个 *.vue 文件都由三种顶层语言块构成:

    • <template>

      • 显示模板,标签之间为html代码块;

      • 每个 *.vue 文件最多可以包含一个顶层 <template> 块。

    • <script>

      • 模板脚本, 标签之间为js代码块;

      • 每个 *.vue 文件最多可以包含一个 <script> 块;

      • 这个脚本代码块将作为 ES 模块执行。

      • 每个 *.vue 文件最多可以包含一个 <script setup>

      • <script setup>代码块将被预处理为组件的 setup() 函数,将为每一个组件实例都执行。

      • <script setup> 中的顶层绑定都将自动暴露给模板;

    • <style>

      • 显示式样,标签之间为css代码块;

      • 每个 *.vue 文件可以包含多个 <style> 标签;

    • 自定义块:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<template>
  <div class="example">{{ msg }}</div>
</template>

<script>
export default {
  data() {
    return {
      msg: 'Hello world!'
    }
  }
}
</script>

<style>
.example {
  color: red;
}
</style>

<custom1>
  This could be e.g. documentation for the component.
</custom1>

API风格

选项式(Options API)

  • 用包含多个选项的对象来描述组件的逻辑;

  • 选项所定义的属性都会暴露在函数内部的 this 上,它会指向当前的组件实例;

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<script>
export default {
  // data() 返回的属性将会成为响应式的状态
  // 并且暴露在 `this` 上
  data() {
    return {
      count: 0
    }
  },

  // methods 是一些用来更改状态与触发更新的函数
  // 它们可以在模板中作为事件处理器绑定
  methods: {
    increment() {
      this.count++
    }
  },

  // 生命周期钩子会在组件生命周期的各个不同阶段被调用
  // 例如这个函数就会在组件挂载完成后被调用
  mounted() {
    console.log(`The initial count is ${this.count}.`)
  }
}
</script>
<template>
  <button @click="increment">Count is: {{ count }}</button>
</template>

组合式

  • 使用导入的 API 函数来描述组件逻辑;

  • setup() 钩子是在组件中使用组合式 API 的入口;

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
```html
<script>
import { ref, onMounted } from 'vue'

// 生命周期钩子
onMounted(() => {
  console.log(`The initial count is ${count.value}.`)
})

setup() {
    // 响应式状态
    const count = ref(0)

    // 用来修改状态、触发更新的函数
    function increment() {
      count.value++
    }
    // 不要忘记同时暴露 increment 函数
    return {
      count,
      increment
    }
}
</script>

<template>
  <button @click="increment">Count is: {{ count }}</button>
</template>
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
等价于如下:`<script setup>`

```html
<script setup>
import { ref, onMounted } from 'vue'

// 响应式状态
const count = ref(0)

// 用来修改状态、触发更新的函数
function increment() {
  count.value++
}

// 生命周期钩子
onMounted(() => {
  console.log(`The initial count is ${count.value}.`)
})
</script>

<template>
  <button @click="increment">Count is: {{ count }}</button>
</template>

基本概念

  • props

    父组件通过 props 向下传递数据给子组件;子组件通过 events 给父组件发送消息。

  • computed

  • data:

    用于模板中变量绑定

  • method

各阶段数据可使用情况

参考

  1. https://juejin.im/post/5d4299156fb9a06af92b82ff

updatedupdated2024-05-102024-05-10