ホームページ  >  記事  >  ウェブフロントエンド  >  Vue コード分割と遅延読み込みについて

Vue コード分割と遅延読み込みについて

小云云
小云云オリジナル
2017-12-18 13:07:371935ブラウズ

遅延ロードは遅延ロードとも呼ばれ、必要なときにロードし、必要に応じてロードすることを意味します。この記事では、主に Vue コードのセグメント化と遅延読み込みの実装方法をサンプル コードを通じて詳しく紹介します。これは、学習や仕事に必要な学習者にとって有益です。一緒に勉強しましょう。皆さんのお役に立てれば幸いです。

遅延読み込みが必要な理由

シングルページのアプリケーションでは、アプリケーションの遅延読み込みがないと、webpack でパッケージ化されたファイルが異常に大きくなり、その結果、ホームページに入るときに読み込まれるコンテンツが多すぎます。遅延が長すぎると機能しません。また、遅延読み込みを使用すると、必要に応じてページを分割して、ホームページの読み込み圧力を効果的に分散でき、読み込み時間を短縮できます。ホームページ

Webpack と連携してコンポーネントの遅延読み込みを実装する方法

1. Webpack 設定ファイルの出力パスに chunkFilename 属性を設定します

output: {
path: resolve(__dirname, 'dist'),
filename: options.dev ? '[name].js' : '[name].js?[chunkhash]',
chunkFilename: 'chunk[id].js?[chunkhash]',
publicPath: options.dev ? '/assets/' : publicPath
},

chunkFilename パスはコンポーネントの遅延読み込みのパスとして使用されます

2. webpack がサポートする非同期読み込みメソッドと連携します

  • resolve => require([URL],solve )、優れたサポート

  • () =>

  • () => import(URL) は、使用を推奨しており、es7 のカテゴリに属しており、babel の syntax-dynamic で使用する必要があると記載されています。 -importプラグインの具体的な使用方法は以下の通りです

npm install --save-dev babel-core babel-loader babel-plugin-syntax-dynamic-import babel-preset-es2015
use: [{
loader: 'babel-loader',
options: {
presets: [['es2015', {modules: false}]],
plugins: ['syntax-dynamic-import']
}
}]

はじめに

webpack>2の時代では、require.ensureが必要で、コード分割がしやすくなりました。必須ではありません。

インポートがすべてを解決します。 Splitレベルレベルコードの分割とレイジーロードには、次のレベルが含まれます。1。コンポーネントレベルの分割とレイジーローディング

2.ルータールーティングレベル

3. Vuexモジュール

コンポーネントレベルコード分​​割

//全局组件
Vue.component('AsyncComponent', () => import('./AsyncComponent'))

//局部注册组件
new Vue({
 // ...
 components: {
 'AsyncComponent': () => import('./AsyncComponent')
 }
})

// 如果不是default导出的模块
new Vue({
 // ...
 components: {
 'AsyncComponent': () => import('./AsyncComponent').then({ AsyncComponent }) => AsyncComponent
 }
})

ルーティングレベルコード分割

const AsyncComponent= () => import('./AsyncComponent')

new VueRouter({
 routes: [
 { path: '/test', component: AsyncComponent}
 ]
})

Vuexモジュールのコード分割、vuexには動的登録モジュールメソッドがあり、インポート
const store = new Vuex.Store()

import('./store/test').then(testModule => {
 store.registerModule('test', testModule)
})

概要

も追加されています。一般的なプロジェクトでは、ルーターとコンポーネント レベル (またはルーター分割を使用するだけ) で十分です。大規模なプロジェクトでは 3 つすべてを使用する場合がありますが、使用方法は非常に簡単です。

関連する推奨事項:

Jsを使用した遅延読み込みとクロスドメイン実装の手順


JavaScriptを使用した画像の遅延読み込み方法の紹介

画像の遅延読み込みの問題

以上がVue コード分割と遅延読み込みについての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。