Dev Study
← Angular コース

50. ルートの遅延読み込み — 使うまで読み込まない

loadComponent を使うと、そのルートのコンポーネントを「実際にそのURLへ移動したとき」に初めて読み込めます。component: Admin の代わりに loadComponent: () => import('./admin/admin').then(m => m.Admin) と書くだけで、Admin のコードは初回表示のバンドルから切り離されます。

アプリのコードは通常1つのJavaScriptファイル(バンドル)にまとめられ、最初のページ表示前にすべてダウンロードされます。遅延読み込みを使うとビルド時にファイルが分割され、初期バンドルが小さくなるため、最初の画面が速く表示されます。管理画面や設定画面のような「たまにしか開かないページ」に使うのが定番です。

つまずきやすいのは、import() の中に書くのがパスの文字列である点です。通常の import 文と違い、関数の形で書くことで「あとで読み込む」という意味になります。また、loadComponent と component を同じルートに両方書くことはできません。どちらか一方を選びます。

サンプルコード(フレームワーク環境が必要なため表示のみ)

import { Routes } from '@angular/router';
import { Home } from './home';

export const routes: Routes = [
  // トップページはすぐ使うので通常どおり読み込む
  { path: '', component: Home },

  // 管理画面は /admin に行くまでコードを読み込まない
  {
    path: 'admin',
    loadComponent: () => import('./admin/admin').then((m) => m.Admin),
  },
];

// ビルドすると admin のコードは別ファイルに分割され、
// 初回表示のダウンロード量が減る
サンプルコードで身につける(5本) →

学んだ概念を、素朴な例から実務寄りの例まで5つの具体例で確認します。

公式ドキュメントで詳しく ↗