新的一年,建议尝试下这7个JavaScript 库

news2024/11/19 5:27:46

022e82845995beb157026e1dbd428a6c.jpeg

常言道“你不必重新发明轮子”。第三方库它可以帮助您以简单的方式编写复杂且耗时的功能,一个好的项目应当使用一些优秀的库,下面我推荐下,在你的下个项目中,建议用上这7 个有用的库。

1、Video.js

Video.js 是一个基于 HTML5 的视频播放器库。它支持大多数流行的视频格式,并且可以在多个平台和浏览器上使用。

这是在 GitHub 上拥有超过 34k 颗星的星数最多的库之一。正如您从名称中猜到的那样,这个库提供了一个为 HTML5 世界从头开始构建的网络视频播放器。它支持 HTML5 视频和媒体源扩展,以及其他播放技术,如 YouTube 和 Vimeo(通过插件)。它支持在台式机和移动设备上播放视频。该项目于 2010 年年中启动,该播放器现已在超过 700,000 个网站上使用。

使用 Video.js 的基本步骤如下:

  1. 在页面中引入 Video.js 的 CSS 和 JS 文件。

  2. 在 HTML 中创建一个 div 元素,并设置一个类名为 "video-js"。

  3. 在 div 元素中添加一个 video 元素,并在其中设置视频的来源。

  4. 在 JavaScript 中通过 Video.js 提供的 API 来控制视频的播放、暂停、静音等操作。

<link href="path/to/video-js.css" rel="stylesheet">
<script src="path/to/video.js"></script>

<div class="video-js">
    <video id="my-video" class="video-js" controls preload="auto" width="640" height="264"
           poster="MY_VIDEO_POSTER.jpg" data-setup='{}'>
        <source src="MY_VIDEO.mp4" type='video/mp4'>
        <source src="MY_VIDEO.webm" type='video/webm'>
    </video>
</div>
var myPlayer = videojs('my-video');
myPlayer.play(); //播放
myPlayer.pause(); //暂停
myPlayer.muted(true); //静音

更多细节可以参考 Video.js 的官方文档:http://docs.videojs.com/。

2、Novu

构建通知系统很复杂。起初,这似乎只是发送一封电子邮件,但实际上,这只是一个开始。今天的用户期望通过电子邮件、SMS、推送、聊天和其他渠道获得多渠道通信体验。每天都会弹出一个不断增长的提供商列表,并且通知会围绕代码传播。这个库的目标是简化通知并为开发人员提供工具来在系统和用户之间创建有意义的通信。它在 GitHub 上拥有超过 14k 颗星。

import { Novu } from '@novu/node';

const novu = new Novu(process.env.NOVU_API_KEY);

await novu.trigger('<TRIGGER_NAME>', {
  to: [
    {
      subscriberId: '<UNIQUE_IDENTIFIER>',
      email: 'john1@doemail.com',
      firstName: 'John',
      lastName: 'Doe',
    },
  ],
  payload: {
    name: 'Hello World',
    organization: {
      logo: 'https://happycorp.com/logo.png',
    },
  },
});

3、Mousetrap

如果您必须在您的应用程序中处理键盘,那么这对您来说是一个很好的资源。这是一个简单的库,可以帮助您处理键盘快捷键。它支持特定键、键盘组合或键序列上的按键、按下和按下事件。它压缩后约 2kb,压缩后约 4.5kb,并且没有外部依赖性。这个库在 GitHub 上有超过 11k 颗星。

使用 Mousetrap 的基本步骤如下:

  1. 引入 Mousetrap 的 JS 文件。

  2. 使用 Mousetrap.bind() 或 Mousetrap.bindGlobal() 方法绑定键盘快捷键和回调函数。

  3. 在回调函数中定义键盘快捷键被按下时的操作。

示例代码如下:

<script src="path/to/mousetrap.js"></script>

<script>
    Mousetrap.bind('ctrl+shift+a', function() {
        alert('ctrl+shift+a');
    });

    Mousetrap.bind('ctrl+shift+b', function() {
        alert('ctrl+shift+b');
    });
</script>

这个库可以帮助你快捷地实现键盘快捷键,更多细节可以参考 Mousetrap 的官方文档:https://craig.is/killing/mice

4、Barba

