vue学习12.1

news2024/12/26 18:48:05

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.coloradmin.cn/o/2252037.html

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

相关文章

开发一套ERP 第八弹 RUst 插入数据

更全面的报错,方便检查错误在哪里,现代高级语言越来越智能 还是得看下原文档怎么操作的 src 目录为crate 的根目录 想在crate 中模块相互引入需要在 main 中声明,各个模块,然后才能在各个模块中相互引入和使用 原始工程引入,避免直接使用 lib.rs 回合cargo 中的一些 工程管理出…

课程答疑微信小程序设计与实现

私信我获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 课程答疑微信小程序设计与实现 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了课程答疑微信小程序设计与实现的开发全过程。通过分析…

【时间之外】IT人求职和创业应知【53】-东莞也转型

目录 新闻一&#xff1a;Freysa挑战赛&#xff1a;人类智慧与策略战胜AI&#xff0c;奖金高达4.7万美元 新闻二&#xff1a;中国生成式AI用户规模突破2.3亿&#xff0c;行业应用广泛 新闻三&#xff1a;2024东莞智能终端新技术推广会圆满举行&#xff0c;聚焦AI与智能终端融…

ARP欺骗-监控网络

kali: 使用arp-scan -l 查看同个局域网 windows arp -a 查看地址的物理地址 192.168.21.2 对应的是00-50-56-f5-d5-f0 攻击利用: 我们要让目标ip的流量经过我的网卡,从网关出去 使用的开启 echo 1 > /proc/sys/net/ipv4/ip_forward 当为0时&#xff0c;我们不转发&…

Cesium 当前位置矩阵的获取

Cesium 位置矩阵的获取 在 3D 图形和地理信息系统&#xff08;GIS&#xff09;中&#xff0c;位置矩阵是将地理坐标&#xff08;如经纬度&#xff09;转换为世界坐标系的一种重要工具。Cesium 是一个强大的开源 JavaScript 库&#xff0c;用于创建 3D 地球和地图应用。在 Cesi…

网络编程项目1

基于TCP通信控制红色机械臂和蓝色机械臂的运作 1、项目要求&#xff1a;通过w&#xff08;红色臂角度增大&#xff09;s&#xff08;红色臂角度减小&#xff09;d&#xff08;蓝色臂角度增大&#xff09;a&#xff08;蓝色臂角度减小&#xff09; #include <myhead.h> #…

使用GitZip for github插件下载git仓库中的单个文件

背景&#xff1a;git仓库不知道抽什么疯&#xff0c;下载不了单个文件&#xff0c;点击下载没有反应&#xff0c;遂找寻其他方法&#xff0c;在这里简单记录下。 使用GitZip for github插件下载仓库中的单个文件 1、首先在浏览器安装插件&#xff0c;并确保为打开状态。 2、然…

Y20030022基于PHP+MYSQL疫苗预约管理网站的设计与实现 源码 初稿

旅游度假区微信小程序 1.摘要2.研究背景和意义3. 系统功能4.界面展示5.源码获取 1.摘要 疫苗预约管理系统是为了提供一个高效、便捷、安全的平台&#xff0c;方便用户进行疫苗预约接种&#xff0c;并优化疫苗接种的管理工作。通过该系统&#xff0c;用户可以随时随地进行预约操…

C#中判断两个 List<T> 的内容是否相等

ET实现游戏中邮件系统逻辑思路&#xff08;服务端&#xff09;_游戏邮件系统设计-CSDN博客 场景&#xff1a;今天遇到一个BUG&#xff0c;在服务器重启的时候&#xff08;体验服&#xff09;&#xff0c;玩家之前接收的邮件又重新接收了一次&#xff0c;但是两封邮件的ID是不同…

算法编程题-优势洗牌

算法编程题-优势洗牌 原题描述方法一、排序二分查找思路简述代码实现复杂度分析 方法二、红黑树思路简述代码实现复杂度分析 方法三、贪心思路简述代码实现复杂度分析 摘要&#xff1a;本文将对LeetCode原题优势洗牌进行介绍&#xff0c;从最容易想到的方法开始&#xff0c;循序…

