常用JavaScript库

news2024/11/26 2:33:38

1、前端工具类库

        jQuery是一个快速、小型且功能丰富的 JavaScript 库,它使HTML文档遍历和操作、事件处理、动画和 AJAX 之类的事情变得更加简单。当时jQuery库不但简化了代码,而且提供出色的跨浏览器支持,其极大的提高了 Web 开发人员的工作效率。 除了jQuery之外,其实还有许多库和框架可供JavaScript开发人员使用。下图是前端开发常用的工具库:

2、underscoreVS Lodash

        Lodash 和 Underscore 都是非常实用JavaScript工具库,它们都提供了非常多的函数来对数字、字符串、数组、对象等操作,这些函数不但可以简化JavaScript编写,而且可以极大的提高我们的开发效率。这些库非常适合如下操作:

  • 迭代数组、对象和字符串。
  • 操作和测试值。
  • 创建复合函数。

        Lodash是Underscore的一个分支,仍然遵循Underscore的API, 但在底层已完全重写过。对于字符串、数组、对象等Lodash提供了跨环境迭代的支持

        Lodash还添加了许多Underscore没有提供的特性和功能,例如:提供 AMD 支持、深度克隆、深度合并、更好的性能、大型数组和对象迭代的优化等如今的Lodash足以成为Underscore替代品

Lodash从第4个版本开始放弃对IE9以下的支持。

3、Lodash 的安装

方式一:CND

https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js

方式二:下载源码引入

4、Lodash库字符串、数组

字符串(String)

_.camelCase(string) :转换字符串为驼峰写法。

_.capitalize(string) :转换字符串首字母为大写,剩下为小写。

_.endsWith(string, target) :检查字符串是否以给定的target字符串结尾。

_padStart(str, length,char) :如字符串长度小于 length 则在左侧填充字符。 如果超出length长度则截断超出的部分。

_.trim(string, chars) :从字符串中移除前面和后面的 空格 或 指定的字符。 

数组(Array)

_.first(arr, level) 获取array中的第一个元素。

_.last(arr, [n=1]) :获取array中的最后一个元素。

_.uniq(arr) :创建一个去重后的array数组副本。返回新的去重后的数组

_.compact(arr) 创建一个新数组,包含原数组中所有的非假值元素。返回过滤掉假值的新数组

_.flatten(arr) :减少一级array嵌套深度。返回新数组

5、Lodash库对象、集合、函数

对象

_.pick(object, [props]) :从object中选中的属性创建一个对象。返回新对象

_.omit(object, [props]) :反向版_.pick ;  删除object对象的属性。返回新对象

_.clone( value) :支持拷贝 arrays、 booleans、 date 、map、 numbers, Object 对象,  sets, strings, symbols等等。 arguments对象的可枚举属性会拷贝为普通对象。(注:也叫浅拷贝) 返回拷贝后的值。

_.cloneDeep(value)  :这个方法类似_.clone,它会递归拷贝 value。(注:也叫深拷贝)返回拷贝后的值。

集合(Array | Object)

_.sample() :从collection(集合)中获得一个随机元素。返回随机元素。

_.orderBy() :  给数组排序,默认是升序asc。

_.each() / _.forEach()  : 遍历(集合) 中的每个元素

_.filter( ) :返回一个新的过滤后的数组。

函数

_.curry() :返回新的柯里化(curry)函数。

_.debounce() :返回新的 debounced(防抖动)函数。

_.throttle() :返回节流的函数。

示例:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
  <!-- 
    window._ = Lodash函数
   -->
  <script src="./libs/lodash-4.17.21.js"></script>
  <script>
    // 1.打印一下 _
    console.log("%O", _)
    console.log(_.VERSION) // 查看Lodash的版本号

    console.log(_.join([2022, 06, 23], '-'))

    // ====================
     // 1.获取随机数
    console.log( _.random(5)  )  // 0-5
    console.log( _.random(5, 10)  )  // 5 - 10

    // ====================

    // 1.将字符串转成 驼峰命名
    console.log( _.camelCase(' foo bar  ')  )
    console.log( _.camelCase('--foo-bar--')  )

    console.log( _.capitalize('foo bar') )

    console.log(_.endsWith('logo.jpeg', '.png') )
    console.log(_.padStart('9', 2, '0'))   // 1 -> 01

    // ====================
    // 1.数组去重
    // console.log( _.uniq(colors) )

    // 2.扁平化
    // console.log( _.flatten(colors) )

    // 2.去除数组中假的值
    console.log( _.compact( [1, 2, {}, '', 0, null, undefined, false, 'red'] ) )
    
    console.log(_.orderBy([1,33,21,0,32,2]))

    // ====================
    var user = {
      name: 'liujun',
      age: '17',
      height: '1.66',
      friends: [
        'Evan',
        'John',
        'Mark',
        'Jack',
        'David'
      ]
    }

    
    // console.log( _.pick(user, ['name', 'friends']) )
    // console.log( _.omit(user, ['name', 'friends']) )

    // console.log( _.clone(user) )
    console.log( _.cloneDeep(user) )  // 深拷贝
  </script>