这是一个小型(7kb 缩小和压缩)且易于使用的库,可帮助您在网站页面之间创建流畅和平滑的过渡。它有助于减少页面之间的延迟,最大限度地减少浏览器 HTTP 请求并增强用户的网络体验。它在 GitHub 上拥有超过 10k 颗星。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>BarbaJS legacy example</title>
  </head>
  <body>

    <!-- define the wrapper and the container -->
    <div data-barba="wrapper">
      <div data-barba="container" data-barba-namespace="page-a">
        <h1>Home</h1>
      </div>
    </div>

    <!-- load barba (UMD version) -->
    <script src="https://unpkg.com/@barba/core"></script>

    <!-- load gsap animation library (minified version) -->
    <script src="https://unpkg.com/gsap@latest/dist/gsap.min.js"></script>

    <!-- init barba with a simple opacity transition -->
    <script type="text/javascript">
      barba.init({
        transitions: [{
          name: 'opacity-transition',
          leave(data) {
            return gsap.to(data.current.container, {
              opacity: 0
            });
          },
          enter(data) {
            return gsap.from(data.next.container, {
              opacity: 0
            });
          }
        }]
      });
    </script>
  </body>
</html>

5、dc.js

dc.js 是一个用于创建交互式数据可视化的 JavaScript 库。它是基于 D3.js 库的一个扩展,提供了一些高级功能和封装,使得创建可视化更加简单和高效。

dc.js 支持多种类型的图表,如条形图,饼图,散点图,线图等,并且支持多维数据筛选和缩放。

使用 dc.js 的基本步骤如下:

  1. 引入 dc.js 和 D3.js 的 JavaScript 文件

  2. 准备数据

  3. 创建图表

  4. 配置图表

  5. 渲染图表

示例代码如下:

// 引入 dc.js 和 d3.js
import * as dc from 'dc';
import * as d3 from 'd3';

// 准备数据
const data = [
    {name: "A", value: 10},
    {name: "B", value: 20},
    {name: "C", value: 30}
];

// 创建图表
const chart = dc.barChart("#chart");

// 配置图表
chart
    .width(300)
    .height(200)
    .x(d3.scaleBand())
    .xUnits(dc.units.ordinal)
    .y(d3.scaleLinear().domain([0, 30]))
    .dimension(data)
    .group(data);

// 渲染图表
chart.render();

6、Time ago

Timeago是一个JavaScript库,它可以在网页上将时间显示为简短的形式,例如“3小时前”或“1个月前”。这可以帮助您在网页上创建动态时间戳。

使用Timeago非常简单,您只需要在网页上引用timeago.js文件,然后在需要显示时间的元素上添加一个"timeago"类。

1、调用也十分简单,首先引入timeago.js文件

<script src="//unpkg.com/timeago.js"></script>

2、然后在需要显示时间的标签上面添加datetime属性

<div class="timeago" datetime="2016-06-30 09:20:00"></div>

3、最后在javascript里面调用timeago()即可

let timeagoInstance = timeago();
timeagoInstance.render(document.querySelectorAll('time'));

4、如果你需要更改语言,可以在调用timeago的时候传入语言的参数

let timeagoInstance = timeago('zh_CN');
timeagoInstance.render(document.querySelectorAll('time'));

这里给出的是最简单的用法,更多用法可以参考文档

7、js-xss

顾名思义,这个库用于过滤用户的输入以防止 XSS 攻击。它使用白名单指定的配置清理不受信任的 HTML(以防止 XSS)。它在 GitHub 上拥有超过 4.5k 颗星。XSS 攻击是指攻击者利用网站的漏洞,在用户浏览器中插入恶意脚本。

使用 js-xss 的方法如下:

1、引入js-xss文件

<script src="xss.min.js"></script>

2、创建xss对象

var xss = new FilterXSS({
  whiteList: {...}
});

3、调用xss对象的process函数,传入需要处理的字符串即可

var html = xss.process('<script>alert("XSS")</script>');
console.log(html); // 输出 <script>alert("XSS")</script> 被过滤掉了

需要注意的是,默认的白名单可能不能满足所有需求,因此开发者可以根据自己的需要自定义白名单。

这个库是非常有用的,通过这个库可以很好的防止XSS攻击,建议在处理用户输入的数据的时候使用。