【从零开始的LeetCode-算法】3264. K 次乘运算后的最终数组 I

给你一个整数数组 nums &#xff0c;一个整数 k 和一个整数 multiplier 。 你需要对 nums 执行 k 次操作&#xff0c;每次操作中&#xff1a; 找到 nums 中的 最小 值 x &#xff0c;如果存在多个最小值&#xff0c;选择最 前面 的一个。将 x 替换为 x * multiplier 。 请你…

ERROR in [eslint] Invalid Options ‘extensions‘ has been removed.

看着这个报错 感觉是版本不对引起的 ERROR in [eslint] Invalid Options: - Unknown options: extensions - extensions has been removed. ERROR in Error: Child compilation failed: [eslint] Invalid Options: - Unknown options: extensions - extensions has b…

SpringCloud书单推荐

重新定义SpringCloud实战 129 疯狂SpringCloud微服务架构实战 SpringBootSpringCloud微服务开发实战 点餐系统 SpringCloud微服务架构实战派 日访问量3000W平台 SpringCloud Alibaba微服务原理与实战 Spring CloudNginx 极简spring cloud实战 Spring Cloud 微服…

试题转excel;试题整理工具;试卷转excel;word转excel

一、问题描述 我父亲是一名教师&#xff0c;偶尔会需要将试卷转excel&#xff0c;方便管理处理一些特别重要的题目 于是&#xff0c;就抽空写一个专门将试题转excel的工具&#xff0c;便于各位教师从业者和教育行业的朋友更好的整理试题&#xff0c;减少一点重复枯燥的工作 …

Node.js Fastify装饰器:提升你的API性能与功能

在Node.js的世界中&#xff0c;Fastify以其卓越的性能和插件化架构脱颖而出&#xff0c;成为构建高效API的首选框架之一。Fastify的装饰器功能&#xff0c;允许开发者以声明式的方式增强和扩展核心对象&#xff0c;如请求&#xff08;Request&#xff09;和响应&#xff08;Res…

数据库管理-第267期 23ai:Oracle Data Redaction演示(20241128)

数据库管理267期 2024-11-286 数据库管理-第267期 23ai&#xff1a;Oracle Data Redaction演示&#xff08;20241128&#xff09;1 示例表及数据2 创建编校策略2.1 名字全编校2.2 电话部分编校 3 DML演示3.1 场景13.2 场景2 总结 数据库管理-第267期 23ai&#xff1a;Oracle Da…

C#VB.Net项目一键多国语言显示

如何在项目什么都不做一键支持多国语言显示 开始我们的一键快捷使用之旅 01.创建多语言项目 02.一键批量窗口开启本地化,添加选中内容添加Mu方法 03.一键快捷翻译 04.运行查看效果 01.创建多语言项目 创建多语言项目前,请先下载安装&#xff0c;注册并登录. 为了便于演示这…

像素流送api ue多人访问需要什么显卡服务器

关于像素流送UE推流&#xff0c;在之前的文章里其实小芹和大家聊过很多&#xff0c;不过今天偶然搜索发现还是有很多小伙伴&#xff0c;在搜索像素流送相关的问题&#xff0c;搜索引擎给的提示有这些。当然这些都是比较短的词汇&#xff0c;可能每个人真正遇到的问题和想获取的…

构建高可用系统设计OpenStack、Docker、Mesos和Kubernetes(简称K8s)

如果构建高可用、高并发、高效运维的大型系统 大型系统架构设计包括业务层设计、服务层设计、基础架层设计、存储层设计、网络层协同设计来完成。 一、业务层 根据主要业务范畴的分类和特征提取&#xff0c;抽象出独立的业务系统&#xff0c;分别统计系统的用户角色群体、访…

零基础Python学习

1.环境搭建 1.1 安装运行环境python3.13 Welcome to Python.org 1.2 安装集成开发环境PyCharm PyCharm: the Python IDE for data science and web development 1.3 创建项目 && 设置字体 2.基础语法 2.1 常量与表达式 在python中整数除整数不会优化&#xff0c;所…