Vue3-TS-Lodash:理解Lodash / 常用方法积累

一、Lodash官网

Lodash 简介 | Lodash中文文档 | Lodash中文网

二、理解Lodash

Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。它提供了大量的函数来帮助你处理数组、数值、对象、字符串等,使你的代码更加简洁、易读和高效。Lodash 的设计哲学是让你能够使用函数式编程的方法来操作数据,同时避免修改原始数据(除非明确指定)。

三、Lodash具备哪些能力

序号能力解释
1数组 / Array如过滤、映射、排序、分块、去重、查找、比较等
2集合 / Collection如并集、交集、差集、子集、筛选等
3函数如柯里化、防抖、节流、合成、条件判断等;
4语言提供了一系列用于检查类型、验证值等的函数
5数学如求和、平均数、最大值、最小值、随机数等;
6数字clamp(number, [lower], upper)返回限制在 lower 和 upper 之间的值。
inRange(number, [start=0], end)检查 n 是否在 start 与 end 之间
random([lower=0], [upper=1], [floating])产生一个包括 lower 与 upper 之间的数
7对象如深拷贝、合并、遍历、转换、比较等
8SeqSeq 模块(或称为序列)提供了一种链式调用的方式来处理数据,同时支持惰性计算(Lazy Evaluation),这意味着只有在需要最终结果时,才会执行链中的操作。这种机制可以显著提高处理大数据集时的性能,因为它允许在数据实际被使用之前避免不必要的计算。
9字符串如切割、重复、填充、大小写转换、字符串匹配、转义等;
10实用函数
11Properties
12Methods
Lodash虽然提供了很多方法,但并不意味着在实际开发中一定要全部使用。在使用Lodash时,应根据实际需要选取合适的方法,以提高代码的可读性和执行效率。

四、vue3 ts 项目安装

4.1、安装

pnpm install lodash
pnpm install @types/lodash

4.2、全局引入

在项目的入口文件(main.ts)中全局引入Lodash,并将其挂载。
但请注意,这种方式虽然方便,但可能会增加项目的打包体积,因为Lodash是一个相对较大的库。

main.tsimport _ from 'lodash' 
app.config.globalProperties.$lodash = _ 
import { createApp, getCurrentInstance } from 'vue'
import './style.css'
import '@v3/assets/styles/tailwind.css'
import '@v3/assets/styles/reset.css'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
import router from './routers/index'
import { api } from './api/index'
import 'vue-global-api'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import _ from 'lodash' const pinia = createPinia()
pinia.use(piniaPluginPersistedstate)
const app = createApp(App)
app.use(ElementPlus)
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {app.component(key, component)
}
app.use(pinia)
app.use(router)
app.config.globalProperties.$api = api
app.config.globalProperties.$lodash = _ 
app.mount('#app')

页面使用