来源:https://medium.com/javascript-in-plain-english/7-useful-javascript-libraries-you-can-use-in-your-next-project-6bd161757135

作者:Farhan Tanvir

注:非直译,有添加部分

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

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

相关文章

跑步用挂脖耳机好还是无线耳机、公认最好的跑步耳机推荐

蓝牙耳机近几年受到市场的欢迎&#xff0c;种类越来越多&#xff0c;各类功能也日益五花八门&#xff0c;消费者很难准确的进行分辨&#xff0c;一不小心可能买到华而不实的产品。现在了解一下值得入手的蓝牙耳机&#xff0c;从多个角度对蓝牙耳机进行评估后&#xff0c;得出以…

互联网导航系统——DNS:《流浪地球2》中重启互联网的现实解读

《流浪地球2》展现了一个浩大的宇宙级工程&#xff1a;宏大壮观的万座行星发动机、拥有超强算力的量子计算机、连接天地的太空电梯……这些“硬科技”让观众大开眼界。 电影中刘德华饰演的图恒宇能否重启互联网根服务器是拯救地球任务的关键。互联网可以重启吗&#xff1f;现实…

Array.prototype.sort()排序,升降排序使用方法

sort() 方法对数组中的元素进行适当排序并返回数组。这种情况不一定稳定。默认排序顺序根据字符串 Unicode 代码点。 目录 升序降序排序法 对象可以按照某个属性排序 const months [March, Jan, Feb, Dec] months.sort() // [Dec, Feb, Jan, March] console.log(months) // …

聊聊GC是如何快速枚举根节点的

本文已收录至Github&#xff0c;推荐阅读 &#x1f449; Java随想录 世界上最快乐的事&#xff0c;莫过于为理想而奋斗。——苏格拉底 文章目录什么是根节点枚举根节点枚举存在的问题如何解决根节点枚举的问题安全点安全区域HotSpot使用的是可达性分析算法&#xff0c;该算法需…

ssm高校大学校园租赁平台的设计与实现java

当今社会&#xff0c;信息技术发展快速。同时&#xff0c;随着生活水平提高&#xff0c;学生有了更大的购买力&#xff0c;这就使得闲置物品增多&#xff0c;校园里物品更新快&#xff0c;使用周期短。而且传统的校园租赁平台&#xff0c;已经不能够满足学生的需求。学院校园租…

人工智能识别图片食物

一、准备食物图片&#xff08;橘子和苹果&#xff09;二、识别学习关键代码编写public static void study() throws Exception {//学习Picture picture new Picture();//图片解析类 图片&#xff08;文件&#xff09;-三通道矩阵Config config new Config();//现有的环境业务…

一文了解WebSocket及Springboot集成WebSocket

文章目录WebSocket是什么WebSocket通信原理和机制WebSocket协议是什么WebSocket协议和Http协议有什么区别WebSocket常用在那些场景Springboot集成WebSocketpom依赖java相关代码configcomponenthtml代码页面访问效果WebSocket是什么 &#x1f34a;WebSocket是一种网络通信协议&…

Linux C编程

编写C代码 编辑器&#xff1a;vim&#xff0c;编写.c文件 编译 gcc 源文件 -o 生成可执行文件名 gcc -c&#xff1a;只编译&#xff0c;不链接&#xff0c;生成.o文件 make工具和Makefile文件 make工具&#xff1a;GNU make&#xff0c;是一个文件&#xff0c;用于将源代…

【CANoe示例分析】EthernetCanGW_Test_CN

1、工程路径 此示例工程来自于Vector官网:EthernetCanGW_Test_CN 感兴趣的可以自行下载! 2、示例目的 如何在CANoe中创建一个网关,实现转发以太网报文到多个CAN网络中。该使用案例是对CAN网络进行压力测试 3、示例内容 本示例通过执行Test Module里的测试用例Bus_load…

《电路/电路原理》—戴维宁(南)定理实战演练

前言战前准备什么是戴维南定理&#xff1f;戴维南定理&#xff08;Thevenins theorem&#xff09;标准解释&#xff1a;含独立电源的线性电阻单口网络N&#xff0c;就端口特性而言&#xff0c;可以等效为一个电压源和电阻串联的单口网络。电压源的电压等于单口网络在负载开路时…

