Vue学习笔记(六)

模板引用(获取DOM 操作)

虽然Vue的声明性渲染模型为你抽象了大部分对DOM的直接操作,但在某些情况下,我们仍然需要直接访问底层DOM元素。要实现这一点,我们可以使用特殊的refattribute。

挂载结束后引用都会被暴露在this.$refs之上。

<script>/*** 内容改变:{{模板语法}}* 属性改变:v-bind* 事件改变:v-on*/export default {data() {return {content: "内容"}},methods: {getElementHandle() {console.log(this.$refs.container);console.log(this.$refs.username.value);}}}
</script><template><div ref="container" class="container">{{ content }}</div><input type="text" ref="username"><button @click="getElementHandle">获取元素</button>
</template>

组件组成

组件最大的优势就是可复用性

当使用构建步骤时,我们一般会将Vue组件定义在一个单独的.vue文件中,这被叫做单文件组件(简称SFC)

组件组成结构

<script>
export default {data() {return {message: "基础组件组成"}}
}
</script><template><div class="container">{{ message }}</div>
</template><!-- scoped 限定样式只在当前组件生效 -->
<style scoped> .container {width: 100%;height: 100%;color: red;}
</style>

组件引用

<script>
//1.引入组件
import Mycomponent from './components/Mycomponent.vue'
// 2.注入组件
export default {components: {Mycomponent}
}
</script><template><!-- 3.使用组件 --><Mycomponent />
</template><style></style>

setup可以省略注入组件步骤

组件的嵌套关系

20241027134619

组件允许我们将UI划分为独立的、可重用的部分,并且可以对每个部分进行单独的思考。在实际应用中,组件常常被组织成层层嵌套的树状结构。

这和我们嵌套HTML元素的方式类似,Vue实现了自己的组件模型,使我们可以在每个组件内封装自定义内容与逻辑。

创建组件及引用关系

App.vue

<script>import Header from './pages/Header.vue';import Main from './pages/Main.vue';import Aside from './pages/Aside.vue';export default {name: 'App',components: {Header,Main,Aside}}
</script><template><Header /><Main /><Aside />
</template><style></style>

Header.vue

<template><h3>Header</h3>
</template><style scoped>
h3 {width: 100%;height: 100px;border: 5px solid #999;text-align: center;line-height: 100px;box-sizing: border-box;
}
</style>

Main.vue

<script>
import Artice from './Artice.vue';
export default {components: {Artice}
}
</script><template><div class="main"><h3>Main</h3><Artice /><Artice /></div>
</template><style scoped>
.main {float: left;width: 70%;height: 400px;border: 5px solid #999;box-sizing: border-box;
}
</style>

Aside.vue

<script>
import item from './item.vue';
export default {components: {item}
}
</script><template><div class="aside"><h3>Aside</h3><item /><item /></div>
</template><style scoped>
.aside {float: right;width: 30%;height: 400px;border: 5px solid #999;box-sizing: border-box;
}
</style>

Article.vue

<script>
export default {}
</script><template><h3>Article</h3>
</template><style scoped>
h3 {width: 80%;margin: 0 auto;text-align: center;line-height: 100px;box-sizing: border-box;margin-top: 50px;background: #999;
}
</style>

Item.vue

<template><h3>Item</h3>
</template><style scoped>
h3 {width: 80%;margin: 0 auto;text-align: center;line-height: 100px;box-sizing: border-box;margin-top: 10px;background: #999;
}
</style>

效果展示

20241027142246

组件注册方式

一个Vue组件在使用前需要先被“注册”,这样Vue才能在渲染模板时找到其对应的实现。组件注册有两种方式:

  1. 全局注册
  2. 局部注册

全局注册

main.js


import { createApp } from 'vue'
import App from './App.vue'
import Header from './pages/Header.vue'const app = createApp(App)
//在这里引入全局样式
app.component('Header', Header)
app.mount('#app')

App.vue

<script>// import Header from './pages/Header.vue';import Main from './pages/Main.vue';import Aside from './pages/Aside.vue';export default {name: 'App',components: {// Header,Main,Aside}}
</script><template><Header /><Main /><Aside />
</template><style></style>

无需在其他Vue文件下注册引入,可以直接使用

