vue学习12.1

1.绑定style样式

<template><div><button @click="increaseFontSize">增大字体</button><div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">动态样式示例</div></div>
</template><script>
export default {data() {return {activeColor: 'blue',fontSize: 16};},methods: {increaseFontSize() {this.fontSize += 2; // 增加字体大小}}
};
</script>

2.条件渲染

<template><div><button @click="toggle">点击切换显示</button><p v-if="isVisible">这是一个可见的段落。</p><p v-else>段落隐藏了。</p></div>
</template><script>
export default {data() {return {isVisible: true};},methods: {toggle() {this.isVisible = !this.isVisible; // 切换可见性}}
};
</script>

3.列表渲染

<template><ul><li v-for="item in items" :key="item.id">{{ item.text }}</li></ul>
</template><script>
export default {data() {return {items: [{ id: 1, text: 'Item 1' },{ id: 2, text: 'Item 2' },{ id: 3, text: 'Item 3' }]};}
};
</script>

4.key作用与原理(未完成)

key 是 Vue 中用于跟踪节点身份的特殊属性,在进行虚拟 DOM 更新时用于优化:

作用:帮助 Vue 更准确地识别节点,提高渲染性能。

原理:通过 key,Vue 可以精确地复用或者重新创建元素,避免不必要的DOM操作。

5.列表过滤

<template><ul><li v-for="item in filteredList" :key="item.id">{{ item.text }}</li></ul>
</template><script>
export default {data() {return {items: [{ id: 1, text: 'Item 1', visible: true },{ id: 2, text: 'Item 2', visible: false },{ id: 3, text: 'Item 3', visible: true }]};},computed: {filteredList() {return this.items.filter(item => item.visible); // 只返回可见的项}}
};
</script>

6.列表排序

<template><ul><li v-for="item in sortedList" :key="item.id">{{ item.text }}: {{ item.value }}</li></ul>
</template><script>
export default {data() {return {items: [{ id: 1, text: 'Item 1', value: 50 },{ id: 2, text: 'Item 2', value: 10 },{ id: 3, text: 'Item 3', value: 30 }]};},computed: {sortedList() {return this.items.slice().sort((a, b) => a.value - b.value); // 按值排序}}
};
</script>

slice,复制。不在原来的数组修改。sort排序函数。

  • sort() 方法: 用于对数组进行排序。sort 方法接受一个比较函数。
  • 比较函数 (a, b) => a.value - b.value: 这个函数接受两个参数,分别是数组中的两个元素:
    • 如果返回值小于 0,则 a 会被排在 b 之前。
    • 如果返回值大于 0,则 b 会被排在 a 之前。
    • 如果返回值等于 0,则原顺序不变。
    • 在这个例子中,按照每个对象的 value 属性进行升序排序。

7.监测数据的原理

1)数据劫持

Vue 通过 Object.defineProperty 方法实现对数据的劫持。它会将 Vue 实例中的数据属性转换为 getter 和 setter,以便对数据的读写进行监控。

  • 获取数据(getter)时,Vue 会将依赖该数据的组件记录下来。
  • 设置数据(setter)时,Vue 会通知所有依赖该数据的组件重新渲染。

2) 依赖收集

在数据读取时,Vue 会记录哪些 watcher 依赖了这个数据(即哪些视图依赖了这个数据)。这个过程称为依赖收集。在 Vue 的实现中,watcher 是一个用于通知 Vue 进行视图更新的类。

3)响应式系统

当数据变化时,触发 setter,会调用相应的 watcher 的 update 方法,通知 Vue 进行视图更新。Vue 通过 虚拟 DOM 更新只改动那些有变化的部分,从而提高性能。

4)Vue 3 的 Proxy 机制

在 Vue 3 中,Vue 替换了 Object.defineProperty,使用了 Proxy 进行数据劫持。

// Vue 2.x 代码示例
new Vue({data() {return {message: 'Hello Vue!'};},created() {console.log(this.message); // 触发 getter},methods: {updateMessage(newMessage) {this.message = newMessage; // 触发 setter,更新视图}}
});

8.过滤器

<template><div>{{ message | capitalize }}</div>
</template><script>
export default {data() {return {message: 'hello world'};},filters: {capitalize(value) {if (!value) return '';return value.charAt(0).toUpperCase() + value.slice(1);}}
};
</script>
  1. 定义过滤器

    • filters:这是一个 Vue 组件的选项,定义了可以在模板中使用的过滤器。
    • capitalize:过滤器的名称,可以在模板中用 | capitalize 调用。
  2. 参数 value

    • 这个参数是传入过滤器的值,通常是一个字符串。
  3. 检查 value

    • if (!value) return '';:如果 value 是 false(例如 nullundefined 或空字符串),则返回一个空字符串。这防止后续代码在处理 undefined 或 null 时出错。
  4. 字符串处理

    • value.charAt(0).toUpperCase():获取字符串的第一个字符并将其转换为大写。
    • value.slice(1):获取字符串从第二个字符开始的部分。
    • 将这两个部分拼接起来,形成处理后的字符串。

 9.各种指令

1.v-text

替代{{ }}

<template><div v-text="message"></div>
</template><script>
export default {data() {return {message: 'Hello, Vue!'};}
};
</script>

2.v-html

v-html 用于更新元素的 innerHTML,能解析 HTML 字符串。

<template><div v-html="htmlContent"></div>
</template><script>
export default {data() {return {htmlContent: '<p>This is <strong>HTML</strong> content</p>'};}
};
</script>

3.v-ones

v-once 用于只渲染元素和组件一次,之后的更新不再影响这些元素。

<template><div v-once>{{ message }}</div>
</template><script>
export default {data() {return {message: 'This will not change even if the data updates'};}
};
</script>

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

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

相关文章

【Linux】进程控制-----进程替换

目录 一、为什么要进行进程替换&#xff1a; 二、进程替换的原理&#xff1a; 三、exec家族&#xff1a; 1、execl&#xff1a; 2、execlp&#xff1a; 3、execv&#xff1a; 4、execvp&#xff1a; 5、execle和execve ​编辑 putenv&#xff1a; 一、为什么要进行进程…

基于hexo框架的博客搭建流程

这篇博文讲一讲hexo博客的搭建及文章管理&#xff0c;也算是我对于暑假的一个交代 &#xff01;&#xff01;&#xff01;注意&#xff1a;下面的操作是基于你已经安装了node.js和git的前提下进行的&#xff0c;并且拥有github账号 创建一个blog目录 在磁盘任意位置创建一个…

Git远程仓库操作

文章目录 远程仓库连接Gitee克隆代码 多人协同问题说明 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Git专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月1日13点10分 远程仓库 Git 是分布式版本控制系统&#xff0c;同一个 Git …

新能源汽车充电基础设施短板问题多,如何实现高效、综合、智能化管理?

随着城市经济的发展&#xff0c;人民生活水平的提升&#xff0c;新能源汽车保有量快速增长&#xff0c;而日益增长的新能源汽车需求与充电基础设施建设不平衡的矛盾日益突出。由于停车泊位充电基础设施总量不足、布局待优化、利用效率低、建设运营存在短板问题等原因&#xff0…

【element-tiptap】导出word

前言&#xff1a;前面的文章 【element-tiptap】导入word并解析成HTML 已经介绍过如何在 element-tiptap 中导入 word。这篇文章来探究一下怎么将编辑器的内容导出成word &#xff08;一&#xff09;创建菜单项 1、图标 首先上 fontawesome 这个网站上找一个合适的图标&…

LeetCode题解:34.在排序数组中查找元素的第一个和最后一个位置【Python题解超详细,二分查找法、index法】,知识拓展:index方法详解

题目描述 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1&…

Cereal,一个轻量级的 C++ 序列化库!

嗨&#xff0c;大家好&#xff01;我是橙子。今天咱们来探索超棒的 Cereal 库&#xff0c;它能轻松搞定 C数据的序列化与反序列化&#xff0c;就像神奇的魔法&#xff0c;把数据变成能存储和传输的格式&#xff0c;然后又能变回来&#xff0c;超有趣哦&#xff01;快来开启学习…

理解Java集合的基本用法—Collection:List、Set 和 Queue,Map

本博文部分参考 博客 &#xff0c;强烈推荐这篇博客&#xff0c;写得超级全面&#xff01;&#xff01;&#xff01; 图片来源 Java 集合框架 主要包括两种类型的容器&#xff0c;一种是集合&#xff08;Collection&#xff09;&#xff0c;存储一个元素集合&#xff08;单列…

使用 PDF API 合并 PDF 文件

内容来源&#xff1a; 如何在 Mac 上合并 PDF 文件 1. 注册与认证 您可以注册一个免费的 ComPDFKit API 帐户&#xff0c;该帐户允许您在 30 天内免费无限制地处理 1,000 多个文档。 ComPDFKit API 使用 JSON Web Tokens 方法进行安全身份验证。从控制面板获取您的公钥和密钥&…

架构师:Dubbo 服务请求失败处理的实践指南

1、简述 在分布式服务中,服务调用失败是不可避免的,可能由于网络抖动、服务不可用等原因导致。Dubbo 作为一款高性能的 RPC 框架,提供了多种机制来处理服务请求失败问题。本文将介绍如何在 Dubbo 中优雅地处理服务请求失败,并结合具体实践步骤进行讲解。 2、常见处理方式 …

加载不同本地gltf模型,模型内容不更新的解决方案

相关链接 http://mars3d.cn/editor-vue.html?keyex_6_2_2&idlayer-graphic/draw/draw-model 问题内容 加载本地gltf模型的时候&#xff0c;不clear图层&#xff0c;再打开其他本地gltf&#xff0c;gltf的内容就不更新 重现步骤 进入官网示例&#xff0c;贴入以下代码…

LabVIEW实现串口调试助手

目录 1、串口通信原理 2、硬件环境部署 3、串口通信函数 4、程序架构 5、前面板设计 6、程序框图设计 本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合实际案例,展示如何利用LabVIEW和常用模块实现物联…

云计算的发展历史与未来展望

云计算的起源与发展 云计算的概念最早可以追溯到20世纪60年代&#xff0c;当时的计算机科学家约翰麦卡锡&#xff08;John McCarthy&#xff09;提出了“按需提供计算能力”的构想。尽管这一理念在当时的技术条件下无法实现&#xff0c;但为云计算的未来发展奠定了理论基础。 …

【51单片机】程序实验910.直流电机-步进电机

主要参考学习资料&#xff1a;B站【普中官方】51单片机手把手教学视频 前置知识&#xff1a;C语言 单片机套装&#xff1a;普中STC51单片机开发板A4标准版套餐7 码字不易&#xff0c;求点赞收藏加关注(•ω•̥) 有问题欢迎评论区讨论~ 目录 程序实验9&10.直流电机-步进电机…

Linux——自定义简单shell

shell 自定义shell目标普通命令和内建命令&#xff08;补充&#xff09; shell实现实现原理实现代码 自定义shell 目标 能处理普通命令能处理内建命令要能帮助我们理解内建命令/本地变量/环境变量这些概念理解shell的运行 普通命令和内建命令&#xff08;补充&#xff09; …

如何把Qt exe文件发送给其他人使用

如何把Qt exe文件发送给其他人使用 1、先把 Debug改成Release2、重新构建项目3、运行项目4、找到release文件夹5、新建文件夹&#xff0c;存放exe文件6、打开qt控制台串口7、下载各种文件8、压缩&#xff0c;发送压缩包给别人 1、先把 Debug改成Release 2、重新构建项目 3、运行…

Kafka的消费消息是如何传递的?

大家好&#xff0c;我是锋哥。今天分享关于【Kafka的消费消息是如何传递的&#xff1f;】面试题。希望对大家有帮助&#xff1b; Kafka的消费消息是如何传递的&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中&#xff0c;消息的消费是通过消费…

el-drawer如何实现增加resize拖曳改变宽度大小,通过小图标进行拖拽

请先看效果图 我主要是通过这个按钮来进行拖拽的&#xff0c;记住自行添加按钮图片 第一步 新建一个myDrawerDrag.js文件 import Vue from vueVue.directive(drawerDrag, {bind(el, binding, vnode, oldVnode) {const minWidth 400const dragDom el.querySelector(.el-drawe…

C#窗体简单登录

创建一个Windows登录程序&#xff0c;创建两个窗体&#xff0c;一个用来登录&#xff0c;一个为欢迎窗体&#xff0c;要求输入用户名和密码&#xff08;以个人的姓名和学号分别作为用户名和密码&#xff09;&#xff0c;点击【登录】按钮登录&#xff0c;登录成功后显示欢迎窗体…

Java基础全解:构建扎实编程技能

文章目录 1. Hello World 程序深入解析&#xff1a; 2. 数据类型深入解析&#xff1a; 3. 条件判断深入解析&#xff1a; 4. 循环结构深入解析&#xff1a; 5. 数组深入解析&#xff1a; 6. 方法定义与调用深入解析&#xff1a; 1. Hello World 程序 深入解析&#xff1a; 类…