小白最近比较闲,于是整理了一些日常使用的VUE组件

这篇具有很好参考价值的文章主要介绍了小白最近比较闲,于是整理了一些日常使用的VUE组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.VUE中给Dom元素动态添加样式

    VUE中,给 Dom 元素动态添加样式。
    比如判断通过页面传递过来的值和env文件中配置的值是否一致,来动态添加元素的类,同时类的样式在 Style 中已经写好。
 此时动态类名需要在 Dom 元素加载完成前添加上,否则样式可能添加不上。
 这种情况下可以在  computed 中调用 process.env 中的属性用于做判断,为 Dom 元素动态添加类。
 这样添加的类在 Dom 元素加载完成前就添加上了,样式可以起效。

 2.VUE中使用Debugger

 在VUE中使用 debugger 可以在调试模式下,方便的打断点,起到良好的测试效果。

3.infinite 触底加载

 在jquery-weui.js库中包含infinite组件,这个组件在我们使用weui开发手机端分页时,使用起来非常方便。

 在另外一个轻量级的 JavaScript 库中也包含 infinite 组件 -- Zepto.WeUI.js

    Zepto简介

  • Zepto.WeUI.js 是基于 Zepto.js 和 WeUI 的一个插件库,用于扩展 WeUI 组件的功能并提供更多常用的 UI 组件和交互效果。它提供了一系列易于使用的轻量级组件,使开发者可以快速构建具有WeUI 风格的移动端网页应用。
  • Zepto.js 是一个轻量级的 JavaScript 库,被设计为和 jQuery 兼容的替代品,主要用于移动设备上的开发。它提供了许多类似于 jQuery 的功能和 API, 但是文件体积更小且专注于移动端的特性  和性能优化。
  • Zepto.WeUI.js 扩展了 WeUI,为开发者提供了更多实用的功能和组件,如下拉刷新、无限滚动、图片轮播等。它以 Zepto.js 作为基础,提供了一种便捷的方式来使用 WeUI 的特性和样式。

  Zepto中Infinite的使用      

     1. 引入依赖文件

<!-- 引入 WeUI 样式 -->
<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/weui/2.2.0/style/weui.min.css">
    
<!-- 引入 Zepto.js -->
<script src="https://cdn.bootcdn.net/ajax/libs/zepto/1.2.0/zepto.min.js"></script>

<!-- 引入 Zepto.WeUI.js -->
<script src="https://cdn.bootcdn.net/ajax/libs/zepto.weui/1.2.0/zepto.weui.min.js"></script>

     2. 创建基本的 HTML 结构

<div class="infinite-container">
  <div class="infinite-item">内容 1</div>
  <div class="infinite-item">内容 2</div>
  <!-- 更多内容 -->
  <div class="infinite-loading">加载中...</div>
</div>

     3. 初始化 infinite 组件

$(function() {
  $(".infinite-container").infinite();
});

     4. 处理滚动触底事件

$(function() {
  $(".infinite-container").infinite().on("infinite", function() {
    var loading = $(".infinite-loading");
    loading.show(); // 显示加载状态提示

    // 异步加载更多内容
    // 这里可以使用 AJAX 请求或其他异步方法来获取数据
    setTimeout(function() {
      var newItem = $("<div></div>").addClass("infinite-item").text("更多内容");
      $(".infinite-container").append(newItem);
      loading.hide(); // 隐藏加载状态提示
      $(".infinite-container").infinite(); // 重新初始化 infinite 组件
    }, 2000); // 模拟延迟加载2秒
  });
});

    5. 在配合VUE使用时,使用方式更加简便

        1.  首先在你的VUE项目中引入依赖文件

        2.  在 mounted 中将 infinite元素 和 infinite组件 绑定

$('.infinite').infinite().on('infinite', () => {
   // 滚动时执行的方法
})

        3.  在 watch 中实时监听页面滚动情况

watch: {
    meetEnd() {
	  if (this.meetEnd) {
		//off方法用于移除已绑定的无限滚动加载事件。它可以帮助你临时关闭无限滚动加载功能,而不需要完全销毁 infinite 组件。
		//$('.infinite').infinite().destroy() 完全销毁 infinite 组件
        $('.infinite').infinite().off('infinite')		
      } else {
        $('.infinite').infinite().on('infinite', () => {
            //滚动时执行的方法
        })
      }
   }
}

 4.Vue 中使用动态组件 (Dynamic Components)

在Vue中使用动态组件可以让你根据不同的条件或用户操作,动态加载不同的组件。下面是一个简单示例

<template>
  <div>
    <button @click="loadComponent('ComponentA')">加载组件A</button>
    <button @click="loadComponent('ComponentB')">加载组件B</button>

    <component :is="currentComponent"></component>
  </div>
</template>

<script>
import ComponentA from "@/components/ComponentA.vue";
import ComponentB from "@/components/ComponentB.vue";