CSS预处理器、移动端适配

1、预处理器概念 1.1、CSS编写的痛点 CSS作为一种样式语言, 本身用来给HTML元素添加样式是没有问题的。 但是目前前端项目已经越来越复杂, 不再是简简单单的几行CSS就可以搞定的, 我们需要几千行甚至上万行的CSS来完成页面的美化工作。 随着代码量的增加, 必然会造成很多的…

LeetCode-26. 删除有序数组中的重复项

目录题目分析双指针理解代码实现题目来源 26. 删除有序数组中的重复项 题目分析 解法&#xff1a; 双指针 首先注意数组是有序的&#xff0c;那么重复的元素一定会相邻。 要求删除重复元素&#xff0c;实际上就是将不重复的元素移到数组的左侧。 考虑用 2 个指针&#xff0c;…

拉伯证券|7900亿芯片巨头狂跌,发生了什么?

全球芯片巨子忽然爆雷。 英特尔刚刚交出了一份“十分糟糕”的财报。美东时间1月26日美股盘后&#xff0c;英特尔公布的2022第四季度及全年财报显现&#xff0c;第四季度的营收为140亿美元&#xff0c;同比大幅下降32%&#xff0c;不及商场预期&#xff1b;第四季度净亏损7亿美元…

【项目精选】基于SpringBoot和Vue开发的功能强大的图书馆系统(附源码)

功能介绍 图书馆系统功能包括&#xff1a; 1、读者端&#xff1a; 1.智能推荐图书 2.读者在线预约座位 3.读者借阅归还图书 4.图书详情 5.图书评论、评星 6.用户登录、注册、修改个人信息 7.用户自定义图书标签 8.用户报名活动参加活动 9.书架展示和添加删除 10.用户邮件登录…

Win11的两个实用技巧系列之u盘怎么设置密码?

Win11系统u盘怎么设置密码?Win11设置u盘密码的方法win11U盘怎么设置密码&#xff1f;今天小编就为大家带来了Win11设置u盘密码的方法&#xff0c;需要的朋友一起看看吧现在还是有很多用户都在使用U盘来存储一些重要的文件和数据&#xff0c;而为了更好的保护里面的安全&#x…

mongodb的索引操作

Mongodb的索引操作 学习目标 掌握 mongodb索引的创建&#xff0c;删除操作掌握 mongodb查看索引的方法掌握 mongodb创建唯一索引的方法 1. 为什么mongdb需要创建索引 加快查询速度进行数据的去重 2. mongodb创建简单的索引方法 语法&#xff1a;db.集合名.ensureIndex({属…

【手写 Promise 源码】第八篇 - 完善 Promise 并通过 promise-aplus-tests 测试

一&#xff0c;前言 上一篇&#xff0c;实现 Promise 对返回值 x 各种情况的分析和处理&#xff0c;主要涉及以下几个点&#xff1a; 回顾了相关的 Promise A 规范内容&#xff1b;根据 Promise A 规范描述和要求&#xff0c;实现了核心解析方法&#xff1a;resolvePromise&a…

BUUCTF-Reverse Writeup【持续更新】

本文示例程序可见 BUUCTF 官网或者 github easyre | 入门级 方法一&#xff1a;WinHex 打开 easyre.exe&#xff0c;浏览一下字符串&#xff0c;发现有flag方法二&#xff1a;IDA Pro 打开 easyre.exe&#xff0c;能直接看到flag&#xff0c;或者 F5 反汇编看到逻辑是输入两个…

怎么把多个JPG合并成一个PDF?还不快来学

我们通常在处理工作文件时会有很多JPG图片需要传输&#xff0c;不过JPG图片数量一般都非常多&#xff0c;我们需要一张一张的进行传输&#xff0c;不仅会浪费很多时间&#xff0c;还很不方便查看&#xff0c;所以我们就可以及将JPG图片合并到一个PDF文件中&#xff0c;这样就可…

直流电机控制器设计

导读:本文主要介绍了DC-motor电流环和速度环的PI控制器参数的设计,并且简单介绍了设计控制器所需要的背景知识,相关仿真文件的下载地址在文章末尾可供大家下载。 DC-motor 的数学模型 直流电机电枢绕组的电压方程为: