853 文字
4 分

Frontend Weekly 2023-04-30

Node.js v20#

2023 年 4 月 18 日に Node.js v20.0.0 がリリースされました。

https://nodejs.org/en/blog/announcements/v20-release-announce

この記事で扱わない内容として、ファイルのアクセスやプロセスの起動を制限する新しいパーミッションモデルが追加された他、ESM Loader API が Worker 内で実行されるようになりアプリ側と実行コンテキストを分離できるようになりました。

Stable Test Runner#

内蔵されているテストランナーnode:testが Stable になりました。node:testは Jest などとほぼ同じインターフェイスを持っており、また内蔵されているため別途インストールなどは必要ありません。describe、beforeEach、mock.fn など主要なものは Node.js v18 からサポートされており、カバレッジレポートなども experimental フラグは必要なものの既に利用できます。

import assert from "node:assert";
import { mock, test, beforeEach, describe } from "node:test";
describe("tests", async () => {
const sum = mock.fn((a, b) => {
return a + b;
});
beforeEach(() => console.log("about to run a test"));
it("is a subtest", () => {
assert.ok("some relevant assertion here");
});
});

https://nodejs.org/api/test.html

New ECMAScript Features#

Node.js v20 で V8 のバージョンが 11.3 に上がったため、新しい ECMAScript の機能が利用できるようになっています。

RegExp v flag#

このvフラグでは、集合演算が追加される他、いくつかの Properties of Stringsが追加され複数のコードポイントからなる絵文字を扱えるようになります。

https://github.com/tc39/proposal-regexp-v-flag

このフラグは、uフラグの改善を目的の 1 つにしており、Properties of Strings はuフラグでも扱えるようにする提案がある他、WhatWGでは HTML の input 要素の pattern 属性がuフラグからvフラグに置き換えられています。

Change Array by Copy#

破壊的なことで有名な sort()や reverse()の非破壊バージョンが扱えます。

https://github.com/tc39/proposal-change-array-by-copy

const array = [2, 6, 3];
array.toReversed(); // [3, 6, 2]
array.toSorted(); // [2, 3, 6]
array.with(1, 2); // [2, 2, 3]

Vite 4.3#

2023 年 4 月 20 日に Vite 4.3 がリリースされました。

https://vitejs.dev/blog/announcing-vite4-3.html

パフォーマンスの大幅改善#

Vite 4.3 では、パフォーマンスが大きく改善されています。Vite 4.2 と比較して、Cold スタートが 70%、HMR は 40%程度改善したそうです。

今後もパフォーマンスの改善に取り組んでいくということで、Vite チームのやる気を感じます。どのようなパフォーマンスの改善をしたかは下記記事で紹介されています。面白いので、おすすめです。

https://sun0day.github.io/blog/vite/why-vite4_3-is-faster.html

またvite-plugin-inspect にアプリケーションのボトルネックになっているプラグインやミドルウェアを特定するのに役立つパフォーマンス関連の機能が追加されました。見慣れないかもしれませんが vite-plugin-inspect は、Vite のプラグインを作る際に公式が利用を推奨しているプラグインです。

Deno 1.33#

2023 年 4 月 28 日に Deno v1.33 がリリースされました。

https://deno.com/blog/v1.33

Deno 2 is coming#

Deno は年内のメジャーリリースを目指しており、Deno 1.33 を含め今後のリリースでは、Deno 2 に向けてパフォーマンスや開発者体験、セキュリティ、Node/npm 互換性を高めていくとのことです。Deno 2 に興味があれば、Node Congress 2023 で行われた「Forced Optimization」も参照してください。

ビルトイン KV データベース#

Deno KV は、ライブラリのインポートやセットアップなしで扱え、Deno Deploy(現在は Closed Beta)にデプロイすれば、グローバルにレプリケートされた低遅延のデータストアを導入できます。

const kv = await Deno.openKv();
const key = ["users", crypto.randomUUID()];
const value = { name: "Alice" };
await kv.set(key, value);
const result = await kv.get(key);
result.value; // { name: "Alice" }

ローカルでの開発時は SQLite が使われます。

Frontend Weekly 2023-04-30
https://blog.ohirunewani.com/series/frontend-weekly/2023-04-30/
作者
hrdtbs
公開日
2023-04-30
ライセンス
CC BY-NC-SA 4.0