坏处

  1. 全局注册,但并没有被使用的组件无法在生产打包时被自动移除(也叫"tree-shaking")。如果你全局注册了一个组件,即使它并没有被实际使用,它仍然会出现在打包后的JS文件中。
  2. 全局注册在大型项目中使项目的依赖关系变得不那么明确。在父组件中使用子组件时,不太容易定位子组件的实现。和使用过多的全局变量一样,这可能会影响应用长期的可维护性。

局部注册(推荐)

局部注册需要使用components选项

<script>
//1.引入组件
import item from './item.vue';
//2.注册组件
export default {components: {item}
}
</script><template><div class="aside"><h3>Aside</h3><!-- 3.使用组件 ----><item /><item /></div>
</template><style scoped>
.aside {float: right;width: 30%;height: 400px;border: 5px solid #999;box-sizing: border-box;
}
</style>

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

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

相关文章

QT linux 打包时库和插件如何生成

在Linux下使用Qt创建应用程序包时&#xff0c;插件需要以下步骤生成&#xff1a; 确保你的Qt应用程序已经正确编译并且能够运行。 使用linuxdeployqt工具来打包你的应用程序。这个工具会自动收集所需的库和插件&#xff0c;并将它们打包到一个AppImage或者一个tarball中。 首…

.NetCore中事务没有正常完成

