mcpField
S
static-import

static-import

github.com/patternsdev開発2571.5k 回インストール28 週間前に更新
リポジトリ

static-import について

JavaScriptの静的インポートと初期バンドルへの影響、動的インポートを検討する場面を解説する開発スキルです。初期表示と読み込み量を考慮するWeb開発者向けです。

主な機能

  1. 01静的インポートの実行時点の説明
  2. 02初期バンドルへの収録の解説
  3. 03初期表示用と遅延用モジュールの区別

活用シーン

  1. 01初期表示に必要なモジュールの選定
  2. 02静的インポートによるバンドルサイズの評価

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/patternsdev/skills --skill static-import

インストール後、Claude Code で/static-importを入力して読み込まれたか確認します。

詳細

静的インポート

import キーワードを使うと、別のモジュールによってエクスポートされたコードをインポートできます。デフォルトでは、静的にインポート するすべてのモジュールが初期バンドルに追加されます。デフォルトの ES2015 インポート構文 import module from 'module' を使ってインポートされるモジュールは、静的にインポートされています。

例を見てみましょう!シンプルなチャットアプリには Chat コンポーネントがあり、その中で UserProfile、ChatList、メッセージを入力して送信するための ChatInput という3つのコンポーネントを静的にインポートしてレンダリングしています!ChatInput モジュール内では、ユーザーが絵文字を切り替えたときに絵文字ピッカーを表示できるよう、EmojiPicker コンポーネントを静的にインポートしています。

使用するタイミング

  • ページの読み込み時にすぐ必要となるモジュールのインポートに使用します
  • これはデフォルトのインポート方法です。動的インポートに切り替えるタイミングを把握するためにも、仕組みを理解しておきましょう

手順

  • 初期レンダリングに不可欠なモジュールには静的インポートを使用します
  • 静的にインポートしたすべてのモジュールは初期バンドルにまとめられることに注意してください
  • 初期レンダリング時に必要ないモジュールは、動的インポートへの切り替えを検討してください

詳細

エンジンがインポート文の行に到達すると、モジュールが実行されます。

コンポーネントが静的にインポートされているため、Webpack はモジュールを初期バンドルにまとめました。

Asset           Size      Chunks            Chunk Names
main.bundle.js  1.5 MiB    main  [emitted]  main

チャットアプリケーションのソースコードは、main.bundle.js という1つのバンドルにまとめられます。バンドルサイズが大きいと、ユーザーのデバイスやネットワーク接続によっては、アプリケーションの読み込み時間に大きく影響することがあります。App コンポーネントがユーザーの画面にコンテンツをレンダリングする前に、すべてのモジュールを読み込んで解析する必要があります。

幸い、読み込み時間を短縮する方法はたくさんあります!すべてのモジュールを一度にインポートする必要はありません。たとえば、この場合の EmojiPicker のように、ユーザーの操作に応じてのみレンダリングするモジュールや、ページの下の方に表示するモジュールがあるかもしれません。すべてのコンポーネントを静的にインポートする代わりに、App コンポーネントがコンテンツをレンダリングし、ユーザーがアプリケーションを操作できるようになった後で、モジュールを_動的に_インポートできます。

ソース

コメント