sendBeacon
navigator.sendBeacon(url, data);
如果浏览器成功的加入发送数据的队列,返回true,否则false;
这个方法强调的是分析和诊断代码,它们是在页面卸载前尝试向服务器发送数据的代码;发送数据的瞬间可能会错失收集数据的机会,但是对传统的开发者来说,在页面卸载前发送完数据是很难做到的,因为浏览器经常忽略unload处理函数中的异步请求(XMLHttpRequest)
为了解决这个问题,分析和诊断代码经常是在unload or beforeunload函数中使用同步的XMLHttpRequest请求来提交数据;
但是同步的XMLHttpRequest请求会阻碍文档的卸载,导致下一个页面加载缓慢。下一个页面什么也不做不了来避免页面加载缓慢的问题,因为问题是前...
js新增
window.scrollTo(x-coord, y-coord)
window.scrollTo(options)
option={
left:xxx,top:xxx,behavior: ‘smooth/auto’
}
closest
document.querySelector(“li”).closest(“#nav”)
URLSearchParams
new URLSearchParams(location.search).get(“name”)
var url = new URL(‘https://example.com?foo=1&bar=2’);
var params = new URLS...
Scope Hoisting
开启 Scope Hoisting 后,代码体积更小,因为函数申明语句会 产生大量的代码;
代码在运行时因为创建的函数作用域 变少了 ,所以内 存开销也变小了;
Scope Hoisting 的 实现原理其实很简单:分析模块之间的依赖关系,尽可能将被打散的 模块合并到一个函数中,但前提是不能造成代码冗余 。 因此只有那些被引用了 一次的模块才 能被合井 。
由于 Scope Hoisting 需要分析模块之间的依赖关系,因此源码必须采用 ES6 模块化 语句, 不然它将无法生效。涉及配置:
const ModuleConcatenationPlugin = require (’webpack/lib/optimize/ModuleConcatenationPlugin ’);
modu...
共计 109 篇文章,22 页。