Vue详细入门(语法【三】)

news2024/10/19 1:07:58

今天滴的学习目标!!!

  • Vue组件是什么?
  • 组件的特性和优势
  • Vue3计算属性
  • Vue3监听属性

  在前面Vue详细入门(语法【一】——【二】)当中我们学习了Vue有哪些指令,它的核心语法有哪些?今天我们学习Vue组件是什么?组件的特性和优势,Vue3计算属性,Vue3监听属性 (^-^)

Vue组件是什么?

  首先我们要了解Vue组件是什么?是用来干什么的?

  Vue组件是Vue.js框架中的基础构建块,它们允许开发者将UI分割成可复用的部分,每个部分都包含自己的逻辑、模板和样式。组件使得大型应用的开发变得更加模块化和易于管理。

Vue组件的用途

  1. 代码复用:通过创建组件,你可以将UI的某个部分抽象出来,然后在不同的地方重复使用它,而不需要每次都重写相同的代码。
  2. 模块化:组件使得应用的结构更加清晰,每个组件都负责自己的功能,这有助于开发者理解和维护代码。
  3. 可维护性:由于组件是独立的,因此可以单独测试、调试和更新,而不会影响到其他部分。
  4. 可扩展性:组件可以通过插槽(slots)、事件(events)和属性(props)等方式进行扩展和自定义,以适应不同的使用场景。

Vue组件的基本结构
一个Vue组件通常由以下部分组成:

  1. 模板(template):定义了组件的HTML结构。
  2. 脚本(script):包含了组件的逻辑,如数据、方法、计算属性等。
    样式(style):定义了组件的CSS样式,可以使用scoped属性来确保样式只作用于当前组件

Vue组件的示例代码
下面是一个简单的Vue组件示例,全局组件实例:

展示了如何创建一个Vue应用,定义一个全局组件,并将该组件挂载到DOM中的一个元素上
在这里插入图片描述
接下来我们再注册一个 button-counter 组件:
在这里插入图片描述
在每次点击后,计数器会加 1:
在这里插入图片描述

这段代码展示了Vue 3中如何创建应用、定义组件、使用响应式数据、定义模板以及将应用挂载到DOM元素上的基本概念

组件的特性和优势

  那我们了解Vue组件什么了,那它的特性或者是它的优势在于哪里嘞?

Vue组件的特性

  1. 可复用性
  • 组件允许你将UI的某个部分抽象出来,并在不同的地方重复使用。
  • 这减少了代码的冗余,提高了开发效率。
  1. 模块化
  • 组件将应用拆分成多个小的、独立的模块。
  • 每个模块都有自己的逻辑、模板和样式,使得应用的结构更加清晰。
  1. 封装性
  • 组件封装了内部的状态和行为,外部只能通过属性(props)和事件(events)与组件进行交互。
  • 这有助于保护组件的内部实现,防止外部直接修改组件的状态。
  1. 响应式数据绑定
  • Vue组件支持响应式数据绑定,当数据发生变化时,视图会自动更新。
  • 这减少了手动更新DOM的需要,提高了应用的性能和可靠性。
  1. 自定义元素
  • 组件可以像HTML元素一样被使用,这使得它们非常易于集成到现有的Web应用中。

Vue组件的优势

  1. 提高开发效率
  • 通过复用组件,减少了重复代码,加快了开发速度。
  1. 易于维护
  • 组件化的结构使得代码更加清晰,易于理解和维护。
  1. 增强可扩展性
  • 组件可以通过插槽、属性和事件等方式进行扩展和自定义。
  1. 促进团队协作
  • 组件化的开发方式使得不同的开发者可以并行工作,互不干扰。

Vue代码示例
以下是一个简单的Vue组件示例,它展示了如何创建一个可复用的按钮组件,并演示了上述特性中的一些。

<!-- Button.vue -->  
<template>  
  <button @click="handleClick" :class="buttonClass">{{ label }}</button>  
