当前位置: 首页 > article >正文

【Vue3 完整学习笔记 - 第一部分】

Vue3 完整学习笔记 - 第一部分

  • Vue3 完整学习笔记 - 第一部分
    • 1. Vue3 基础入门
      • 1.1 Vue3 简介
      • 1.2 创建 Vue3 工程
      • 1.3 编写首个 Vue3 组件
      • 1.4 Composition API vs Options API
      • 1.5 setup 函数详解
      • 1.6 响应式数据处理

Vue3 完整学习笔记 - 第一部分

1. Vue3 基础入门

1.1 Vue3 简介

重点掌握:

  • Vue3 的主要特性和优势
  • 相比 Vue2 的重大改进
  • 为什么要学习 Vue3

核心要点:

  1. 性能提升:
    • 重写虚拟DOM实现
    • 编译器优化
    • 更高效的组件初始化
  2. 新特性:
    • Composition API
    • Teleport
    • Fragments
    • Suspense
  3. 更好的 TypeScript 支持

示例:

// Vue2 写法
export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    increment() {
      this.count++
    }
  }
}

// Vue3 Composition API 写法
import { ref } from 'vue'

export default {
  setup() {
    const count = ref(0)
    const increment = () => count.value++

    return {
      count,
      increment
    }
  }
}

1.2 创建 Vue3 工程

重点掌握:

  • 使用 Vite 创建项目
  • 项目目录结构
  • 基本配置说明

步骤:

  1. 创建项目:
npm create vite@latest my-vue-app -- --template vue
cd my-vue-app
npm install
  1. 目录结构说明:
my-vue-app/
├── public/
├── src/
│   ├── assets/
│   ├── components/
│   ├── App.vue
│   └── main.js
├── index.html
├── package.json
└── vite.config.js

核心配置:

// vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [vue()],
  server: {
    port: 3000
  }
})

1.3 编写首个 Vue3 组件

重点掌握:

  • 组件基本结构
  • <script setup> 语法
  • 组件样式和模板编写

示例组件:

<template>
  <div class="container">
    <h1>{{ title }}</h1>
    <button @click="increment">点击次数: {{ count }}</button>
  </div>
</template>

<script setup>
import { ref } from 'vue'

const title = 'My First Vue3 App'
const count = ref(0)

const increment = () => {
  count.value++
}
</script>

<style scoped>
.container {
  text-align: center;
  margin-top: 20px;
}

button {
  padding: 8px 16px;
  font-size: 16px;
}
</style>

1.4 Composition API vs Options API

重点掌握:

  • 两种 API 的区别
  • 各自的适用场景
  • 如何选择使用哪种 API

Options API:

<script>
export default {
  data() {
    return {
      firstName: 'John',
      lastName: 'Doe',
      age: 30
    }
  },
  computed: {
    fullName() {
      return `${this.firstName} ${this.lastName}`
    }
  },
  methods: {
    incrementAge() {
      this.age++
    }
  }
}
</script>

Composition API:

<script setup>
import { ref, computed } from 'vue'

const firstName = ref('John')
const lastName = ref('Doe')
const age = ref(30)

const fullName = computed(() => `${firstName.value} ${lastName.value}`)

const incrementAge = () => {
  age.value++
}
</script>

优劣对比:

  1. Options API:
    • 优点:结构清晰,容易理解
    • 缺点:代码复用困难,逻辑分散
  2. Composition API:
    • 优点:逻辑复用方便,更好的TypeScript支持
    • 缺点:学习曲线相对陡峭

1.5 setup 函数详解

重点掌握:

  • setup 执行时机
  • setup 参数
  • 返回值处理
  • <script setup> 语法糖

基本使用:

<script>
import { ref } from 'vue'

export default {
  props: {
    title: String
  },
  setup(props, context) {
    // 创建响应式数据
    const count = ref(0)

    // 方法
    const increment = () => {
      count.value++
    }

    // 返回值会暴露给模板
    return {
      count,
      increment
    }
  }
}
</script>

使用 <script setup>

<script setup>
import { ref } from 'vue'

// 直接定义响应式数据
const count = ref(0)

// 直接定义方法
const increment = () => {
  count.value++
}

// 无需return,自动暴露给模板
</script>

1.6 响应式数据处理

重点掌握:

  • ref 的使用
  • reactive 的使用
  • 两者的区别和选择

ref 示例:

<script setup>
import { ref } from 'vue'

// 基本类型
const count = ref(0)
const message = ref('Hello')

// 访问和修改
console.log(count.value)
count.value++

// 对象类型
const user = ref({
  name: 'John',
  age: 30
})

// 修改对象属性
user.value.age++
</script>

reactive 示例:

<script setup>
import { reactive } from 'vue'

// 创建响应式对象
const state = reactive({
  count: 0,
  user: {
    name: 'John',
    age: 30
  }
})

// 直接修改属性
state.count++
state.user.age++
</script>

http://www.kler.cn/a/532379.html

相关文章:

  • 【数据结构-Trie树】力扣648. 单词替换
  • ubuntu解决普通用户无法进入root
  • 信息学奥赛一本通 2111 【24CSPJ普及组】扑克牌(poker) | 洛谷 P11227 [CSP-J 2024] 扑克牌
  • 高阶开发基础——快速入门C++并发编程2
  • 深入理解linux中的文件(上)
  • 在GPIO控制器中,配置通用输入,读取IO口电平时,上拉和下拉起到什么作用
  • Java 大视界 -- Java 大数据在智能医疗影像诊断中的应用(72)
  • 算法基础--二分查找
  • C++实现一款功能丰富的通讯录管理系统
  • sentinel的限流原理
  • Nacos 的介绍和使用
  • 浏览器的通信能力
  • 芝法酱学习笔记(2.6)——flink-cdc监听mysql binlog并同步数据至elastic-search和更新redis缓存
  • BGP路径属性
  • 将音频mp3文件添加背景音乐
  • Python迭代器:解密数据遍历的核心机制
  • Ajax:重塑Web交互体验的人性化探索
  • 解析PHP文件路径相关常量
  • Unity飞行代码 超仿真 保姆级教程
  • 数据分析师使用Kutools for Excel 插件
  • C++资源管理
  • Android开发EventBus
  • C_数据结构(队列) —— 队列的初始化、入队列队尾、队列判空、出队列队头、取队头队尾数据、队列有效元素个数、销毁队列
  • JS中document获取元素方法【内涵案例】
  • Paimon写入性能
  • 读写锁: ReentrantReadWriteLock