Vue.js 组件的基本结构:模板、脚本和样式

devtools/2025/1/18 4:42:19/

Vue.js 组件的基本结构:模板、脚本和样式

大家好!今天我们聊聊 Vue 组件的基本结构。如果你刚接触 Vue.js,可能会觉得 .vue 文件有点特殊。其实,Vue 组件是高度模块化的,分为三部分:模板脚本样式。接下来我们一起看看它们的作用和写法。

一、模板(Template)

模板是 Vue 组件的视图部分,用来定义页面结构。它看起来很像普通的 HTML,但可以直接使用 Vue 的模板语法,比如数据绑定和指令。

示例

<template><div class="greeting"><h1>{{ title }}</h1><p>{{ message }}</p></div>
</template>

特点:

  • 使用双花括号 {{ }} 绑定数据。
  • 可以写任何合法的 HTML 标签。
  • 可以直接使用 Vue 指令(比如 v-ifv-for 等)。

注意:

  • 模板的根节点只能有一个!比如,<div> 是上面模板的根节点。

二、脚本(Script)

脚本是 Vue 组件的逻辑部分,用来处理数据、方法和生命周期钩子等内容。所有的逻辑代码都写在 <script> 标签中。

示例

<script>
export default {name: 'Greeting', // 组件名称data() {return {title: 'Hello, Vue!',message: '这是你的第一个 Vue 组件!'};},methods: {sayHello() {console.log(this.message);}},created() {console.log('组件已创建');}
};
</script>

特点:

  • data 是一个函数,返回组件的状态数据。
  • methods 定义组件的方法,可以在模板中调用。
  • 生命周期钩子(比如 created)让你可以在组件的不同阶段执行代码。
  • export default 是标准的 ES 模块语法,用于导出组件配置。

注意:

  • 如果你的组件比较复杂,可以将代码拆分成多个模块再引入,保持代码清晰。

三、样式(Style)

样式是 Vue 组件的外观部分,用来定义组件的 CSS 样式。写在 <style> 标签中的内容会作用于这个组件。

示例

<style scoped>
.greeting {font-family: Arial, sans-serif;color: #333;
}h1 {font-size: 24px;margin: 0;
}
</style>

特点:

  • scoped 属性表示样式只作用于当前组件,避免样式冲突。
  • 可以写普通的 CSS,也可以使用预处理器(比如 SCSS、LESS 等)。
  • 如果没有 scoped,样式会全局生效。

注意:

  • 即使使用了 scoped,某些深层子元素的样式可能需要通过特殊语法(如 >>>/deep/)覆盖。

四、综合实例

我们来写一个完整的 Vue 组件,结合模板、脚本和样式。

<template><div class="greeting"><h1>{{ title }}</h1><p>{{ message }}</p><button @click="sayHello">点击问候</button></div>
</template><script>
export default {name: 'Greeting',data() {return {title: 'Hello, Vue!',message: '欢迎来到组件的世界!'};},methods: {sayHello() {alert(this.message);}}
};
</script><style scoped>
.greeting {text-align: center;padding: 20px;border: 1px solid #ccc;border-radius: 8px;background-color: #f9f9f9;
}h1 {color: #42b983;
}button {margin-top: 10px;padding: 10px 20px;border: none;background-color: #42b983;color: white;font-size: 14px;border-radius: 4px;cursor: pointer;
}
</style>

运行效果

  1. 页面显示标题、内容和按钮。
  2. 点击按钮,会弹出一个提示框,显示欢迎信息。
  3. 样式优雅,布局整洁。

五、总结

Vue 组件的 .vue 文件分为模板(Template)、脚本(Script)和样式(Style)三部分:

  • 模板:负责定义视图,支持数据绑定和指令。
  • 脚本:负责处理逻辑,管理数据、方法和生命周期。
  • 样式:负责定义组件的外观,可以作用于组件内部的元素。

清晰的结构让 Vue 组件开发变得简单直观。希望这篇文章能帮你快速掌握 Vue 组件的基本结构!


http://www.ppmy.cn/devtools/151087.html

相关文章

【PHP】双方接口通信校验服务

请求方 使用 ApiAuthService::buildUrl($domain, [terminal => 1, ts => time()]); //http://域名/adminapi/login/platformLogin?sign=F7FE8A150DEC18BE8A71C5059742C81A&terminal=1&ts=1736904841接收方 $getParams = $this->request->get();$validate…

_STM32关于CPU超频的参考_HAL

MCU: STM32F407VET6 官方最高稳定频率&#xff1a;168MHz 工具&#xff1a;STM32CubeMX 本篇仅仅只是提供超频&#xff08;默认指的是主频&#xff09;的简单方法&#xff0c;并未涉及STM32超频极限等问题。原理很简单&#xff0c;通过设置锁相环的倍频系数达到不同的频率&am…

如何利用.NET版PDF处理控件Aspose.PDF,使用 C# 从 PDF 中删除水印

水印会遮盖重要内容或造成混乱的外观。在法律、教育和商业文件中&#xff0c;呈现清晰专业的材料至关重要。这篇教程将指导您如何使用C# 从 PDF 中删除水印。跟着我一步一步学习。它比你想象的要容易&#xff01; Aspose.PDF 是一款高级PDF处理API&#xff0c;可以在跨平台应用…

政策助力,亚洲AI人工智能大会闪耀CES Asia 2025

在科技发展的浪潮中&#xff0c;CES Asia 2025亚洲消费电子技术贸易展&#xff08;赛逸展&#xff09;将在北京盛大开幕&#xff0c;同期举办的亚洲AI人工智能大会更是备受瞩目&#xff0c;成为全球科技界聚焦的热点。此次大会在政策的有力支持下&#xff0c;将为人工智能产业的…

springCloudGateway+nacos自定义负载均衡-通过IP隔离开发环境

先说一下想法&#xff0c;小公司开发项目&#xff0c;参考若依框架使用的spring-cloud-starter-gateway和spring-cloud-starter-alibaba-nacos, 用到了nacos的配置中心和注册中心&#xff0c;有多个模块&#xff08;每个模块都是一个服务&#xff09;。 想本地开发&#xff0c;…

Flink系统知识讲解之:Flink内存管理详解

Flink系统知识讲解之&#xff1a;Flink内存管理详解 在现阶段&#xff0c;大部分开源的大数据计算引擎都是用Java或者是基于JVM的编程语言实现的&#xff0c;如Apache Hadoop、Apache Spark、Apache Drill、Apache Flink等。Java语言的好处是不用考虑底层&#xff0c;降低了程…

探索 AI 自动化编程:效率革命与未来教育的转型

随着人工智能技术的快速发展&#xff0c;AI 自动化编程工具正日益影响软件开发行业。从代码生成到项目管理&#xff0c;这些工具不仅加速了开发流程&#xff0c;还引发了对编程职业未来的深入思考。那么&#xff0c;AI 自动化编程的现状如何&#xff1f;它如何影响程序员的日常…

《怪形重制版》V1.02官方学习版

《怪形重制版》官方版https://pan.xunlei.com/s/VODagL8lixXjQPQtSDwBe_mxA1?pwdmj74# 在这些荒凉的环境中&#xff0c;你的团队遇到了一种奇怪的变形外星生命形式&#xff0c;它看起来像是被杀死的人。如果你希望实现你的目标&#xff0c;更不用说生存了&#xff0c;那么被这…