原生lazyload、csp和deno
新奇
Chrome 意欲实现原生自动 lazyload 功能,并支持 img 和 iframe 的
loading="lazy"
配置,该特性预计在 Chrome 75 中支持。🔗点评:原生 lazyload 比起前端自己实现的 lazyload,更多会考虑到网速和手速的因素,会尝试去获取图片前 2k 以获取高宽进行布局占位,详见这篇文章。
Chrome 意欲支持
Content-Security-Policy
返回头中的report-to
指令,此指令相对 CSP 中前身指令report-uri
额外支持了合并多个违规上报请求,保证消耗更少的流量和电量。此前 Edge 已经支持。🔗介于多个网站利用传感器接口辅助生成访客指纹,Chrome Canary 将在站点调用传感器接口时弹出警告。此前 iOS 12.2 上的 Safari 默认禁止了这类行为。🔗
Node.js 作者 Ryan Dahl 在 JS Fest 大会里介绍了 deno 的近况。deno 旨在解决 Node.js 中不安全、不好的 module 实现和历史包袱,希望为 JavaScript / TypeScript 提供一个更受控的脚本运行时环境,适用于诸如 Map Reduce 和 Serveless 形态的场景。目前 deno 启动时间比 Node.js 快 3 倍,但 I/O 时间还不太理想。deno 将在今年夏天发布 1.0 版本,届时将支持代码并行加载、TLS/SSL、远程模块的 lockfile 和调试功能。🔗
点评:I deno about all this
Microsoft Build 于 5 月 6 日开始举办,第一天前端的重磅消息是:React Native on Windows。🔗 > 点评:各位观众,React Native 又喘气了!它会醒吗,让我们拭目以待!哦你说还官宣了 Edge 吗?那个不是很重要了
Facebook 年度开发者大会 F8 已于 5 月 1 日完成举行,会上涉及前端的演讲有:使用 React、GraphQL 和 Relay 构建新的 Facebook、React Native 的新架构、FBT:Facebook 如何大规模应用多语言功能、Web XR 的未来。🔗 > 点评:看完视频的感想,RN 大规模重构和稳定支持的消息是个定心丸,Facebook 的前端基础建设还是很超前的
苹果主导的 Intelligent Tracking Prevention 2.2 发布,挂载在 iOS 12.3 beta 上。新版本中,当一个域名被认定具备跨站请求追踪的能力,且该域名导向的页面带有 query string 或 hash 时,使用
document.cookie
进行持久化 cookie 设置,该 cookie 只会被保留 1 天。🔗点评:翻译一下就是,只要算法认为你有跨站请求追踪的能力,用 clickId + cookie 追踪用户就只有一天有效期
Chrome 76 即将支持
Promise.allSettled
API,它的行为类似于Promise.all
,但不会在任意一个 Promise 被 reject 的时候短路,而会等待所有的 Promise 完成之后再执行 then 回调。🔗Firefox 67 发布,支持了 FIDO U2F API,支持了
String.prototype.matchAll
和动态模块加载 APIimport('/my-module.js').then()
,支持了 CSS 中的word-break: break-word
、revert
、@media
中的prefers-color-scheme
,Service Worker 可以 debug 了,允许对用户追踪脚本和静默挖矿行为进行阻拦,提升了浏览器级别功能的可访问性,此外,还进行了大量性能优化:页面加载过程中降低setTimeout
的优先级、页面加载过程中更早绘制、将不使用的标签页暂停、内嵌了高性能 AV1 解码器 dav1d 等等。🔗
点评:超级丰富的一个版本更新
- Chrome 75 起将支持 Web Share API Level 2,在 Level 1 支持分享文字和 url 到 Web App 的基础上,额外支持了分享图片、音频、视频和文件。🔗
- Edge 发布了 macOS 预览版,针对 Touch Bar 进行了浏览体验的增强。🔗
百宝箱
MDX 是支持使用 JSX 和 markdown 混合编写文档的格式。
react-three-fiber 是一个 Three.js 在 React 上渲染的工具,可以用 React 组件语法完成 WebGL 渲染。
Formal 是一个 React Hooks 版本的 rc-form,集成了 React 表单组件通用的的非受控值缓存、值校验等功能。
React Redux 7.0.0 正式版完成发布,使用 React Hooks 重写了
connect
方法,并让 Component 直接监听 store 变化以修正 React Redux 6.x 引入的性能问题,同时,新版本支持了 batch 接口以合并多个不同的 dispatch。🔗点评:useRedux 接口还没有实现
带有完善工具链的 WebGL 渲染工具 babylon.js 4.0 发布,支持了虚拟场景视图、逼真渲染功能如透明包装、各向异性、光泽与次表面散射,追加了新物理引擎的支持。🔗 > 点评:巨硬牛逼!【破音
create-react-app 3.0 发布,支持了 React Hooks 的代码风格校验、TypeScript lint、Jest 24。🔗
Node.js 端的 websocket 库 ws 发布了第 7 个大版本,主要改变了 readyState 不为 OPEN 时
ping()
、pong()
、send()
的行为,停止支持了 Node.js v6。🔗兼顾高效与灵活的 WegGL 2D 渲染库 pixi.js 发布了第五个大版本更新。新版支持 shader 按分辨率加载,支持子模块按需加载,默认支持了 IE 11,并更新了大量依赖库。🔗
随着站点的复杂度与日俱增,JavaScript 代码的冷启动时间也在逐步增加。为了压缩 JavaScript 冷启动过程中的编译与字节码生成时间,TC39 提出了 Binary AST 提案,旨在让网站可以直接交付 AST 代码到浏览器端。Cloudflare 近期开源了他们生成 Binary AST 的 binjs-ref 方案,可在 Firefox Nightly 中打开相应的配置进行测试,官方测试中可降低多达 97% 的冷启动时间。🔗
Node.js 12.3.0 发布,实验性支持了 WebAssembly 模块,TLSSocket 暴露了
keylog
事件,支持了Readable.from
以将异步迭代器转化为 stream。🔗
点评:猜猜上面代码会打印什么?