Vue3 单文件组件学习笔记

本文将介绍 Vue3 的单文件组件相关知识,并附上实例代码。

什么是单文件组件

单文件组件(Single File Components,简称 SFC)是一种将组件的 HTML 模板、JavaScript 代码和样式表都写在一个 .vue 文件中的组件形式。这样做的好处是方便组件的编写和维护,也便于代码重用。

在单文件组件中,可以通过 <template> 标签来定义组件的模板,<script> 标签用来定义组件的 JavaScript 部分,<style> 标签用来定义样式。以下是一个简单的单文件组件示例:

Copy Code
<template> <div class="hello"> {{ greeting }} </div> </template> <script> export default { data() { return { greeting: 'Hello World!' } } } </script> <style> .hello { font-size: 24px; } </style>

如何使用单文件组件

要在应用程序中使用单文件组件,需要使用 Vue 的编译器将其转换为渲染函数。在 Vue3 中,可以使用 createApp 函数来创建应用程序实例,并使用 component 方法注册单文件组件。以下是一个简单的例子:

htmlCopy Code
<!DOCTYPE html> <html> <head> <title>Vue3 Single File Component Example</title> </head> <body> <div id="app"></div> <script src="https://unpkg.com/vue@next"></script> <script src="./hello.vue"></script> <script> const app = Vue.createApp({}) app.component('hello', Hello) app.mount('#app') </script> </body> </html>

其中,我们使用 component 方法注册了名为 hello 的组件,它的代码在 ./hello.vue 文件中。在 HTML 中,我们可以像普通标签一样使用 <hello> 标签来渲染这个组件。

单文件组件实例

下面是一个包含一个计数器的单文件组件示例:

Copy Code
<template> <div class="counter"> <h2>{{ title }}</h2> <button @click="increment">+</button> <span>{{ count }}</span> <button @click="decrement">-</button> </div> </template> <script> export default { data() { return { count: 0, title: 'Vue3 Counter' } }, methods: { increment() { this.count++ }, decrement() { this.count-- } } } </script> <style> .counter { padding: 20px; background-color: #f6f6f6; border: 1px solid #ddd; display: flex; justify-content: center; align-items: center; flex-wrap: wrap; } h2 { margin: 0; margin-bottom: 10px; font-size: 24px; } button { padding: 10px 15px; background-color: #007fff; color: #fff; border: none; margin: 10px; cursor: pointer; } span { margin: 0 10px; font-size: 24px; } </style>

在 HTML 中,我们可以像这样使用这个组件:

htmlCopy Code
<!DOCTYPE html> <html> <head> <title>Vue3 Single File Component Example</title> </head> <body> <div id="app"> <counter></counter> </div> <script src="https://unpkg.com/vue@next"></script> <script src="./counter.vue"></script> <script> const app = Vue.createApp({}) app.component('counter', Counter) app.mount('#app') </script> </body> </html>

当我们访问这个页面时,将会看到一个计数器组件,点击 “+” 按钮可以增加计数,点击 “-” 按钮可以减少计数。