</template>  
  
<script>  
export default {  
  name: 'Button',  
  props: {  
    label: {  
      type: String,  
      required: true  
    },  
    buttonClass: {  
      type: String,  
      default: ''  
    },  
    onClick: {  
      type: Function,  
      default: null  
    }  
  },  
  methods: {  
    handleClick() {  
      if (this.onClick) {  
        this.onClick();  
      }  
    }  
  }  
};  
</script>  
  
<style scoped>  
/* 这里的样式只会应用于Button组件 */  
button {  
  padding: 10px 20px;  
  font-size: 16px;  
  cursor: pointer;  
}  
</style>

在另一个Vue文件中使用这个组件:

<!-- App.vue -->  
<template>  
  <div id="app">  
    <Button label="点击我" buttonClass="primary-button" :onClick="handleButtonClick" />  
  </div>  
</template>  
  
<script>  
import Button from './Button.vue';  
  
export default {  
  name: 'App',  
  components: {  
    Button  
  },  
  methods: {  
    handleButtonClick() {  
      alert('按钮被点击了!');  
    }  
  }  
};  
</script>  
  
<style>  
/* 全局样式 */  
.primary-button {  
  background-color: blue;  
  color: white;  
  border: none;  
  border-radius: 5px;  
}  
</style>

在这个例子中,Button组件接受三个属性:label(按钮上的文本)、buttonClass(按钮的CSS类名)和onClick(点击按钮时触发的回调函数)。组件内部使用了一个方法handleClick来处理点击事件,并调用传入的onClick回调函数(如果存在的话)。

通过这种方式,Button组件变得非常灵活和可复用,可以在不同的地方使用,并传递不同的属性和回调函数来满足不同的需求。同时,由于组件的封装性,它的内部实现被保护起来,外部只能通过属性进行交互,这有助于保持组件的独立性和稳定性。

Vue3计算属性

  Vue.js中的计算属性(computed properties)是基于它们的依赖进行缓存的响应式属性。只有当相关依赖发生改变时,它们才会重新求值。这使得计算属性非常适合用于执行复杂逻辑,同时保持高效和响应式。

  这段代码展示了如何使用Vue.js框架来创建一个简单的应用,该应用会将其数据(在这个例子中是message字符串)进行反转处理,并在页面上显示出来。这是Vue.js数据绑定和插值表达式功能的一个简单示例。
在这里插入图片描述
{{ message.split('').reverse().join('') }}:这是Vue的插值表达式。它的作用是显示message数据属性的内容,但是在显示之前,会对这个内容进行处理。
message.split(''):将message字符串分割成字符数组。
.reverse():将字符数组的元素顺序反转。
.join(''):将反转后的字符数组重新连接成一个字符串。

