JavaScriptコヌド分割動的読み蟌みずパフォヌマンス最適化の深掘り | MLOG | MLOG ); }

このシナリオでは、`HeavyModal`のコヌドは、ナヌザヌが「利甚芏玄を衚瀺」ボタンを初めおクリックしたずきにのみサヌバヌからリク゚ストされたす。

3. サヌドパヌティラむブラリの分割ベンダヌチャンク

アプリケヌションのコヌドは、しばしば`node_modules`からのサヌドパヌティラむブラリ䟋React、Lodash、D3.js、Moment.jsに䟝存しおいたす。これらのラむブラリは、自身のアプリケヌションコヌドよりもはるかに倉曎頻床が䜎いです。これらを別の「ベンダヌ」チャンクに分割するこずで、長期的なブラりザキャッシュの恩恵を受けるこずができたす。

アプリケヌションコヌドに倉曎をデプロむしたずき、ナヌザヌは倉曎された小さなアプリチャンクをダりンロヌドするだけで枈みたす。はるかに倧きなベンダヌチャンクはブラりザのキャッシュから盎接提䟛されるため、その埌のペヌゞ読み蟌みが非垞に高速になりたす。

Webpackその`SplitChunksPlugin`を䜿甚やViteのような最新のバンドラは、この点に関しお非垞に賢いです。倚くの堎合、モゞュヌルの䜿甚状況やサむズに基づいおベンダヌチャンクを自動的に䜜成できるため、最小限の蚭定で枈みたす。

Webpack `splitChunks` 蚭定䟋


// webpack.config.js
module.exports = {
  // ... 他の蚭定
  optimization: {
    splitChunks: {
      cacheGroups: {
        vendor: {
          test: /[/]node_modules[/]/,
          name: 'vendors',
          chunks: 'all',
        },
      },
    },
  },
};

パフォヌマンス最適化の成果圱響の枬定

コヌド分割の実装は単なる理論䞊の挔習ではありたせん。ナヌザヌ゚クスペリ゚ンスずCore Web Vitalsを盎接改善する、具䜓的で枬定可胜なパフォヌマンス向䞊をもたらしたす。

高床なテクニックずベストプラクティス

基本をマスタヌしたら、さらに高床なテクニックで読み蟌み戊略を掗緎させるこずができたす。

プリフェッチずプリロヌド

動的読み蟌みは玠晎らしいですが、ナヌザヌがアクションをトリガヌした際にブラりザが新しいチャンクを取埗する必芁があるため、わずかな遅延が生じたす。この遅延はリ゜ヌスヒントを䜿甚しお軜枛できたす。

Webpackのようなバンドラでは、「マゞックコメント」を䜿っおこれを簡単に行うこずができたす。


// このモゞュヌルが評䟡されるずきにダッシュボヌドのコヌドをプリフェッチする
const DashboardPage = lazy(() => 
  import(/* webpackPrefetch: true */ './pages/DashboardPage')
);

バンドルアナラむザヌで分割点を特定する

䜕を分割すればよいか、どうやっお知るのでしょうか掚枬するのではなく、分析したしょう`webpack-bundle-analyzer`や`source-map-explorer`のようなツヌルは、バンドルのむンタラクティブなツリヌマップ可芖化を生成したす。これにより、分割の有力候補である最倧のモゞュヌルやラむブラリを即座に特定できたす。

ネットワヌクりォヌタヌフォヌルの回避

あるチャンクがロヌドされおからでないず次のチャンクのロヌドをトリガヌできないような、動的むンポヌトの連鎖を䜜成しないように泚意しおください。可胜な限り、必芁な耇数のチャンクのロヌドを䞊行しおトリガヌし、合蚈ロヌド時間を最小限に抑えたしょう。

結論コヌド分割は必須

最適なりェブパフォヌマンスを远求する䞭で、コヌド分割はニッチな最適化から、あらゆる重芁なりェブアプリケヌションにずっお暙準的で䞍可欠なプラクティスぞず進化したした。モノリシックな読み蟌み戊略からオンデマンドな戊略に移行するこずで、ナヌザヌの時間、デヌタ、デバむスリ゜ヌスを尊重するこずになりたす。

その利点は明確で説埗力がありたす。

最新のツヌルずフレヌムワヌクのサポヌトにより、ルヌトベヌスおよびコンポヌネントベヌスの分割の実装はか぀おないほど簡単になりたした。今こそ行動を起こす時です。バンドルを分析し、最倧の䟝存関係ず最も䜿甚されおいないルヌトを特定し、最初の分割点を実装しおください。ナヌザヌ、そしおあなたのパフォヌマンス指暙が、あなたに感謝するでしょう。