JS 中这些冷门但好用的 API,你知道多少?

简介: JS 中这些冷门但好用的 API,你知道多少?

数字化管理平台

Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus

Vue权限系统案例

个人博客地址

  1. Intl.DateTimeFormat
  2. Intl.DateTimeFormat 对象能使日期和时间在特定的语言环境下格式化。
// 创建一个新的 Intl.DateTimeFormat 对象
Intl.DateTimeFormat()
// getter 函数,根据此 DateTimeFormat 对象的区域设置和格式化选项格式化日期
Intl.DateTimeFormat.prototype.format()

示例:

// 实例化一个日期对象
const date = new Date()
// 创建一个新的 Intl.DateTimeFormat 对象
let dtf_en = new Intl.DateTimeFormat('en-US').format(date)
// 使用 locales 参数指定美式英语 (US English):month-day-year 格式
console.log(dtf_en) // 5/6/2023
// 使用 locales 参数指定中文 (CH Chinese):month-day-year 格式
let dtf_ch = new Intl.DateTimeFormat('zh-CH').format(date)
console.log(dtf_ch) // 2023/5/6
// 请求参数 (options) 中包含参数星期 (weekday),并且该参数的值为长类型 (long) - 参考语言环境对应输出
let options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }
let dtf_ch_options = new Intl.DateTimeFormat('zh-CH', options).format(date)
console.log(dtf_ch_options); // 2023年5月6日星期六

API 参考地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat

Navigator.sendBeacon

navigator.sendBeacon(url, data) 方法可用于通过 HTTP POST 将少量数据 异步 传输到 Web 服务器。

data 参数是将要发送的 ArrayBuffer、ArrayBufferView、Blob、DOMString、FormData 或 URLSearchParams 类型的数据。

当用户代理成功把数据加入传输队列时,sendBeacon() 方法将会返回 true,否则返回 false。

方法主要用于满足统计和诊断代码的需要。在项目中可做"埋点"处理,收集用户的使用习惯和信息数据。

可以解决传统方式(如下)出现的问题(迫使用户代理延迟卸载文档)

发起一个同步 XMLHttpRequest 来发送数据。

创建一个 img 元素并设置 src,大部分用户代理会延迟卸载(unload)文档以加载图像。

navigator.sendBeacon 优势

相较于img标签,使用navigator.sendBeacon会更规范,数据传输上可传输资源类型会更多。

对于ajax在页面卸载时上报,ajax有可能没上报完,页面就卸载了导致请求中断,因此ajax处理这种情况时必须作为同步操作.

sendBeacon是异步的,不会影响当前页到下一个页面的跳转速度,且不受同域限制。这个方法还是异步发出请求,但是请求与当前页面脱离关联,作为浏览器的任务,因此可以保证会把数据发出去,不拖延卸载流程。

在会话结束时发送统计数据

网站通常希望在用户完成页面浏览后向服务器发送分析或诊断数据,最可靠的方法是在 visibilitychange 事件发生时发送数据

document.addEventListener('visibilitychange', function logData() {
  if (document.visibilityState === 'hidden') {
    navigator.sendBeacon('/log', analyticsData);
  }
});

基于Navigator.sendBeacon的埋点上报

Navigator.sendBeacon是目前通用的埋点上报方案,Navigator.sendBeacon方法接受两个参数,第一个参数是目标服务器的 URL,第二个参数是所要发送的数据(可选),可以是任意类型(字符串、表单对象、二进制对象等等)。

页面停留时间上报埋点

绑定点击事件,当点击目标元素时,触发埋点上报。

function clickButton(url, data) {
    navigator.sendBeacon(url, data)
}

页面停留时间上报埋点

路由文件中,初始化一个startTime,当页面离开时通过路由守卫计算停留时间。

let url = ''// 上报地址
let startTime = Date.now()
let currentTime = ''
router.beforeEach((to, from, next) => { 
     if (to) {
         currentTime = Date.now()
         stayTime = parseInt(currentTime - startTime)
         navigator.sendBeacon(url, {time: stayTime})
         startTime = Date.now()
     }
})

内容可见埋点

通过交叉观察器去监听当前元素是否出现在页面

// 可见性发生变化后的回调 
function callback(data) { 
    navigator.sendBeacon(url, { target: data[0].target, text: '内容可见' }) 
} 
// 交叉观察器配置项 
let options = {}; 
// 生成交叉观察器 
const observer = new IntersectionObserver(callback); 
// 获取目标节点 
let target = document.getElementById("target"); 
// 监听目标元素 
observer.observe(target);


相关文章
|
8天前
|
JavaScript 前端开发 API
复习JavaScript中的数组API
这段代码介绍了JavaScript数组的几种实用方法:`fill`用于用固定值覆盖指定范围内的元素;`find`查找符合条件的第一个元素;`findIndex`获取该元素的索引;`sort`对数组排序,需提供比较函数以正确排序数字;结合`slice`与`sort`可在不改动原数组的情况下进行排序;`reverse`反转数组元素;利用`map`可创建新数组并替换其中的特定元素,同时保持原数组不变。
8 1
|
6天前
|
存储 JavaScript API
Node.js中的异步API
【8月更文挑战第16天】
13 1
|
8天前
|
XML JavaScript 前端开发
JavaScript中的DOM解析器DOMParser api的讲解
`DOMParser`能将XML或HTML源码字符串解析成DOM `Document`。通过`new DOMParser()`创建实例,使用`.parseFromString(string, type)`方法进行解析,其中`string`为待解析的字符串,`type`指定解析类型如`text/html`或`text/xml`等,返回一个`Document`对象。例如,可解析包含`<p>666</p>`的字符串并获取其文本内容`666`。
13 1
|
4天前
|
JavaScript 前端开发 定位技术
百度地图JavaScript API v2.0创建地图
百度地图JavaScript API v2.0创建地图
7 0
|
26天前
|
存储 JavaScript 安全
Node中的AsyncLocalStorage 使用问题之生产环境中使用async_hooks的问题如何解决
Node中的AsyncLocalStorage 使用问题之生产环境中使用async_hooks的问题如何解决
|
7天前
|
JavaScript API
复习总结JS中不熟练的API
复习总结JS中不熟练的API
14 0
|
11天前
|
缓存 JavaScript 前端开发
微信 JS-SDK Demo “分享信息设置” API 及数字签名生成方法(NodeJS版本)
微信 JS-SDK Demo “分享信息设置” API 及数字签名生成方法(NodeJS版本)更新时间(2020-10-29)
|
1月前
|
安全 Java API
Nest.js 实战 (三):使用 Swagger 优雅地生成 API 文档
这篇文章介绍了Swagger,它是一组开源工具,围绕OpenAPI规范帮助设计、构建、记录和使用RESTAPI。文章主要讨论了Swagger的主要工具,包括SwaggerEditor、SwaggerUI、SwaggerCodegen等。然后介绍了如何在Nest框架中集成Swagger,展示了安装依赖、定义DTO和控制器等步骤,以及如何使用Swagger装饰器。文章最后总结说,集成Swagger文档可以自动生成和维护API文档,规范API标准化和一致性,但会增加开发者工作量,需要保持注释和装饰器的准确性。
Nest.js 实战 (三):使用 Swagger 优雅地生成 API 文档
|
20天前
|
开发框架 前端开发 关系型数据库
使用egg.js开发后端API接口系统 什么是Egg.js
使用egg.js开发后端API接口系统 什么是Egg.js

热门文章

最新文章