Webpackのコード分離「Code Splitting」を使用してvueアプリケーションの怠惰なロードを実現
1949 ワード
テキストリンク:https://alexjover.com/blog/lazy-load-in-vue-using-webpack-s-code-splitting/
vueアプリケーションでは、怠け者のロードとコード分離技術を3つの階層で使用できます.コンポーネント、通常はよく知られている非同期コンポーネント ルーティング Vuexモジュール 動的導入(webpack 2.0以上のサポート)を使用している共通性があります.
#Vueコンポーネントの怠惰なロード
このEgghead(海外のブログサイト)の記事「Vue非同期コンポーネントにコンポーネントをオンデマンドでロードする」には、すでに良い説明があります.
使用も簡単です.コンポーネントを登録するときにimportメソッドを使用すればいいです.
And using local registration:
またはローカル登録を使用します.
import関数を矢印関数にパッケージすることで、Vueは要求を受信したときにのみ実行し、モジュールをロードします.
コンポーネントをインポートするときに名前付きエクスポートを使用する場合は、返されるPromise関数でオブジェクトを使用して解体できます.たとえば、KeenUIでUiAlertコンポーネントを使用します.
#Vue routerリロード
Vue routerは怠け者のロードをサポートします.使い勝手も簡単で、コンポーネントを導入するときにimportメソッドを使います.たとえば、/loginルーティングでログインコンポーネントをリロードしたい場合は、次のようにします.
#Vuexモジュールリロード
Vuexの
#まとめ
VueとWebpackでは、怠け者のロードを使用するのは非常に簡単になりました.以上の内容を使用すると、appをいくつかの異なる面からブロックしてオンデマンドでロードすることができ、appの初期ロードを軽減することができます.
元の英語リンク:https://alexjover.com/blog/lazy-load-in-vue-using-webpack-s-code-splitting/
vueアプリケーションでは、怠け者のロードとコード分離技術を3つの階層で使用できます.
#Vueコンポーネントの怠惰なロード
このEgghead(海外のブログサイト)の記事「Vue非同期コンポーネントにコンポーネントをオンデマンドでロードする」には、すでに良い説明があります.
使用も簡単です.コンポーネントを登録するときにimportメソッドを使用すればいいです.
Vue.component("AsyncCmp", () => import("./AsyncCmp"));
And using local registration:
またはローカル登録を使用します.
new Vue({
// ...
components: {
AsyncCmp: () => import("./AsyncCmp")
}
});
import関数を矢印関数にパッケージすることで、Vueは要求を受信したときにのみ実行し、モジュールをロードします.
コンポーネントをインポートするときに名前付きエクスポートを使用する場合は、返されるPromise関数でオブジェクトを使用して解体できます.たとえば、KeenUIでUiAlertコンポーネントを使用します.
...
components: {
UiAlert: () => import('keen-ui').then(({ UiAlert }) => UiAlert)
}
...
#Vue routerリロード
Vue routerは怠け者のロードをサポートします.使い勝手も簡単で、コンポーネントを導入するときにimportメソッドを使います.たとえば、/loginルーティングでログインコンポーネントをリロードしたい場合は、次のようにします.
// Instead of: import Login from './login'
const Login = () => import("./login");
new VueRouter({
routes: [{ path: "/login", component: Login }]
});
#Vuexモジュールリロード
Vuexの
registerModule
メソッドを使用すると、Vuexモジュールを動的に作成できます.もし私たちのimportメソッドがESモジュールを荷重とするPromiseを返しているならば、私たちはそれを使用してこのモジュールを怠惰にロードすることができます.const store = new Vuex.Store()
...
// Assume there is a "login" module we wanna load
import('./store/login').then(loginModule => {
store.registerModule('login', loginModule)
})
#まとめ
VueとWebpackでは、怠け者のロードを使用するのは非常に簡単になりました.以上の内容を使用すると、appをいくつかの異なる面からブロックしてオンデマンドでロードすることができ、appの初期ロードを軽減することができます.
元の英語リンク:https://alexjover.com/blog/lazy-load-in-vue-using-webpack-s-code-splitting/