高性能的js第三方库——lodash、 Underscore、async、md5及moment

本文介绍了JavaScript中常用的高性能库,包括lodash和Underscore,它们提供丰富的实用函数来增强原生对象功能。此外,还提及了async用于异步操作,md5用于加密,以及moment用于日期处理。文章通过实例展示了这些库的使用,并列举了一些lodash的常见函数,如浅拷贝和深拷贝。
摘要由CSDN通过智能技术生成

背景:为了实现某些功能,如:数据排序、分组、筛选、深拷贝等,自己写的函数或网上搜索处理的转换函数质量无法保证,这时直接使用成熟的js第三方库是首选。

*注:“framework(框架)”,“library(库)”和“tool(工具)” 可以根据情境,在不同时期,对不同的人,意味着不同的东西。

一、LodashUnderscore(推荐参考阮一峰的日志)

1.优点:将 Lodash 和 Underscore 放在一起,因为它们提供了数百个功能性的 JavaScript 实用程序来补充原生字符串,数字,数组和其他原始对象的方法。二者有一些功能性的重叠,所以你不太可能在一个项目中同事需要这两个库。

它在客户端使用率似乎很低,但是可以在服务器端的 Node.js 应用程序中使用这两个库。

  • 小而简单
  • 拥有优质文档,易于学习
  • 与大多数库和框架兼容
  • 不扩展内置对象
  • 可以在客户端或服务器上使用

2.缺点:

  • 有些方法只适用于ES2015及更高版本的 JavaScript

实例:

import * as _ from 'lodash'
import * as _s from 'underscore'

//数组去重对比
_.uniq([1,1,3])
// => [1,3]

_s.uniq([1, 2, 1, 4, 1, 3]);
=> [1, 2, 4, 3]

二、asyncmd5moment

分别是:异步请求、加密、日期转换

实例:

import * as _async from 'async'
import * as _moment from 'moment'
import * as _md5 from 'md5'

shunXuAsync(){
  // 异步 顺序执行
  let task1 = function (callback) {

    console.log("task1");
    callback(null, "task1")
  }

  let task2 = function (callback) {

    console.log("task2");
    callback(null, "task2")
    // callback("err","task2") // null改为err ,如果中途发生错误,则将错误传递到回调函数,并停止执行后面的函数
  }

  let task3 = function (callback) {

    console.log("task3");
    callback(null, "task3")
  }

  _async.series([task1, task2, task3], function (err, result) {
    console.log("series");
    if (err) {
      console.log(err);
    }
    console.log(result);
  }
  )
}

console.log(_moment().format('MMMM Do YYYY, h:mm:ss a')) //当前时间+格式

console.log(md5('message'));//78e731027d8fd50ed642340b7c9a63b3

附:常用的几个Lodash函数

【浅拷贝】:

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

如图:

 

  【深拷贝】:

  

import _ from 'lodash'

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

//2.分组
_.groupBy([6.1, 4.2, 6.3], Math.floor);
// => { '4': [4.2], '6': [6.1, 6.3] }
 
// The `_.property` iteratee shorthand.
_.groupBy(['one', 'two', 'three'], 'length');
// => { '3': ['one', 'two'], '5': ['three'] }

//3. 合并key、value
_.zipObject(['a', 'b'], [1, 2]);
// => { 'a': 1, 'b': 2 }

//4.深比较不同
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值