常用第三方工具库

第三方库概览

名称文档一句话介绍
jQuery官网:https://jquery.com/
中文网:https://jquery.cuishifeng.cn/
让操作DOM变得更容易
Lodash官网:https://lodash.com/docs
中文网:https://www.lodashjs.com/
你能想到的工具函数它都帮你写了
Animate.css官网:https://animate.style/常见的CSS动画效果都帮你写好了
Axios官网:https://axios-http.com/zh/让网络请求变得更简单
MockJS官网:http://mockjs.com/ajax拦截和模拟数据生成
Moment官网:https://momentjs.com/
中文网:http://momentjs.cn/
让日期处理更容易
ECharts官网:https://echarts.apache.org/zh搞定所有你能想到的图表📈
animejs官网:https://animejs.com/简单好用的JS动画库
editormd官网:https://pandao.github.io/editor.mdmarkdown编辑器
validate官网:http://validatejs.org/简单好用的JS对象验证库
date-fns官网:https://date-fns.org/功能和Moment几乎相同
支持tree shaking
zepto官网:https://zeptojs.com/功能和jQuery几乎相同
对移动端支持更好
包体积更小
nprogress官网:https://github.com/rstacruz/nprogress简单好用的进度条插件
YouTube就使用的是它
qs官网:https://github.com/ljharb/qs一个用于解析url的小工具

对于第三方库,除了下载使用,还可以通过CDN在线使用

科普知识:CDN

CDN称之为内容分发网络(Content Delivery Network)。

简单来说,就是提供很多的服务器,用户访问时,自动就近选择服务器给用户提供资源

img

国内使用广泛的免费CDN站点:https://www.bootcdn.cn/

JQuery

官网:https://jquery.com/

中文网:https://jquery.cuishifeng.cn/

CDN:https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js

针对DOM的操作无非以下几种:

  • 获取它
  • 创建它
  • 监听它
  • 改变它

JQuery可以让上面整个过程更加轻松

jQuery函数

jQuery提供了一个函数,名称为jQuery,也可以写作$

该函数提供了强大的DOM控制能力

通过下面的示例,可以快速理解jQuery的核心功能

// 获取类样式为container的所有DOM
const container = $(".container")

// 获取container后面的兄弟元素,元素类样式必须包含list
container.nextAll(".list");

// 删除元素
container.remove();

// 找到所有类样式为list元素的后代li元素,给它们加上类样式item
$(".list li").addClass("item");

// 为所有p元素添加一些style
$("p").css({ "color": "#ff0011", "background": "blue" });

// 注册DOMContentLoaded事件
$(function(){ 
  // ...
})

// 给所有li元素注册点击事件
$("li").click(function(){
  // ...
})

// 创建一个a元素,设置其内容为link,然后将它作为子元素追加到类样式为.list的元素中
$("<a>").text("link").appendTo(".list");

下面依次介绍jQuery中的核心概念,以便于文档查阅

jQuery对象和DOM对象

通过jQuery得到的元素是一个jQuery对象,而不是传统的DOM

jQuery对象是一个伪数组,它和DOM元素的关系如下

jQuery对象和DOM之间可以互相转换

// jQuery -> DOM
jQuery对象[索引]
jQuery对象.get(索引)

// DOM -> jQuery
$(DOM对象)

官网文档中的目录

目录名内容
选择器选择器是一个字符串,用于描述要选中哪些元素
筛选在当前jQuery对象的基础上,进一步选中元素
文档处理更改HTML文档结构,例如删除元素、清空元素内容、改变元素之间的关系
属性控制元素属性,例如修改类样式、读取和设置文本框的value、读取和设置img的src
css控制元素style样式,例如改变字体颜色、设置背景、获取元素尺寸、获取和设置滚动位置
事件监听元素的事件,例如监听文档加载完成、监听元素被点击
ajaxjQuery封装了XHR,使ajax访问更加方便
这部分功能目前已被其他第三方库全面超越

Lodash

官网:https://lodash.com/docs

中文网:https://www.lodashjs.com/

CDN:https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.21/lodash.min.js

Lodash是一个针对ES的古老工具库,它出现在ES5之前

Lodash提供了大量的API,弥补了ES中对象、函数、数组API不足的问题

你可以想到的大部分工具函数,都可以在Lodash中找到

如果你不编写框架或通用库,一般不会用到Lodash

Animate.css

官网:https://animate.style/

CDN:https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.1/animate.min.css

Animate.css 库提供了大量的动画效果,开发者仅需使用它提供的类名即可

注意:animate.css中的动画对行盒无效

基本使用

类名格式为:

animate__animated animate__效果名

效果名分为以下几个大类,你可以从官网中找到对应的分类,每个分类下有多种效果名可供使用

