lodash-es 工具库

简介: lodash-es 工具库

数字化管理平台

Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus

Vue权限系统案例

个人博客地址

Lodash中文文档

Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库,算是从 Underscore 分离来的超集。

Lodash 通过降低 array、number、objects、string 等等的使用难度从而让 JavaScript 变得更简单。Lodash 的模块化方法 非常适用于:

遍历 array、object 和 string

对值进行操作和检测

创建符合功能的函数

lodash 为了良好的浏览器兼容性,它使用了旧版 es5 的模块语法;而lodash-es则使用了 es6 的模块语法,这让 webpack 之类的打包工具可以对其进行tree shake (摇树优化)以删除未使用的代码来优化打包体积。所以在使用lodash库时,推荐通过lodash-es来进行导入操作。

注:tree-shaking(摇树优化)的作用:移除上下文中未引用的代码(dead code)。

安装 lodash-es

npm i lodash-es

引入 lodash-es 中的函数

import { shuffle, cloneDeep, throttle, debounce } from 'lodash-es'

1.1 浅拷贝 clone

_.clone(value) 创建一个 value 的浅拷贝。返回拷贝后的值。

var objects = [{ 'a': 1 }, { 'b': 2 }];
var shallow = _.clone(objects);
console.log(shallow[0] === objects[0]);  // true

1.2 深拷贝 cloneDeep

_.cloneDeep(value) 类似 _.clone 但是它会递归拷贝 value。返回拷贝后的值。

var objects = [{ 'a': 1 }, { 'b': 2 }];
var deep = _.cloneDeep(objects);
console.log(deep[0] === objects[0]); // false

1.3 防抖 debounce

_.debounce(func, [wait=0], [options=]) 创建一个 debounced(防抖动)函数,该函数会从上一次被调用后,延迟 wait 毫秒后调用 func 方法。 返回新的 debounced(防抖动)函数。

参数:

  1. 1. func (Function): 要防抖动的函数。
  2. 2. [wait=0] (number): 需要延迟的毫秒数。
  3. 3. [options=] (Object): 选项对象。
  4. 4. [options.leading=false] (boolean): 指定在延迟开始前调用。
  5. 5. [options.maxWait] (number): 设置 func 允许被延迟的最大值。
  6. 6. [options.trailing=true] (boolean): 指定在延迟结束后调用。
// 避免窗口在变动时出现昂贵的计算开销。
jQuery(window).on('resize', _.debounce(calculateLayout, 150));
// 当点击时 `sendMail` 随后就被调用。
jQuery(element).on('click', _.debounce(sendMail, 300, {
  'leading': true,
  'trailing': false
}));
// 确保 `batchLog` 调用1次之后,1秒内会被触发。
var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
var source = new EventSource('/stream');
jQuery(source).on('message', debounced);
// 取消一个 trailing 的防抖动调用
jQuery(window).on('popstate', debounced.cancel);

1.4 节流 throttle

_.throttle(func, [wait=0], [options=]) 创建一个节流函数,在 wait 秒内最多执行 func 一次的函数。 返回节流的函数。

参数:

  1. 1. func (Function): 要节流的函数。
  2. 2. [wait=0] (number): 需要节流的毫秒。
  3. 3. [options=] (Object): 选项对象。
  4. 4. [options.leading=true] (boolean): 指定调用在节流开始前。
  5. 5. [options.trailing=true] (boolean): 指定调用在节流结束后。
// 避免在滚动时过分的更新定位
jQuery(window).on('scroll', _.throttle(updatePosition, 100));
// 点击后就调用 `renewToken`,但5分钟内超过1次。
var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
jQuery(element).on('click', throttled);
// 取消一个 trailing 的节流调用。
jQuery(window).on('popstate', throttled.cancel);

1.5 打乱值 shuffle

_.shuffle(collection) 创建一个被打乱值的集合。返回打乱的新数组。

参数:collection (Array|Object): 要打乱的集合

_.shuffle([1, 2, 3, 4]);
// => [4, 1, 3, 2]

Vue 动画案例

image.gif

代码实现:

相关文章
|
1月前
|
存储 JSON 数据建模
数据建模怎么做?一文讲清数据建模全流程
本文深入解析了数据建模的全流程,聚焦如何将模糊的业务需求转化为可落地的数据模型,涵盖需求分析、模型设计、实施落地与迭代优化四大核心环节,帮助数据团队提升建模效率与模型实用性。
|
编译器 定位技术 API
|
缓存
vue3-ts:keepalive 列表页到详情,详情回到列表,列表恢复离开时的状态(上)
vue3-ts:keepalive 列表页到详情,详情回到列表,列表恢复离开时的状态(上)
671 0
echarts 标尺相关参数(visualMap属性设置)
echarts 标尺相关参数(visualMap属性设置)
echarts 标尺相关参数(visualMap属性设置)
|
存储 缓存 JavaScript
不要过度封装!封装一个最简单的Axios!
前言 axios 是目前最优秀的 HTTP 请求库之一,虽然 axios 已经封装的非常好了,我们可以直接拿过来用。但是在实际的项目中,我们可能还需要对 axios 在封装一下,以便我们更好的管理项目和各个借口。 但是,目前网上有特别多的针对于 axios 在项目中的封装。不得不说,很多大佬封装得非常全面,方方面面都考虑到了。但是我们的每个真的都需要那些封装吗?显然不是的,网上的很多封装其实都显得有点过度封装了! 本篇文章实现最简单 Axios 封装,让小伙伴们扩展起来容易一些。
5810 0
不要过度封装!封装一个最简单的Axios!
|
11月前
|
前端开发 测试技术
如何从零到一建立前端规范
【10月更文挑战第6天】
221 2
|
6月前
|
JavaScript 前端开发 UED
PDF在线预览实现:如何使用vue-pdf-embed实现前端PDF在线阅读
本文详细介绍了如何在Vue项目中使用vue-pdf-embed实现PDF文件的在线展示。从项目初始化、插件集成到高级功能的实现和部署优化,希望对你有所帮助。在实际项目中,灵活运用这些技术可以大大提升用户体验和项目质量。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
12月前
|
JavaScript
在vue3中(vite)引入unocss,安装配置unocss
在vue3中(vite)引入unocss,安装配置unocss
|
前端开发 虚拟化
简单记录使用 ElementPlus 的虚拟化树形控件(el-tree-v2)心得
这篇文章分享了作者使用ElementPlus的虚拟化树形控件`el-tree-v2`的心得,展示了其基本用法和如何通过自定义模板来增强树节点的交互性。
3722 1
简单记录使用 ElementPlus 的虚拟化树形控件(el-tree-v2)心得
|
10月前
|
存储 JavaScript 前端开发
decimal.js库的安装和使用方法
【10月更文挑战第24天】decimal.js 是一个非常实用的高精度计算库,通过合理的安装和使用,可以在 JavaScript 中实现精确的数值计算和处理。你可以根据具体的需求和项目情况,灵活运用该库来解决数字精度丢失的问题。