1. 示例代码 async Task<string> FunCode() {//业务代码using var trans TransactionHelper.GetTransactionScope();//插入表A&#xff0c;A中有Name字段await 数据库操作1;await 数据库操作2; trans.Complete();//调用其他系统接口await ERP.SendContent(); } 2. …

[NeetCode 150] Counting Bits

Counting Bits Given an integer n, count the number of 1’s in the binary representation of every number in the range [0, n]. Return an array output where output[i] is the number of 1’s in the binary representation of i. Example 1: Input: n 4Output: […

QT项目-仿QQ聊天(带宠物系统)

目录 一&#xff0c;项目介绍 二&#xff0c;开发环境 三&#xff0c;涉及技术 四&#xff0c;项目效果示例图 1&#xff0c;登录界面 2&#xff0c;主界面 3&#xff0c;聊天界面 4&#xff0c;功能界面 5&#xff0c;宠物界面 一&#xff0c;项目介绍 这是一个基于u…

Sampling采样与Virtual Columns虚拟列

1.大数据体系下&#xff0c;在真正的企业环境中&#xff0c;很容易出现很大的表&#xff0c;比如体积达到 TB 级别.对这种表一个简单的 SELECT * 都会非常的慢&#xff0c;哪怕 LIMIT 10 想要看 10 条数据&#xff0c;也会走 MapReduce 流程 这个时间等待是不合适的.Hive 提供的…

Kafka之消费者客户端

1、历史上的二个版本 与生产者客户端一样&#xff0c;在Kafka的发展过程当中&#xff0c;消费者客户端主要有两个大的版本&#xff1a; 旧消费者客户端&#xff08;Old Consumer&#xff09;&#xff1a;基于Scala语言开发的版本&#xff0c;又称为Scala消费者客户端。新消费…

蚁剑连接本地木马文件报错

项目场景&#xff1a; 本地搭建php和蚁剑环境&#xff0c;连接本地木马文件ma.php 问题描述 使用蚁剑连接localhost时报错 错误{ "address":"127.0.0.1" "code":"ECONNREFUSED", "errno":"ECONNREFUSED", &qu…

【JVM】——JVM运行机制、类加载机制、内存划分

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;JVM引入 1&#xff1a;编程语言 2&#xff1a;JAVA运行机制 二&#xff1a;JVM中内存…

1U服务器和Hyper-V虚拟机使用记录

记录最近接触服务器和虚拟机的一些使用操作知识 背景&#xff1a;1U服务器上架使用&#xff0c;备份其他服务器vm虚拟机&#xff0c;Hyper-V管理虚拟机使用测试 设备&#xff1a;IBM3550服务器交换机&#xff0c; 移动硬盘&#xff1a;附加存储盘&#xff0c; u盘1&#xff1…

Openshift上使用Elasticsearch (ECK) Operator部署ES

部署 7.16.2 版本 Elasticsearch (ECK) Operator部署ES oc new-project middleware-elasticsearchapiVersion: elasticsearch.k8s.elastic.co/v1 kind: Elasticsearch metadata:name: es-testnamespace: middleware-elasticsearch spec:http:tls:selfSignedCertificate:disab…

go高并发之路——本地缓存

一、使用场景 试想一个场景&#xff0c;有一个配置服务系统&#xff0c;里面存储着各种各样的配置&#xff0c;比如直播间的直播信息、点赞、签到、红包、带货等等。这些配置信息有两个特点&#xff1a; 1、并发量可能会特别特别大&#xff0c;试想一下&#xff0c;一个几十万…

Anchor DETR:Transformer-Based目标检测的Query设计

写在前面 文中指出之前DETR-like算法存在以下问题&#xff1a; 之前DETR-liked检测算法里&#xff0c;object query是一组可学习的嵌入表示&#xff08;就是一组256-d的向量&#xff09;&#xff0c;缺乏明确的物理意义&#xff0c;不能解释它们会关注什么地方。每个object q…

探索现代软件开发中的持续集成与持续交付(CI/CD)实践

探索现代软件开发中的持续集成与持续交付&#xff08;CI/CD&#xff09;实践 随着软件开发的飞速进步&#xff0c;现代开发团队已经从传统的开发模式向更加自动化和灵活的开发流程转变。持续集成&#xff08;CI&#xff09; 与 持续交付&#xff08;CD&#xff09; 成为当下主…

【SSM-Day5】SpringMVC

【SSM-Day5】SpringMVC Web->Servlet->Servlet容器MVC档案SpringMVC档案SpringMVC核心操作&#x1f4e2;建立连接RequestMapping&#xff1a;实现路由映射Controller/ResponseBody&#xff1a;表示Spring某个类是否可以接收HTTP请求 &#x1f4e2;接收请求1. 直接接收一个…

【skywalking 】选择Elasticsearch存储

介绍 skywalking支持 Elasticsearch 和 OpenSearch 作为存储。 OpenSearch 是 ElasticSearch 7.11 的一个分支&#xff0c;但在 Apache 2.0 中获得许可。 OpenSearch 存储与 ElasticSearch 共享相同的配置。为了激活 OpenSearch 作为存储&#xff0c;请将存储提供程序设置为e…

MySQL中的Redo Log、Undo Log和Binlog:深入解析

引言 在数据库管理系统中&#xff0c;日志是保障数据一致性和完整性的关键机制。MySQL作为一种广泛使用的关系型数据库管理系统&#xff0c;提供了多种日志类型来满足不同的需求。本文将详细介绍MySQL中的Redo Log、Undo Log和Binlog&#xff0c;从背景、业务场景、功能、底层…

【QT】Qt窗口(上)

个人主页~ Qt窗口 一、菜单栏二、工具栏三、状态栏四、浮动窗口 Qt窗口是通过QMainWindow类来实现的&#xff0c;我们之前的学习是通过QWidget类实现的 QMainWindow包含一个菜单栏Menu Bar②&#xff0c;多个工具栏Tool Bars③&#xff0c;多个浮动窗口Dock Widgets&#xff0c…

CISC(Complex Instruction Set Computer)和RISC(Reduced Instruction Set Computer)

CISC&#xff08;Complex Instruction Set Computer&#xff09;和RISC&#xff08;Reduced Instruction Set Computer&#xff09;是两种不同类型的指令集架构&#xff08;ISA&#xff09;&#xff0c;它们在设计理念、指令复杂性、寻址方式、实现方式以及应用场景上存在显著差…

关闭windows更新方法

在windows更新里选择暂停windows更新 然后按下winr&#xff0c;输入regedit 在注册表里找到 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings\PauseUpdatesExpiryTime 修改时间即可

什么是事件冒泡?如何阻止事件冒泡和浏览器默认事件?

事件冒泡是浏览器事件处理模型中的一个重要概念。当一个事件发生在某个元素上时&#xff0c;它会首先在该元素上触发&#xff0c;然后逐层向上冒泡到其父元素&#xff0c;直到根元素&#xff08;通常是 document&#xff09;为止。这意味着如果在一个嵌套的元素上触发了事件&am…