分类含义
Attention seekers强调
Back entrances进入
Back exits退出
Bouncing entrances弹跳进入
Bouncing exits弹跳退出
Fading entrances淡入
Fading exits淡出
Flippers翻转
Lightspeed光速
Rotating entrances旋转进入
Rotating exits旋转退出
Specials特殊效果
Zooming entrances缩放进入
Zooming exits缩放退出
Sliding entrances滑动进入
Sliding exits滑动退出

工具类

Animate.css 还提供了多个工具类,可以控制动画的延时重复次数速度

  • 延时

    /* 默认无延时 */
    animate__delay-1s  /* 延时1秒 */
    animate__delay-2s  /* 延时2秒 */
    animate__delay-3s  /* 延时3秒 */
    animate__delay-4s  /* 延时4秒 */
    animate__delay-5s  /* 延时5秒 */
    
  • 重复次数

    /* 默认重复1次 */
    animate__repeat-2 /* 重复2次 */
    animate__repeat-3 /* 重复3次 */
    animate__infinite /* 重复无限次 */
    
  • 速度

    /* 默认1秒内完成动画 */
    animate__slow /* 2秒内完成动画 */
    animate__slower /* 3秒内完成动画 */
    animate__fast /* 800毫秒内完成动画 */
    animate__faster /* 500毫秒内完成动画 */
    

示例:

<!-- 
使用animate.css
动画名:bounce
速度:快
重复:无限次
延迟:1秒
-->
<h1
    class="
           animate__animated
           animate__bounce
           animate_fast
           animate__infinite
           animate__delay-1s
           "
    >
  Hello Animate
</h1>

Axios

官网:https://axios-http.com/zh/

CDN:https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.min.js

axios是一个请求库,在浏览器环境中,它封装了XHR,提供更加便捷的API发送请求

基本使用

// 发送 get 请求到 https://study.duyiedu.com/api/herolist,输出响应体的内容
axios.get("https://study.duyiedu.com/api/herolist").then(resp=>{
  console.log(resp.data); // resp.data 为响应体的数据,axios会自动解析JSON格式
})

// 发送 get 请求到 https://study.duyiedu.com/api/user/exists?loginId=abc,输出响应体的内容
axios.get("https://study.duyiedu.com/api/user/exists", {
  params: { // 这里可以配置 query,axios会自动将其进行Url编码
    loginId: "abc"
  },
}).then(resp=>{
  console.log(resp.data); // resp.data 为响应体的数据,axios会自动解析JSON格式
})

// 发送 post 请求到 https://study.duyiedu.com/api/user/reg
// axios 会将第二个参数转换为JSON格式的请求体
axios.post("https://study.duyiedu.com/api/user/reg", {
  loginId: 'abc',
  loginPwd: '123123',
  nickname: '棒棒鸡'
}).then(resp=>{
  console.log(resp.data); // resp.data 为响应体的数据,axios会自动解析JSON格式
})

axios的基本用法为:

axios.get(url地址, [请求配置]);
axios.post(url地址, [请求体对象], [请求配置]);

// 或直接使用 axios 方法,在请求配置中填写请求方法
axios(请求配置);

实例

axios允许开发者先创建一个实例,后续通过使用实例进行请求

这样做的好处是可以预先进行某些配置

示例:

// 创建实例
const instance = axios.create({
  baseURL: 'https://study.duyiedu.com/'
});

// 发送 get 请求到 https://study.duyiedu.com/api/herolist,输出响应体的内容
instance.get("/api/herolist").then(resp=>{
  console.log(resp.data); // resp.data 为响应体的数据,axios会自动解析JSON格式
})

拦截器

有时,我们可能需要对所有的请求或响应做一些统一的处理

比如,在请求时,如果发现本地有token,需要附带到请求头

又比如,在拿到响应后,我们仅需要取响应体中的data属性

再比如,如果发生错误,我们需要做一个弹窗显示

这些统一的行为就非常适合使用拦截器

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
  // config 为当前的请求配置
  // 在发送请求之前做些什么
  // 这里,我们添加一个请求头
  const token = localStorage.getItem('token');
  if(token){
    config.headers.authorization = token;
  }
  return config; // 返回处理后的配置
});

// 添加响应拦截器
axios.interceptors.response.use(function (resp) {
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  return resp.data.data; // 仅得到响应体中的data属性
}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  alert(error.message); // 弹出错误消息
});

设置好拦截器后,后续的请求和响应都会触发对应的函数

拦截器可以针对axios实例进行设置

MockJS

官网:http://mockjs.com/

CDN:https://cdn.bootcdn.net/ajax/libs/Mock.js/1.0.0/mock-min.js

MockJS有两个作用:

  1. 产生模拟数据
  2. 拦截Ajax

下面两张图说明MockJS的作用

image-20210524134909296

image-20210524135812109

仅模拟数据

Mock.mock(数据模板)

