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

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

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.kler.cn/a/503834.html

相关文章:

  • W25Q64-FLASH
  • GitLab本地服务器配置ssh和克隆项目
  • JavaScript动态渲染页面爬取之Splash
  • stable diffusion 量化学习笔记
  • 探索图像编辑的无限可能——Adobe Photoshop全解析
  • 【STM32-学习笔记-6-】DMA
  • Vue3组件设计模式:高可复用性组件开发实战
  • python+django+elasticsearch实现自动化部署平台构建日志记录(前端vue-element展示)
  • maven 下载依赖 jhash:2.1.2 和对应 jar 包
  • 基于Java的愤怒的小鸟游戏的设计与实现【源码+文档+部署讲解】
  • CSS | CSS实现两栏布局(左边定宽 右边自适应,左右成比自适应)
  • 支持Google Analytics快捷添加的CMS:费用与部署形式详解
  • 数据结构—《二叉树的定义与特性》
  • 软件设计模式的原则
  • pg_hba.conf是PostgreSQL中控制客户端认证和访问权限的配置文件
  • C# 将 List 转换为只读的 List
  • vue3 实现 “ fly-cut 在线视频剪辑 ”
  • 【MySQL】count(*)、count(1)和count(列名)区别
  • JAVA:利用 RabbitMQ 死信队列实现支付超时场景的技术指南
  • 第424场周赛:使数组元素等于零、零数组变换 Ⅰ、零数组变换 Ⅱ、最小化相邻元素的最大差值
  • OJ题目下篇
  • AI赋能下的美颜API与滤镜SDK:从传统到深度学习的进化之路
  • 深入理解 Python 的装饰器
  • Elasticsearch ES|QL 地理空间索引加入纽约犯罪地图
  • 计算机的错误计算(二百一十一)
  • 交互数字人:革新沟通的未来