<script setup lang="ts">
let Lodash = internalInstance && internalInstance.appContext.config.globalProperties.$lodash
getUser(params).then((res: any)=>{console.log('lodash', Lodash.hasIn(res, ['payload']))// true
}
</script>

感觉比较麻烦,后边找找看简便方法

出于性能和打包体积的考虑,通常不推荐全局引入Lodash。更好的做法是按需引入。 

4.3、按需引入

在组件或文件中,根据需要引入Lodash的特定函数。这样做的好处是可以只引入你需要的函数,从而减小项目的打包体积。

<script setup lang="ts">  
import { defineComponent } from 'vue'  
import { debounce } from 'lodash'  // 使用debounce函数  
const handleInput = debounce((value: string) => {  console.log(value)  
}, 500)  
</script>  <template>  <input type="text" @input="handleInput($event.target.value)" />  
</template>

五、配置TypeScript以支持Lodash

由于你已经安装了@types/lodash,TypeScript应该能够自动识别Lodash的类型定义。但是,如果你在使用TypeScript时遇到了与Lodash相关的类型错误或警告,请确保你的tsconfig.json文件配置正确。特别是,如果你的项目中使用了ES模块导入方式,并且遇到了默认导入的警告,你可能需要在tsconfig.json中添加以下配置

{  "compilerOptions": {  "allowSyntheticDefaultImports": true,  "esModuleInterop": true  }  
}

六、常用方法

6.1、hasIn

let result = hasIn(res, ['payload']) ? res.payload : []

对象路径正确 返回 true ,否则 false

<script setup lang="ts">
import { hasIn } from 'lodash'
getUser(params).then((res: any)=>{console.log('lodash-hasIn', hasIn(res, ['payload']))// true 测试成功
}
</script>

6.2、待补充

更多内容待补充

参考链接

lodash.hasIn | Lodash中文文档 | Lodash中文网

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

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

相关文章

【Mybatis篇】动态SQL的详细带练

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【计算机网络】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 文章目录 &#x1f3af;一.动态SQL简单介绍 &#x1f6a6;动态S…

端侧Agent系列 | 端侧AI Agent任务拆解大师如何助力AI手机?(详解版)

引言 简介 Octo-planner 规划和执行Agent框架 规划数据集 基准设计 实验设计 结果 全量微调与LoRA 多LoRA训练与合并 不同基础模型的全量微调 不同数据集大小的全量微调 总结 实战 英文 中文示例1&#xff1a; 中文示例2&#xff1a; 0. 引言 人生到处知何似…

【有啥问啥】具身智能(Embodied AI):人工智能的新前沿

具身智能&#xff08;Embodied AI&#xff09;&#xff1a;人工智能的新前沿 引言 在人工智能&#xff08;AI&#xff09;的进程中&#xff0c;具身智能&#xff08;Embodied AI&#xff09;正逐渐成为研究与应用的焦点。具身智能不仅关注于机器的计算能力&#xff0c;更强调…

排序算法的分析和应用

自己设计一个长度不小于10的乱序数组&#xff0c;用希尔排序&#xff0c;自己设定希尔排序参数 画出每一轮希尔排序的状态 自己设计一个长度不小于10的乱序数组&#xff0c;用堆排序&#xff0c;最终要生成升序数组&#xff0c;画出建堆后的状态 画出每一轮堆排序的状态 自…

【C++并发入门】摄像头帧率计算和多线程相机读取(上):并发基础概念和代码实现

前言 高帧率摄像头往往应用在很多opencv项目中&#xff0c;今天就来通过简单计算摄像头帧率&#xff0c;抛出一个单线程读取摄像头会遇到的问题&#xff0c;同时提出一种解决方案&#xff0c;使用多线程对摄像头进行读取。同时本文介绍了线程入门的基础知识&#xff0c;讲解了…

【OS】计算机系统概述|操作系统基本概念|并发|并行|虚拟异步

✨ Blog’s 主页: 白乐天_ξ( ✿&#xff1e;◡❛) &#x1f308; 个人Motto&#xff1a;他强任他强&#xff0c;清风拂山冈&#xff01; &#x1f525; 所属专栏&#xff1a;C深入学习笔记 &#x1f4ab; 欢迎来到我的学习笔记&#xff01; 前言 一、操作系统的概念 操作系统…

如何使用ssm实现基于Java的高校物业工程报修系统

TOC ssm736基于Java的高校物业工程报修系统jsp 绪论 1.1研究背景与意义 信息化管理模式是将行业中的工作流程由人工服务&#xff0c;逐渐转换为使用计算机技术的信息化管理服务。这种管理模式发展迅速&#xff0c;使用起来非常简单容易&#xff0c;用户甚至不用掌握相关的专…

2. 将GitHub上的开源项目导入(clone)到(Linux)服务器上——深度学习·科研实践·从0到1

目录 1. 在github上搜项目 (以OpenOcc为例&#xff09; 2. 转移到码云Gitee上 3. 进入Linux服务器终端 (jupyter lab) 4. 常用Linux命令 5. 进入对应文件夹中导入项目(代码) 注意&#xff1a;系统盘和数据盘 1. 在github上搜项目 (以OpenOcc为例&#xff09; 把链接复制下…

llamafactory0.9.0微调qwen2.5

llama_factory微调QWen1.5_llama factory qwen-CSDN博客文章浏览阅读2.9k次,点赞36次,收藏10次。本文介绍了如何使用LLaMA-Factory微调Qwen1.5模型,包括1.8B和0.5B版本的训练细节。在数据、训练、LORA融合及推理等方面进行了探讨,同时也分享了微调后模型在不同任务上的表现…

Linux快速安装ClickHouse(附官方文档)

在线安装 1.安装yum-utils yum-utils是一个与 yum 集成的实用程序集合&#xff0c;可以通过多种方式扩展其本机功能 yum install -y yum-utils 2.增加ClickHouse官方镜像源 yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo 3.安装Cl…

【JavaEE初阶】网络原理

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 ⽹络互连 IP地址 端口号 协议 协议分层 优势 TCP/IP 五层网络模型 数据在网络通信中的整体流程 封装和分用 封装 分用 ⽹络互连 随着时代的发展&#xff0c;越来越需…

828华为云征文 | 云服务器Flexus X实例:向量数据库 pgvector 部署,实现向量检索

目录 一、什么是向量数据库 pgvector &#xff1f; 二、pgvector 部署 2.1 安装 Docker 2.2 拉取镜像 2.3 添加规则 三、pgvector 运行 3.1 运行 pgvector 3.2 连接 pgvector 3.3 pgvector 常见操作 四、总结 本篇文章通过 云服务器Flexus X实例 部署向量数据库 pgve…

第十四章:html和css做一个心在跳动,为你而动的表白动画

💖 让心跳加速,传递爱意 💖 在这个特别的时刻,让爱在跳动中绽放!🌟 无论是初次相遇的心动,还是陪伴多年的默契,我们的心总在为彼此跳动。就像这颗炙热的爱心,随着每一次的跳动,传递着满满的温暖与期待。 在这个浪漫的季节,让我们一同感受爱的律动!无论你是在…

手搓 HTTP服务器 手把手带你实现高并发HTTP服务器 C++ HTTP服务器 服务器项目实战 高性能服务器实战 服务器项目 服务器

手搓 HTTP服务器 高并发HTTP服务器 C HTTP服务器 1、什么是socket Socket是一种用于网络通信的编程接口&#xff0c;允许不同计算机之间通过网络发送和接收数据。它在客户端和服务器之间创建连接&#xff0c;支持多种协议&#xff0c;如TCP和UDP。2、实现socket 通讯 1、soc…

Milvus - 架构设计详解

Milvus 是一个专为在大规模密集向量数据集上进行相似性搜索而设计的开源向量数据库系统。其架构建立在流行的向量搜索库之上&#xff0c;如 Faiss、HNSW、DiskANN 和 SCANN&#xff0c;能够处理数百万、数十亿甚至数万亿的向量数据。为了全面了解 Milvus 架构&#xff0c;我们首…

苏州 数字化科技展厅展馆-「世岩科技」一站式服务商

数字化科技展厅展馆设计施工是一个综合性强、技术要求高的项目&#xff0c;涉及到众多方面的要点。以下是对数字化科技展厅展馆设计施工要点的详细分析&#xff1a; 一、明确目标与定位 在设计之初&#xff0c;必须明确展厅的目标和定位。这包括确定展厅的主题、目标受众、展…

实用SQL小总结

WHERE 条件 column 为纯英文字符 或 不包含任何字符 语法&#xff1a; SELECT * FROM your_table WHERE REGEXP(your_column,^[A-Za-z]$); SELECT * FROM your_table WHERE NOT REGEXP(your_column,^[A-Za-z]$);例&#xff1a; SELECT DISTINCT t.pldlibho FROM kibb_pldlyw…

Naive UI 选择器 Select 的:render-label 怎么使用(Vue3 + TS)

项目场景&#xff1a; 在Naive UI 的 选择器 Select组件中 &#xff0c;如何实现下面的效果 &#xff0c;在下拉列表中&#xff0c;左边展示色块&#xff0c;右边展示文字。 Naive UI 的官网中提到过这个实现方法&#xff0c;有一个render-label的api&#xff0c;即&#xff…

数据库操作:数据类型

0. 铺垫 1.数值类型 注&#xff1a;此图的最大值都要减1&#xff1b;因为我的错误&#xff0c;后面会改正&#xff1b; 1.0、tinyint 类型大小——1字节 create table tt1(num tinyint); insert into tt1 values(1); insert into tt1 values(128); -- 越界插入&#xff0c;…

【Android】 IconFont的使用

SVG 的特点&#xff1a; 矢量图形&#xff1a;SVG 使用基于路径的矢量图形&#xff0c;这意味着图形可以无限放大而不失真&#xff0c;非常适合需要多种分辨率的应用。 可伸缩性&#xff1a;SVG 文件的大小通常比位图小&#xff0c;这使得它们在网页上加载更快。 编辑和创作&…