export default {
  data() {
    return {
      currentComponent: null
    };
  },
  methods: {
    loadComponent(componentName) {
      if (componentName === 'ComponentA') {
        this.currentComponent = ComponentA;
      } else if (componentName === 'ComponentB') {
        this.currentComponent = ComponentB;
      }
    }
  },
  components: {
    ComponentA,
    ComponentB
  }
};
</script>

5.Vue中 ... 的用法

在Vue中,...可能是  展开运算符(Spread Operator)也可能是  对象的扩展运算符(Object Spread Operator)。

下面先介绍 展开运算符 的使用方式

//1.展开数组
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5]; // 展开 arr1 数组,并添加新的元素
console.log(arr2); // 输出:[1, 2, 3, 4, 5]
//2.合并数组
const arr1 = [1, 2, 3];
const arr2 = [4, 5];
const arr3 = [...arr1, ...arr2]; // 合并 arr1 和 arr2 数组
console.log(arr3); // 输出:[1, 2, 3, 4, 5]
//3.复制数组
const arr1 = [1, 2, 3];
const arr2 = [...arr1]; // 复制 arr1 数组
console.log(arr2); // 输出:[1, 2, 3]
//4.展开对象
const obj1 = { name: 'Alice', age: 20 };
const obj2 = { ...obj1, city: 'New York' }; // 展开 obj1 对象,并添加新属性
console.log(obj2); // 输出:{ name: 'Alice', age: 20, city: 'New York' }
//5.合并对象
const obj1 = { name: 'Alice', age: 20 };
const obj2 = { city: 'New York' };
const obj3 = { ...obj1, ...obj2 }; // 合并 obj1 和 obj2 对象
console.log(obj3); // 输出:{ name: 'Alice', age: 20, city: 'New York' }
//6.展开函数调用
function foo(a, b, c) {
  console.log(a, b, c);
}

const arr = [1, 2, 3];
foo(...arr); // 将数组展开作为参数传递给函数

然后介绍一下,小白特别困惑的 对象的扩展运算符 ,它主要用于对象的属性合并和复制。

//1.合并组件的计算属性
<script>
import { mapGetters } from "vuex";

export default {
  computed: {
    //这个例子中,我们使用对象的扩展运算符将 mapGetters 返回的对象属性合并到组件的 computed 计算属性中。这样,我们可以通过在组件中使用
    // this.prop1 和 this.prop2 来访问对应的计算属性
    ...mapGetters({
      prop1: "module1/getProp1",
      prop2: "module2/getProp2"
    })
  }
};
</script>
//2.合并组件的方法
<script>
export default {
  methods: {
    //在这个例子中,我们使用对象的扩展运算符将 mapActions 返回的对象属性合并到组件的 methods 中。
    //这样,我们就可以直接在组件中使用 this.action1 和 this.action2 来调用对应的方法。
    ...mapActions([
      "module1/action1",
      "module2/action2"
    ])
  }
};
</script>
//3.合并组件的样式对象
<template>
  <div :style="computedStyles"></div>
</template>
//在这个例子中,我们使用对象的扩展运算符将 baseStyles 对象和 additionalStyles 对象合并为一个新的对象,
//并将其作为 :style 绑定的值。这样,组件的样式将包含来自两个对象的属性。
<script>
export default {
  data() {
    return {
      baseStyles: { backgroundColor: "red", color: "white" },
      additionalStyles: { fontSize: "16px", fontWeight: "bold" }
    };
  },
  computed: {
    computedStyles() {
      return { ...this.baseStyles, ...this.additionalStyles };
    }
  }
};
</script>

 最后,小白发现 对象的扩展运算符展开运算符 在处理对象的时候是有相似性的,于是小白研究了它们之间的相同点和不同点

1.  相同点:对象的扩展运算符和展开运算符都可以用于展开对象

2.  不同点:

1. 对象的扩展运算符只能用于展开对象,它会将一个对象中的所有属性展开到另一个对象中,并创建一个新的对象
const obj1 = { name: 'Alice', age: 20 };
const obj2 = { ...obj1 };
console.log(obj2); // 输出:{ name: 'Alice', age: 20 }

2. 展开运算符可以用于展开数组和对象,可以在新的数组、对象或函数调用中使用,比如合并数组、复制数据、合并对象等。
const arr1 = [1, 2, 3];
const arr2 = [4, 5];
const mergedArr = [...arr1, ...arr2];
console.log(mergedArr); // 输出:[1, 2, 3, 4, 5]

const obj1 = { name: 'Alice', age: 20 };
const obj2 = { city: 'New York' };
const mergedObj = { ...obj1, ...obj2 };
console.log(mergedObj); // 输出:{ name: 'Alice', age: 20, city: 'New York' }

3. 展开运算符可以在数组和函数调用中使用
function foo(a, b, c) {
  console.log(a, b, c);
}

const arr = [1, 2, 3];
foo(...arr); // 将数组展开作为参数传递给函数

const obj = { name: 'Alice', age: 20 };
const newObj = { ...obj }; // 只能用于对象的展开