</body>
</html>

6、Moment.js VS Day.js

Moment库,官网的描述:

  • Moment 是一个 JavaScript 库,可以帮助我们快速处理时间和日期,已在数百万的项目中使用。
  • Moment对浏览器的兼容性比较好,例如,在Internet Explorer 8+版本运行良好。
  • 现在比较多人反对使用 Moment是因为它的大小。Moment 不适用于tree-shaking”算法,因此往往会增加 Web 应用程序包的大小。如果需要国际化或时区支持,Moment 可以变得相当大。
  • Moment团队也希望我们在未来的新项目不要使用Moment 而推荐使用其它的替代品。例如:Day.js

Day.js库,官网的描述:

  • Day.js 是 Moment的缩小版。Day.js 拥有与 Moment相同的 API,并将其文件大小减少了 97%。
  • Moment完整压缩文件的大小为 67+Kb,Day.js 压缩文件只有 2Kb
  • Day.js所有的 API 操作都将返回一个新的 Day.js 对象,这种设计能避免 bug 产生,减少调试时间。
  • Day.js 对国际化支持良好。国际化需手动加载,多国语言默认是不会被打包到Day.js中的。

7、Day.js库安装

方式一:CND

https://unpkg.com/dayjs@1.8.21/dayjs.min.js

方式二:下载源码引入: 

8、Day.js获取、设置、操作时间 

获取(Get) + 设置(Set)

.year().month.date() :获取年、月、日

.hour().minute().second()   :获取时、分、秒

.day()  :获取星期几

.format()  :格式化日期

操作日期和时间

.add(numbers , unit) :添加时间

.subtract(numbers , unit)  :减去时间

.startOf(unit) :时间的开始例如:获取今年的第一天零时零分零秒

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
  <!-- 
    window.dayjs = 工厂函数
   -->
  <script src="./libs/dayjs.js"></script>
  <script>
    // console.log("%O", dayjs)
    console.log("%O", dayjs()) // 创建 dayjs 对象
    console.log(dayjs().format()) // 拿到当前的时间
    
  </script>

</body>
</html>

9、Day.js解析、国际化、插件

解析时间

dayjs(毫秒|)  :时间戳(毫秒 和 秒)

dayjs('2022-06-15')  :ISO 8601格式的字符串

dayjs(new Date()) :接收日期对象

Day.js的插件应用

.fromNow() :从现在开始的时间 (需要依赖:relativeTime 插件)

relativeTime插件:https://cdn.jsdelivr.net/npm/dayjs@1.11.3/plugin/relativeTime.js

示例:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
  <script src="./libs/dayjs.js"></script>
  <script >

    // 1.拿到Dayjs的对象
    // var day = dayjs()
    // 获取时间
    // console.log(day.year(), (day.month() + 1), day.date(), day.hour(), day.minute(), day.second())

    // 2.设置时间
    var day = dayjs()
              .year(2021)
              .month(5)
              .date(1)
    console.log(day.year(), (day.month() + 1), day.date(), day.hour(), day.minute(), day.second())


    // ===============================================
 // 1.增加一天
    var day = dayjs() // dayjs 对象
              // .add(1, 'year') // 增加一年
              // .add(2, 'month') // 增加2个月
              // .add(-1, 'month') // 减去一个月

              // .subtract(1, 'year')  // 减去一年
               // .subtract(1, 'month')
              // .subtract(1, 'day') 

              // .startOf('year')  // 一年的开始 2022-01-01 00:00:00
              // .startOf('month')  // 
              // .startOf('day')  //


    // 时间的格式化
    console.log( day.format("YYYY-MM-DD HH:mm:ss") )

    // ===============================================
    // 1.解析一个字符串(ISO 8601)类型的时间
    // YYYY-MM-DD HH:mm:ss
    // YYYY-MM-DD
    // YYYY/MM/DD
    // var day = dayjs('2021-2-2 12:00:10') // dayjs 对象

    // 2.解析时间戳(毫秒)
    // var day = dayjs(1656206934331) // dayjs 对象

    // 3.解析时间戳(秒)
    // var day = dayjs.unix( 1656206934 ) // dayjs 对象

    // 4.解析Date对象
    // var day = dayjs(new Date('2022-10-1')) // dayjs 对象
    
    // 时间的格式化
    // console.log( day.format("YYYY/MM/DD HH/mm/ss") )

    // ===============================================


  </script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
  <script src="./libs/dayjs.js"></script>
  <!-- 会在 Dayjs 的原型上添加: fromNow .... -->
  <script src="./libs/dayjs.relative-time.min.js"></script>
  <!-- 
    给给dayjs的全局变量 Ls 添加了一个中文支持
   -->
  <script src="./libs/dayjs.zh-cn.min.js"></script>

  <script>
    // 1.安装插件
    dayjs.extend(dayjs_plugin_relativeTime)
    // 2.切换使用中文
    dayjs.locale('zh-cn')

    // 1. 1小时   5分钟   2天前
    var day = dayjs(1656206934331) // dayjs 对象

    console.log(day.fromNow())


  </script>
