Vue3基础语法教程

Vue 3 的发布带来了革命性的变化,它更轻量、更快、更强大,为开发者提供了更现代化的开发体验。其中最显著的变化就是 Composition API 的引入,它通过 setup 函数,将数据、方法和生命周期钩子组织到一起,更灵活地管理组件逻辑。本篇文章将带你从零开始,深入探索 Vue 3 的核心概念和功能,帮助你掌握 Vue 3 开发的全部知识,并通过实例代码演示每个概念的应用,重点关注 Composition API 的使用。

一、Vue 3 的核心优势

  1. 更快的性能:采用新的渲染器和优化策略,提高了渲染速度和内存效率。

  2. 更轻量的体积:核心库更小,减少了加载时间,提高了网页性能。

  3. 更灵活的 Composition API:使用函数式编程思想,可以更轻松地组织和复用代码。

  4. 更强大的 TypeScript 支持:提供了更好的类型推断和代码提示,提高了开发效率和代码质量。

  5. 更完善的生态系统:拥有更丰富的组件库、工具库和社区资源,为开发者提供全面的支持。

二、Vue 3 的基础知识

  1. 模板语法:Vue 3 使用类似于 HTML 的模板语法,结合数据和方法动态生成页面内容。

  2. 数据绑定:使用 v-model 指令将数据绑定到 DOM 元素,实现双向数据绑定。

  3. 事件处理:使用 v-on 指令绑定事件监听器,响应用户交互。

  4. 组件化开发:使用 Vue 组件将页面拆分成独立的、可复用的代码块,提高代码可维护性和可扩展性。

  5. 生命周期钩子:使用 created、mounted 等生命周期钩子在组件的不同阶段执行相应的操作。

三、Vue 3 的应用场景

单页面应用程序 (SPA):Vue 3 可以用来构建复杂的、功能丰富的单页面应用程序。

移动端开发:Vue 3 可以用来构建性能优越、体验良好的移动端应用程序。

桌面应用程序:Vue 3 可以用来构建跨平台的桌面应用程序。

网站开发:Vue 3 可以用来构建现代化、交互式网站。

四、vue 模板指令

下面列举了 Vue 3 中常用的模板指令,并为每个指令提供一个简单的示例,帮助你更好地理解它们的应用场景。

1. v-if 和 v-else:用于条件渲染,根据条件决定是否显示元素。

html 复制代码
<template>
  <div v-if="showGreeting">
    <h1>Hello, World!</h1>
  </div>
  <div v-else>
    <p>Greeting is hidden.</p>
  </div>
</template>

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

const showGreeting = ref(true);
</script>

2. v-else-if: 与 v-if 和 v-else 配合使用,用于添加更多条件判断。

html 复制代码
<template>
  <div v-if="age < 18">
    <p>You are a minor.</p>
  </div>
  <div v-else-if="age >= 18 && age < 65">
    <p>You are an adult.</p>
  </div>
  <div v-else>
    <p>You are a senior citizen.</p>
  </div>
</template>

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

const age = ref(25);
</script>

3. v-for:用于循环渲染列表数据。

html 复制代码
<template>
  <ul>
    <li v-for="item in items" :key="item.id">
      {{ item.name }} - {{ item.price }}
    </li>
  </ul>
</template>

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

const items = ref([
  { id: 1, name: 'Apple', price: 1.5 },
  { id: 2, name: 'Banana', price: .8 },
  { id: 3, name: 'Orange', price: 1.2 }
]);
</script>

4. v-bind:用于动态绑定属性,例如 class、style、src 等。

html 复制代码
<template>
  <img :src="imageUrl" :alt="imageDescription" />
</template>

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

const imageUrl = ref('https://example.com/image.jpg');
const imageDescription = ref('An example image');
</script>

5. v-model:用于双向数据绑定,将输入框的值与数据模型同步。

html 复制代码
<template>
  <input type="text" v-model="message" />
  <p>You typed: {{ message }}</p>
</template>

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

const message = ref('');
</script>

6. v-on:用于绑定事件监听器,例如 click、mouseover 等。

html 复制代码
<template>
  <button v-on:click="handleClick">Click me</button>
</template>

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

const count = ref();

const handleClick = () => {
  count.value++;
  console.log('Button clicked!');
};
</script>