数据模板有其特有的书写规范,具体写法见官网

拦截+模拟数据

Mock.mock(要拦截的url, 要拦截的请求方法, 数据模板)

更多用法见官网

注意,MockJS拦截数据的原理是重写了XHR,因此它仅能拦截XHR的数据请求,而无法拦截使用fetch 发出的请求

具体的,MockJS可以拦截:

  • 原生XmlHttpRequest
  • jQuery中的$.ajax
  • axios

MockJS可以模拟网络延时,用法为:

Mock.setup({
  timeout: 400 // 网络延时400毫秒
})

Mock.setup({
  timeout: '200-600' // 网络延时200-600毫秒
})

Moment

官网:https://momentjs.com/

中文网:http://momentjs.cn/

CDN:https://cdn.bootcdn.net/ajax/libs/moment.js/2.29.1/moment.min.js

各种语言包:https://www.bootcdn.cn/moment.js/

Moment提供了强大的日期处理能力

时间基础知识

单位

单位名称换算
hour小时1 day = 24 hours
minute分钟1 hour = 60 minutes
second1 minute = 60 seconds
millisecond (ms)毫秒1 second = 1000 ms
nanosecond (ns)纳秒1 ms = 1000 ns

GMT和UTC

世界划分为24个时区,北京在东8区,格林威治在0时区。

img

GMT:Greenwish Mean Time 格林威治世界时。太阳时,精确到毫秒。

UTC:Universal Time Coodinated 世界协调时。以原子时间为计时标准,精确到纳秒。

国际标准中,已全面使用UTC时间,而不再使用GMT时间

GMT和UTC时间在文本表示格式上是一致的,均为星期缩写, 日期 月份 年份 时间 GMT,例如:

Thu, 27 Aug 2020 08:01:44 GMT

另外,ISO 8601标准规定,建议使用以下方式表示时间:

YYYY-MM-DDTHH:mm:ss.msZ
例如:
2020-08-27T08:01:44.000Z

GMT、UTC、ISO 8601都表示的是零时区的时间

Unix 时间戳

Unix 时间戳(Unix Timestamp)是Unix系统最早提出的概念

它将UTC时间1970年1月1日凌晨作为起始时间,到指定时间经过的秒数(毫秒数)

程序中的时间处理

程序对时间的计算、存储务必使用UTC时间,或者时间戳

在和用户交互时,将UTC时间或时间戳转换为更加友好的文本

思考下面的问题:

  1. 用户的生日是本地时间还是UTC时间?
  2. 如果要比较两个日期的大小,是比较本地时间还是比较UTC时间?
  3. 如果要显示文章的发布日期,是显示本地时间还是显示UTC时间?
  4. 北京时间2020-8-28 10:00:00格林威治2020-8-28 02:00:00,两个时间哪个大,哪个小?
  5. 北京的时间戳为0格林威治的时间戳为0,它们的时间一样吗?
  6. 一个中国用户注册时填写的生日是1970-1-1,它出生的UTC时间是多少?时间戳是多少?

Moment的核心用法

Moment的使用分为两个部分:

  1. 获得Moment对象
  2. 针对Moment对象做各种操作

ECharts

官网:https://echarts.apache.org/zh

CDN:https://cdn.bootcdn.net/ajax/libs/echarts/5.1.1/echarts.min.js

具体使用方法暂不介绍

技能树

技能树.drawio

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
PyCharm是一款常用的Python集成开发环境(IDE),它支持使用第三方库来扩展其功能。以下是一些常用第三方库: 1. NumPy:用于进行科学计算和数值操作的,提供了高效的多维数组对象和各种数学函数。 2. Pandas:用于数据分析和处理的,提供了高效的数据结构和数据操作工具,可以轻松处理和分析大型数据集。 3. Matplotlib:用于绘制各种类型的图表和可视化的,可以创建线图、散点图、柱状图等多种图形。 4. TensorFlow:用于机器学习和深度学习的,提供了丰富的工具和算法来构建和训练神经网络模型。 5. Scikit-learn:用于机器学习和数据挖掘的,提供了各种常用的机器学习算法和工具,包括分类、回归、聚类等。 6. Requests:用于发送HTTP请求和处理响应的,可以方便地进行网络通信和数据获取。 7. Beautiful Soup:用于解析HTML和XML文档的,可以方便地提取和处理网页中的数据。 8. Django:用于Web应用开发的高级Python框架,提供了强大的功能和易于使用的API,可以快速构建复杂的Web应用。 9. Flask:用于Web应用开发的轻量级Python框架,提供了简洁的API和灵活的扩展机制,适合构建小型和中型的Web应用。 10. SQLAlchemy:用于数据操作和ORM(对象关系映射)的,提供了高级的数据访问和查询功能,支持多种数据后端。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狡辉两门

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值