Frontend Weekly 2024-03-22
ESM in Node.jsについての記事や、Next.js AI Chatbot 2.0について紹介する。
require(esm) in Node.js
--experimental-require-module
フラグで、CommonJSからESMをrequire
できる仕組みが入った。 Top-Level awaitの非同期をスコープから外すことで実装が進んだ。「ESMは非同期で、CJSは同期であるため、CJSはESMをロードできない」という神話があった。
おもしろポイント:“昨年、メモリ リークを修正するためにV8コードを参照していたとき、ESM自体が実際には無条件に非同期になるように設計されていないことが偶然わかりました。”
const esm = require("index.mjs")
Node.jsに入る新しいCJSからESMへの読み込み方法の紹介 - hiroppy’s site
Best Practices for Writing Tests with React Testing Library
CSSからReactコンポーネントを生成するライブラリ。data属性や@scopeを利用する仕組み。
エディター付きのReact開発環境をブラウザーだけで実装した話
- 型テスト:TypeScript Compiler API
- ユニットテスト:testing-library/react + jest-lite
- リント:BiomeJS on Worker + ComLink
- プレビュー:Service Workerをブラウザとサーバーのプロキシとして利用
- Reactなどのインポートの省略:importmap
- サーバーを介さないトランスパイル:IndexedDBを使ってSW側でコードを取得、Wasmでトランスパイル
- SW上でのTSトランスパイル:swc/wasm-web
仲間
https://github.com/matsuri-tech/generate-release-notes-body-based-on-pull-requests
Conventional CommitsとCHANGELOGの自動生成でリリースのユーザ影響をわかりやすくした話 - ドワンゴ教育サービス開発者ブログ
Next.js AI Chatbot 2.0
Next.js AI Chatbot 2.0 – Vercel
一般的なものが多いが、satisfies neverは知らない人が多そう。Utility typeを配布するパッケージを利用するならともかくts-resetを使うのには懐疑的。
TypeScriptで知ってコードの安全性が上がったtips集
satisfies never以外にも引数にneverを取る関数などでも表現できる。
const assertNever = (x: never): never => {
throw new Error("Unreachable : " + x)
}
const selectType = (type: Type) => {
switch (type) {
case "File":
return "file"
// ...
default:
return assertNever(type)
//throw new Error(type satisfies never)
}
}
あまり目新しいものはないが、あまりCSSに興味がない人は見ておくと学びがあるかも。currentColorやaspect-ratioなどはともかくinsetや-inline/-marginなどはlinterに怒られて学んでいくといいと思う。
あなたが教わってるそのCSSテクニックはもう古い | TAKLOG
商用利用無料のアイコンをVSCode上で検索してSVGまたはJSXコードをはける拡張機能
Iconbuddy — 200K+ open source free svg icons
JavaScriptの書き方による最適化
- 昔ながらの記述やLinterに怒られそうな記述の方がはやいことが多い。
- ただ実行環境側で新しい記述の最適化も随時行われており、必ずしも絶対的にそうではなく、当然実行環境にも拠る。
- またトランスパイルで記述を変更させるという手段も取られることがある。
- 現状だとコミュニティとしては、パフォーマンスより可読性などが優先されることが多い。
- 個人的にもパフォーマンスが気になるところだけ、チューニングとしてやれば良い派。
Introducing deployctl, the command line interface for Deno Deploy
Redisの次期ライセンスがBSDからSSPLv1またはRSALv2に。商用利用にRedis社とのライセンス契約が必要になる。
Redis、クラウドベンダなどによる商用サービスを制限するライセンス変更を発表。今後はRedis社とのライセンス契約が必須に
理由として、Redisの商用的な売り上げの大半が、Redis社の投資やオープンソースコミュニティをコモディティ化してしまった最大手のクラウドサービスプロバイダーを通じて行われていることを上げている。
合わせて読みたい。”RIP Redis:Garantia Data社はいかにしてオープンソース史上最大の強盗を成功させたか?”
RIP Redis: How Garantia Data pulled off the biggest heist in open source history — Momento
各JavaScript RuntimeのWinterCG API互換性テーブル
Runtime compatibility across JavaScript runtimes
COBOLがAndroidで動くぞ
GnuCOBOLがついに成熟。あらゆる環境でプロプライエタリな製品と争えるように | ソフトアンテナ
さくらで運用されているPublickeyがDDoS攻撃を受けどのような対策を行なったか