Tuax 技术周刊 2021-09-17期

169 阅读3分钟

1. React18 自动批量更新

React18版本,通过默认执行更多的批处理增加开箱即用的性能改进,无需在应用程序或库代码中手动批量更新。

  • before

在之前的版本中,React只会在合成事件内或者class语法的内置生命周期内(componentWillMount、componentDidMount等)进行state合并后re-render。默认情况下不会对promise、setTimeout、手动事件绑定的中的state更新做批处理。

  • after

通过createRoot,创建的应用,所有的更新都将自动处理,包括promise、setTimeout、手动事件绑定,这样会导致更少的渲染,从而获得更好的性能。

2. 构建打包非 JavaScript 的资源

image.png

有多种方法可以在 Web 上包含非 JavaScript 资源,但它们有各种缺点,并且不能跨各种工具链工作。new URL(..., import.meta.url)模式是最有前途的解决方案,如今已在浏览器、各种打包程序(ViteRollup、Webpack5)和 WebAssembly 工具链中运行。

example

// regular JavaScript import
import { loadImg } from './utils.js';

// special "URL imports" for assets
import imageUrl from 'asset-url:./image.png';
import wasmUrl from 'asset-url:./module.wasm';
import workerUrl from 'js-url:./worker.js';

loadImg(imageUrl);
WebAssembly.instantiateStreaming(fetch(wasmUrl));
new Worker(workerUrl);
// regular JavaScript import
import { loadImg } from './utils.js';

// URL imports
loadImg(new URL('./image.png', import.meta.url));
WebAssembly.instantiateStreaming(
  fetch(new URL('./module.wasm', import.meta.url)),
  { /* … */ }
);
new Worker(new URL('./worker.js', import.meta.url));

扩展阅读,import stylesheets

3. 优化图片资源加载顺序

  • 资源优先级概念image.png

  • chrome浏览器的资源加载优先级

    • html、css、font这三种类型的资源优先级最高
    • preload资源、script、xhr请求
    • 图片、语音、视频
    • prefetch预读取资源
  • 提升图片资源优先级的方法

    • ✅ preload图片资源提升图片资源的优先级
    • ✅ 图片资源给予单独的域名
    • ✅ 改变JS、CSS的插入时机
    • ✅ 采用http2.0

4. 新的样式与动画方案?

image.png

CSS Paint API: 允许开发人员编写一个绘制函数,这个函数允许我们直接绘制元素、背景、边框和内容,可用于实现特殊的css效果。目前只有chrome & edge 支持。

MDN 系列介绍文章 demo

新闻速览

1. 云端vscode

  • 登陆github的状态下,快捷方式【.】打开在线版vscode预览github项目或者将url中 「.com 替换成 .dev」直接打开在线版vscode
  • github.dev集成了codespaces,使用云端资源开发,随时随地贡献代码
  • 目前公司提供的devcloud环境配合vscode ssh 能力也可以做到云端开发。

2. 灵活强大的React Table组件

基于styled-components的开箱即用React Table组件,支持声明式配置、可定制主题、响应式。

3. TypeScript类型挑战

向typescript前进,练习typescript的高级使用, 去看看

4. FFCreator视频加工库

您只需要添加几张图片或视频片段再加一段背景音乐,就可以快速生成一个很酷的视频短片。有点想早的gif制作工具。

官网

5. Node V16.9.0

此次更新里包含了一个实现性的”包管理“管理器Corepack,Corepack不仅能够管理npm,还支持Yarn和pnpm。 Corepack 是一款零运行时依赖的 Node 脚本工具,它充当 Node 项目和包管理工具之间的桥梁。实际上,Corepack 可以让你直接使用 yarn 和 pnpm,而无需安装它们。就像使用 npm 一样,默认由 Node 提供。