以上就是 对象的扩展运算符展开运算符 的相同点和不同点,经过整理小白搞清楚了如何使用这些好用的组件。小白还会继续努力学习编码,争取掌握更多好用又有效率的组件,拜读更多优秀的代码!文章来源地址https://www.toymoban.com/news/detail-695044.html

到了这里,关于小白最近比较闲,于是整理了一些日常使用的VUE组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 整理一下最近了解到的AIGC工具

    好久没有写csdn博客了,突然不知道写点什么,最近AIGC真的很火,有一种三天不看就跟不上发展趋势的感觉,让人又激动又有点慌😂。这里我简单整理一下最近看到的AIGC的一些内容,后续如果有需要我详细描述一下如何使用。 AIGC现在发展可以说是‘坐地日行八万里’了,总

    2024年02月12日
    浏览(75)
  • 持续不断更新中... 自己整理的一些前端知识点以及前端面试题,包括vue2,vue3,js,ts,css,微信小程序等

    答: 在普通的前端项目工程中,在script标签中增加setup即可使用api 使用setup()钩子函数 答: 不要在计算属性中进行异步请求或者更改DOM 不要直接修改computed的值 区别: 计算属性值基于其响应式依赖被缓存,意思就是只要他之前的依赖不发生变化,那么调用他只会返回之前缓

    2024年02月11日
    浏览(62)
  • 推荐一个最近刚出的比较全面的多模态综述:Multimodal Deep Learning

    标题:Multimodal Deep Learning 网址:https://arxiv.org/abs/2301.04856 收录于:arxiv 2023   与其说这是一篇论文,倒不如说这是一本“书”。全文共 239 页,这其中还不包括封面、目录、参考文献等等的篇幅。   本书是一个研讨会的成果,在这个研讨会中,我们回顾了多模态方法,并

    2023年04月26日
    浏览(45)
  • 小程序在日常遇到的一些限制及解决方法

    微信小程序对单个文件大小有限制,js文件不能超过2MB,其他类型文件不能超过10MB。如果开发者需要使用大型资源文件,可以考虑分割文件或使用CDN加速技术。 解决方式如下: 分割文件 将较大的文件拆分为多个小文件,并通过异步加载的方式进行动态合并。例如,在小程序

    2024年02月06日
    浏览(51)
  • 【论文笔记】最近看的时空数据挖掘综述整理8.27

    Deep Learning for Spatio-Temporal Data Mining: A Survey 被引用次数:392 [Submitted on 11 Jun 2019 ( v1 ), last revised 24 Jun 2019 (this version, v2)] 主要内容: 该论文是一篇关于深度学习在时空数据挖掘中的应用的综述。论文首先介绍了时空数据挖掘的背景和意义,然后详细介绍了深度学习在时空数据

    2024年02月11日
    浏览(44)
  • 入门小白:STM32hal库实现ESP8266与手机通信(不定长数据收发和ESP8266使用的一些问题)

    目录 前言 一、stm32cubeMX的串口配置 二、空闲中断+dma接收 三、ESP8266.c和ESP8266.h ESP8266.h ESP8266.c 注意事项 四、与手机通信例程 步骤:  例程代码main.c 运行结果 五、相关问题 总结 相关的app和源码         前提: 1.掌握串口通信和ESP8266的使用方法 串口通信:单片机串口通信

    2024年02月07日
    浏览(65)
  • 论最近热门的AI绘画技术—从小白绘画到文创手账设计【文末送书-13】

    AI绘画技术,也称为人工智能绘画,是指利用人工智能技术来创作艺术作品的过程。近年来,随着深度学习和计算机视觉技术的不断发展,AI绘画技术也越来越受到关注。 AI绘画技术的主要优势在于其能够快速、准确地生成高质量的艺术作品。通过训练,AI可以学习到各种艺术

    2024年02月03日
    浏览(41)
  • 最近项目上需要发送短信整理了一篇文章 SpringBoot整合阿里云发送短信

    阿里云短信服务网址:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 第一步:申请签名(一般申请时长在1-2小时之间)特别注意:场景说明不要乱填以免申请不通过  第二步:申请短信模板(一般申请时长在1-2小时之间)特别注意:场景说明不要乱填以免申请不

    2024年02月06日
    浏览(49)
  • 比较流行的一些音频AI模型

    音频处理算法模型有很多种,比较流行的一些有: 声音分类、声音分离、语音识别、声纹识别,语音合成、声音去噪、声音解码、声音克隆。 语音识别技术的应用场景: 1、语音助手 2、语音翻译 3、语音识别输入法 4、电话客服自动语音应答 5、语音识别笔录 6、语音搜索

    2024年02月03日
    浏览(43)
  • Bard和ChatGPT的一些比较

    2023.11.8 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 选择正确的自动文本生成工具对企业至关重要。本文将详细分析谷歌 Bard 和 ChatGPT 的优缺点,以帮助企业做出明智的选择。无论企业关注的是客户服务、内容创作还是市场营销,了解这些工具的运行方式

    2024年02月03日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包