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 的最佳途径是不断实践,并积极参与社区交流!

相关推荐
m0_719084111 分钟前
React笔记张天禹
前端·笔记·react.js
Ziky学习记录15 分钟前
从零到实战:React Router 学习与总结
前端·学习·react.js
wuhen_n21 分钟前
JavaScript链表与双向链表实现:理解数组与链表的差异
前端·javascript
wuhen_n25 分钟前
JavaScript数据结构深度解析:栈、队列与树的实现与应用
前端·javascript
我是一只puppy31 分钟前
使用AI进行代码审查
javascript·人工智能·git·安全·源代码管理
颜酱31 分钟前
从二叉树到衍生结构:5种高频树结构原理+解析
javascript·后端·算法
狗哥哥1 小时前
微前端路由设计方案 & 子应用管理保活
前端·架构
TT哇1 小时前
【实习 】银行经理端两个核心功能的开发与修复(银行经理绑定逻辑修复和线下领取扫码功能开发)
java·vue.js
前端大卫1 小时前
Vue3 + Element-Plus 自定义虚拟表格滚动实现方案【附源码】
前端
却尘2 小时前
Next.js 请求最佳实践 - vercel 2026一月发布指南
前端·react.js·next.js