このページ内容は2021年1月21日以降、再調査・再検証してません。実際に扱う際は最新の情報にアクセスしてください。

link
ライブラリ編
link
Partytown

Partytownはリソースを大量消費するスクリプトをWeb Worker (Service Workerなど) に移すことでメインスレッドのブロッキングを防ぐ遅延ロードライブラリですpartytown

Partytownは以下の目標を掲げていますpartytown_goal。つまり、サードパーティーライブラリを従来通りのやり方で使ったり管理したりつつ、Web Workerに安全に移行できるものを目指してるようです (解釈違いがあったらすみません)。

    Free up main thread resources to be used only for the primary web app execution
    Sandbox third-party scripts and allow or deny their access main thread APIs
    Isolate long-running tasks within the web worker thread
    Reduce layout thrashing coming from third-party scripts
    Throttle third-party scripts' access to the main thread
    Allow third-party scripts to run exactly how they're coded and without any alterations
    Read and write main thread DOM operations synchronously from within a web worker, allowing scripts running from the web worker to execute as expected
    No build-steps or bundling required, but rather update scripts the same way as traditional third-party scripts are updated

Next.jsで利用する場合は次のようになります。<Partytown />を読み込んだ後に、Web Workerに移行したいライブラリのtypeをtext/partytownと指定して使いますpartytown_usage。Partytownはまだ安定板になってないため、利用する場合はGetting Startedやissueをよく確認してください。

1
import Head from "next/head";
2
import { Partytown } from "@builder.io/partytown/react";
3
4
const Home = () => {
5
return (
6
<>
7
<Head>
8
<title>My App</title>
9
<Partytown />
10
<script src="https://example.com/analytics.js" type="text/partytown"></script>
11
</Head>
12
<main>...</main>
13
</>
14
);
15
};
16
17
export default Home;

自己紹介
はじめまして Pilefortです。
東京でエソジニアをしてます。
興味のあるスタックは、JavaScript (React, Vue), TypeScript, Rust, WebAssembly, AWS, Pulumi, Serverless Frameworkです。
このブログでは、普段の業務や趣味で気になったことをまとめたり、フロントやAWS, GitHubやTwitterで見かけた面白い記事やニュースをまとめるためのものです。少しでも何かの役に立てば幸いです。
サイトマップ
Notes
業務や趣味での気づき・メモ
Snippets
記事にするまでもないけど、便利なコマンドや豆知識
Works
同人誌一覧