7. v-show:用于控制元素的显示与隐藏,它会保留元素在 DOM 中,适合频繁切换显示状态的场景。

html 复制代码
<template>
  <div v-show="isVisible">
    <p>This content is visible.</p>
  </div>
</template>

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

const isVisible = ref(true);
</script>

8. v-html:用于将字符串渲染为 HTML 内容。

html 复制代码
<template>
  <div v-html="htmlContent"></div>
</template>

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

const htmlContent = ref('<p>This is <strong>HTML</strong> content.</p>');
</script>

9. v-text:用于将字符串渲染为文本内容,它会解析 HTML 标签。

html 复制代码
<template>
  <div v-text="textContent"></div>
</template>

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

const textContent = ref('<p>This is <strong>text</strong> content.</p>');
</script>

10. v-slot:用于定义和使用插槽,允许父组件向子组件传递内容。

html 复制代码
<!-- ChildComponent.vue -->
<template>
  <div>
    <slot name="header"></slot>
    <p>This is the child component's content.</p>
    <slot></slot>
  </div>
</template>

<!-- ParentComponent.vue -->
<template>
  <ChildComponent>
    <template #header>
      <h1>This is the header</h1>
    </template>
    <p>This is the parent component's content.</p>
  </ChildComponent>
</template>

11. v-pre: 指示 Vue.js 忽略该元素的内容,用于避免 Vue.js 尝试解析模板语法。

html 复制代码
<template>
  <div v-pre>
    <p>{{ message }}</p>
  </div>
</template>

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

const message = ref('This is a message without interpolation.');
</script>

12. v-once: 指示 Vue.js 只渲染元素一次,之后不再更新,用于优化性能。

html 复制代码
<template>
  <div v-once>
    <p>{{ message }}</p>
  </div>
</template>

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

const message = ref('This message will not update.');
</script>

五、Vue 3 的核心功能

  1. Composition API:使用 setup 函数,将数据、方法和生命周期钩子组织到一起,更灵活地管理组件逻辑。

  2. Reactivity API:使用 ref、reactive 和 computed 等 API,实现数据的响应式更新,自动更新视图。

  3. Teleport:将组件渲染到其他 DOM 元素,实现更灵活的页面布局。

  4. Suspense:提供一种机制,在组件加载过程中显示占位符,提升用户体验。

  5. Fragments:允许渲染多个根元素,更加灵活地控制 DOM 结构。

  6. Slots:在组件中定义插槽,允许父组件自定义组件内容。

六、Vue 3 的学习资源

1.官方文档:https://vuejs.org/

  1. Vue School:https://vueschool.io/

  2. Vue Mastery:https://vuemastery.com/

4.Vue.js 中文社区:https://cn.vuejs.org/

七、总结

Vue 3 作为最新的框架版本,拥有更强大的性能、更灵活的开发方式和更完善的生态系统。通过学习本篇文章,你将掌握 Vue 3 的知识,开启你的 Vue 3 开发之旅。

记住,学习 Vue 3 的最佳途径是不断实践,并积极参与社区交流!

相关推荐
军军君012 小时前
Three.js基础功能学习三:纹理与光照
前端·javascript·3d·前端框架·three·三维·三维框架
一 乐2 小时前
景区管理|基于springboot + vue景区管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习
Sylus_sui2 小时前
企业级Axios封装实战指南
vue.js
幽络源小助理2 小时前
SpringBoot+Vue大型商场应急预案管理系统源码 | Java安全类项目免费下载 – 幽络源
java·vue.js·spring boot
JIngJaneIL2 小时前
基于java + vue连锁门店管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
Mintopia2 小时前
🧠 从零开始:纯手写一个支持流式 JSON 解析的 React Renderer
前端·数据结构·react.js
可触的未来,发芽的智生2 小时前
2025年终总结:智能涌现的思考→放弃冯诺依曼架构范式,拥抱“约束产生智能”
javascript·人工智能·python·神经网络·程序人生
消失的旧时光-19432 小时前
Flutter 工程中 mixin 的正确打开方式:5 种高质量设计范式 + mixin vs 继承 vs 组合 + 为什么它比 BasePage 更优雅
前端·flutter·架构
乐吾乐科技2 小时前
乐吾乐3D可视化2025重大更新与2026升级计划
前端·3d·信息可视化·编辑器·数据可视化