const app = {...}:这里定义了一个Vue应用的数据对象。data函数返回一个对象,这个对象包含了应用的数据。在这个例子中,数据对象有一个属性message,其初始值为’RUNOOB!!‘。
Vue.createApp(app).mount('#app'):这行代码创建了一个Vue应用实例,并将之前定义的app对象作为配置对象传入。然后,通过mount(’#app’)方法,将这个Vue应用挂载到页面上ID为app的div元素上

Vue3监听属性

Vue实例部分
定义了一个Vue应用程序实例app。
在data函数中,返回了一个对象,包含两个属性:kilometers和meters,初始值都为0。
使用watch选项来监听kilometers和meters属性的变化。

当kilometers变化时,如果当前活动的字段是kilometers,则将meters设置为kilometers乘以1000。

当meters变化时,如果当前活动的字段是meters,则将kilometers设置为meters除以1000。

使用Vue.createApp(app).mount(‘#app’)来创建并挂载Vue应用程序到id为app的div元素上

额外的$watch监听器
在Vue实例挂载后,使用vm.$watch方法额外监听kilometers属性的变化。
当kilometers的值变化时,这个监听器会更新id为info的p元素的innerHTML,显示修改前后的值
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2218129.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大模型学习方法之——大模型技术学习路线,小白也能学会大模型

技术学习无非涵盖三个方面&#xff0c;理论&#xff0c;实践和应用 大模型技术爆火至今已经有两年的时间了&#xff0c;而且大模型技术的发展潜力也不言而喻。因此&#xff0c;很多人打算学习大模型&#xff0c;但又不知道该怎么入手&#xff0c;因此今天就来了解一下大模型的…

java-uniapp小程序-引导关注公众号、判断用户是否关注公众号

目录 1、前期准备 公众号和小程序相互关联 准备公众号文章 注册公众号测试号 微信静默授权的独立html 文件 2&#xff1a; 小程序代码 webview页面代码 小程序首页代码 3&#xff1a;后端代码 1&#xff1a;增加公众号配置项 2&#xff1a;读取公众号配置项 3&…

【学习笔记】什么是MongoDB

文章目录 MongoDB 简介体系结构数据模型MongoDB 的特点 MongoDB 简介 学习一个东西就跟认识一个人一样&#xff0c;下面有情MongoDB来做个自我介绍 大家好&#xff0c;俺是MongoDB&#xff0c;是一个开源、高性能、无模式的文档型数据库&#xff0c;当初的设计俺就是用于简化开…

学习笔记(202410)

课程&#xff1a;Generative AI for Software Development 链接&#xff1a;吴恩达同步最新AI专业课&#xff0c;第54讲&#xff1a;用人工智能做软件开发--Generative AI for Software Development_哔哩哔哩_bilibili 时间&#xff1a;2024-10-12 至 概述&#xff1a;使用C…

强化学习与深度强化学习:深入解析与代码实现

个人主页&#xff1a;chian-ocean 文章专栏 强化学习与深度强化学习&#xff1a;深入解析与代码实现 强化学习&#xff08;Reinforcement Learning, RL&#xff09;是一种机器学习方法&#xff0c;通过智能体&#xff08;agent&#xff09;与环境&#xff08;environment&am…

【Linux】Linux常见指令及权限理解

1.ls指令 语法 &#xff1a; ls [ 选项 ][ 目录或文件 ] 功能 &#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其他信息。 常用选项&#xff1a; -a 列出目录下的所有文件&#xff0c;包括以 . 开头的隐含文…

无人机视角下火灾检测数据集 共12736张 标注文件为YOLO适用的txt格式。已划分为训练集、验证集、测试集。类别:Fire yolov5-v10通用

无人机视角下火灾检测数据集 共12736张 标注文件为YOLO适用的txt格式。已划分为训练集、验证集、测试集。类别&#xff1a;Fire yolov5-v10通用 无人机视角下火灾检测数据集 共12736张 标注文件为YOLO适用的txt格式。已划分为训练集、验证集、测试集。类别&#xff1a;Fire yol…

【Vue】Vue3.0(十)toRefs()和toRef()的区别及使用示例

上篇文章&#xff1a;Vue】Vue&#xff08;九&#xff09;OptionsAPI与CompositionAPI的区别 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Vue专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年10月15日11点13分 文章目录 toRefs()和toRe…

基于朴素贝叶斯的中文垃圾短信分类(含ui界面)

完整代码如下 基于朴素贝叶斯的中文垃圾短信分类、垃圾邮件分类。 可用于机器学习课程设计等。 import warnings warnings.filterwarnings(ignore) import os os.environ["HDF5_USE_FILE_LOCKING"] "FALSE" import pandas as pd import numpy as np fro…

LeetCode1004.最大连续1的个数

题目链接&#xff1a;1004. 最大连续1的个数 III - 力扣&#xff08;LeetCode&#xff09; 1.常规解法&#xff08;会超时&#xff09; 遍历数组&#xff0c;当元素是1时个数加一&#xff0c;当元素是0时且已有的0的个数不超过题目限制时&#xff0c;个数加一&#xff0c;若上…

重生之我爱上了k8s!

内容不全&#xff0c;待补充中...... 目录 一、k8s的部署 1.1.集群环境初始化 1.1.1.所有主机禁用swap 1.1.2.安装k8s部署工具 1.1.2.所有节点安装cri-docker 1.1.3.在master节点拉取K8S所需镜像 1.1.4.集群初始化 1.1.5.其他两台主机加入集群 1.1.6.安装flannel网络…

微积分复习笔记 Calculus Volume 1 - 2.5 Precise Definition of a Limit

2.5 The Precise Definition of a Limit - Calculus Volume 1 | OpenStax

Python基础——类与对象

类与对象的理解&#xff1a; 在程序中我们将类看作是设计图纸&#xff0c;对象则是根据这个图纸生产的产品。面向对象编程就是使用对象编程&#xff0c;在类中我们定义成员属性和方法。 来看下面这个例子&#xff0c;创建student类&#xff0c;定义对象并对属性赋值。 class S…

Golang | Leetcode Golang题解之第480题滑动窗口中位数

题目&#xff1a; 题解&#xff1a; type hp struct {sort.IntSlicesize int } func (h *hp) Push(v interface{}) { h.IntSlice append(h.IntSlice, v.(int)) } func (h *hp) Pop() interface{} { a : h.IntSlice; v : a[len(a)-1]; h.IntSlice a[:len(a)-1]; return v }…

十大云手机排行榜:哪个云手机更好用?

近些年&#xff0c;市场上涌现出许多云手机产品&#xff0c;不同产品适合的应用场景也各不相同。在选用云手机之前&#xff0c;企业和个人用户需要了解它们的功能、特点以及适用的场景。本文将对当前主流的云手机进行对比&#xff0c;帮助大家挑选出最适合的云手机产品。 1. 红…

200Kg大载重多旋无人机价格高昂技术分析

200Kg大载重多旋无人机作为一种高度专业化的航空工具&#xff0c;其价格相较于普通无人机显著较高&#xff0c;这主要是由于其在技术设计和生产过程中所需的高要求所致。以下是对其价格高昂的技术分析&#xff1a; 一、高性能材料与结构设计 1. 高强度轻量化材料&#xff1a;…

KafKa 集群【docker compose】

文章目录 主机准备部署编辑 docker-compose.ymlcontrollerbroker生成cluster_id 一篇完整的 docker-compose.yml 文件查看集群状态使用 kafka-ui 查看拉取 kafka-ui添加集群查看集群状态 使用命令行查看 配置讲解controllerbroker 主机准备 IPcontroller idbroker id192.168.1…

FreeRTOS的队列管理

“队列”提供了一种任务到任务、任务到中断和中断到任务的通信机制。 队列特性 数据存储 队列可以容纳有限数量的固定大小的数据项。队列可以容纳的最大项目数称为其“长度”。每个数据项的长度和大小都是在创建队列时设置的。 队列通常用作先进先出&#xff08;FIFO&#xf…

游戏逆向基础-跳出游戏线程发包

附加游戏后下断点 bp ws2_32.send send函数断下后&#xff0c;可以看到数据地址每次都一样 可以说明这个游戏是线程发包&#xff0c;所以直接在数据窗口中转到这个地址&#xff0c;然后对这个地址下硬件写入断点。 下了硬件写入断点后可以一层一层往上面跟&#xff0c;确定写…

RHCE--at,crontab例行性工作

一&#xff1a;安装at &#xff08;1&#xff09;配置yum仓库&#xff1a;以配置网络源举例&#xff1a; 先在/etc/yum.repos.d/ 目录下创建一个以.repo结尾的文件 vim /etc/yum.repos.d/aliyun.repo 写入可以在阿里云镜像站查找appstream和baseos的地址阿里巴巴开源镜像站…