</body>
</html>

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

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

相关文章

sqlserver连接时报错 [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序

电脑重新安装系统了&#xff0c;当我再次链接数据库时 &#xff0c;发现报错 [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序很明显是少了驱动&#xff0c;只要安装了Microsoft ODBC Driver 11 for SQL Server这个驱动就可以了。 没安装驱动…

实时性升至秒级!飞桨PaddleSpeech赋能金融双录业务走向智能化

听说IT圈十个人里有九个是男性开发者&#xff0c;女生并不多&#xff0c;陈雪儿可以算是这个群体中独特的存在。 作为杭州谐云科技有限公司&#xff08;简称谐云&#xff09;智能边缘团队的AI技术专家&#xff0c;陈雪儿带领团队历经一年半研发的“金融双录智能质检系统”&…

功率放大器怎么选择型号的(功率放大器选购技巧)

很多电子工程师虽然频繁使用功率放大器&#xff0c;但是对于功率放大器的选择和选购技巧还是不清楚&#xff0c;下面就来为大家介绍一下如何挑选合适的功率放大器型号。 一般情况下&#xff0c;功率放大器购买决策的主要考虑因素是输出功率、线性度、频率范围和VSWR失配容限。放…

网络和VPC简单介绍

网络和VPC 传统网络 传统网络从一开始就是一个分布式的网络&#xff0c;没有中心的控制节点&#xff0c;网路中的各个设备之间通过口口相传的方式学习网络的可达信息&#xff0c;由每台设备自己决定要如何转发&#xff0c;这直接导致了没有整体观念&#xff0c;不能从整个网络…

免费PDF转换器软件有哪些?不妨试试这几款

在工作中和学习中很多小伙伴都有转换文件的需求&#xff0c;例如将PDF文件转换为word、excel、PPT、图片等类型的文件&#xff0c;这时候我们就需要一款专业且高效率的PDF转换器来帮助我们处理文件&#xff0c;那么转换器的性价比也是我们需要考虑的&#xff0c;那么免费PDF转换…

内存管理系统

文章目录前言前置知识makefile位图内存池规划实验操作实验一实验二实验三实验四实验五前言 博客记录《操作系统真象还原》第八章实验的操作~ 实验环境&#xff1a;ubuntu18.04VMware &#xff0c; Bochs下载安装 实验内容&#xff1a; 实现 assert 断言。实现字符串操作函数…

合并表记录 C语言实现

合并表记录 描述 数据表记录包含表索引index和数值value&#xff08;int范围的正整数&#xff09;&#xff0c;请对表索引相同的记录进行合并&#xff0c;即将相同索引的数值进行求和运算&#xff0c;输出按照index值升序进行输出。 提示: 0 < index < 11111111 1 <…

产品经理的技术脑:产品是如何工作的?

产品在web中的工作流程如图&#xff1a; 浏览器工作流程&#xff08;客户端&#xff09;&#xff1a; 用户访问网站时输入的URL&#xff0c;浏览器是无法根据输入的URL找到web服务器的&#xff0c;需要通过IP地址找到web服务器&#xff0c;因此&#xff0c;浏览器对用户URL的处…

6.5 工具-ElasticSearch

目录 6.5.1 ElasticSearch概述 6.5.1.1 什么是ElasticSearch 6.5.1.2 Lucene 6.5.1.3 Elastic Stack 6.5.1.4 Solr与ES 6.5.1.4.1 背景 6.5.1.4.2 区别 6.5.1.5 正向索引与倒排索引 6.5.1.5.1 正向索引 6.5.1.5.2 倒排索引 6.5.2 Elasticsearch安装 6.5.3 Elastics…

机器视觉硬件篇--线激光3d相机介绍及编程

一、3D相机简介常见的三维视觉技术&#xff0c;包含双目、ToF、激光三角、结构光等毫米级&#xff1a;双目、ToF、结构光(散斑)的精度为 mm 级&#xff0c;多见于消费领域&#xff0c;如&#xff1a;导航避障&#xff0c;VR/AR&#xff0c;刷脸支付等微米级&#xff1a;线激光、…

08-什么是类加载器,类加载器有哪些, 双亲委派模型机制?

1.类加载器 1.实现通过类的权限定名获取该类的二进制字节流的代码块叫做类加载器。 2.虚拟机设计团队把加载动作放到 JVM 外部实现&#xff0c;以便让应用程序决定如何获取所需的类。 3.类加载器虽然只用于实现类的加载动作&#xff0c;但是对于任意一个类&#xff0c;都需要…

ES索引规划方案

ES索引规划方案 1.引言 《ES索引规划方案》是研发部门针对审计系统需求&#xff0c;对海量日志数据进行实时存储和查询的解决方案&#xff0c;经过不断完善整理成册&#xff0c;以供后续相关开发人员学习使用 1.1.术语 序号用语说明1时序索引以时间为轴&#xff0c;数据只有…

Blender里的三种绑定 (二)约束

文章目录Blender里的三种绑定.约束.变换约束.复制位置.复制旋转.复制缩放.限定距离.限定位置&#xff0c;限定旋转&#xff0c;限定缩放.维持体积.变换.追踪约束.钳制到.阻尼追踪.锁定追踪.拉伸到.标准跟随.关系约束.动作.骨架.子级.基面.跟随路径.轴心.缩裹.Blender里的三种绑…

ViT(Version Transformer)原始论文解读

An Image is Worth 16x16 Words Transformers for Image Recognition at Scale paper&#xff1a;2010.11929.pdf (arxiv.org) code&#xff1a;google-research/vision_transformer (github.com) 期刊/会议&#xff1a;ICLR 2020 摘要 虽然Transformer体系结构已经成为自然…

【保姆级】@PostConstruct @PreDestroy使用示例

简介PostConstruct & PreDestroy被PostConstruct注解修饰的方法会在服务器加载Servlet的时候运行&#xff0c;并且只会被服务器调用一次&#xff0c;类似于Servlet的init()方法&#xff0c;被PostConstruct注解修饰的方法会在构造函数之后&#xff0c;init()方法执行之前执…

群晖NAS搭建portainer

参考&#xff1a; 群晖、威联通、Linux最强docker管理工具portainer安装及汉化教程2022最新版本 Portainer官方文档 How to run Docker commands without sudo on a Synology NAS 因为群晖的NAS是基于linux但是限制很多的系统&#xff0c;有一些东西通过命令行操作可能会遇到权…

Git 常见错误 之 fatal: Authentication failed 简单解决方法

Git 常见错误 之 fatal: Authentication failed 简单解决方法 目录 Git 常见错误 之 fatal: Authentication failed 简单解决方法 一、简单介绍 二、问题现象 三、解决方法 1、修改全局配置用户名 和 邮箱 2、修改凭证(具体问题具体分析) 一、简单介绍 Git(读音为/gɪt…

系分 - 案例分析 - 需求分析

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录系分 - 案例分析 - 需求分析结构化分析SA数据流图DFD答题技巧典型例题题目描述参考答案面向对象的分析OOA用例图用例模型细化用例描述用例关系【包含、扩展、泛化】分析模型定义概念类确定类之间的关系类图…

拉伯证券|LPR利率三连降 全国首套房贷利率今年或“奔三”

2022年LPR接连下调。新年伊始&#xff0c;“房贷一族”迎来好消息&#xff0c;一年一度存量房贷利率重定价的日子到了。关于房贷利率挂钩借款商场报价利率(LPR)、重定价日为每年1月1日的住宅顾客&#xff0c;本年的房贷利率将迎来下降。不仅如此&#xff0c;存量公积金借款也于…

Flink实时计算引擎入门教程

Flink实时计算引擎入门教程 1.简介 Fink是一个开源的分布式,高性能,高可用,准确的实时数据计算框架&#xff0c;它主要优点如下: 流式计算: Fink可以连接处理流式(实时)数据。 容错: Fink提供了有状态的计算,会记录任务的中间状态,当执行失败时可以实现故障恢复。 可伸缩: F…