ホームページ  >  記事  >  ウェブフロントエンド  >  Vue のオンデマンド読み込みの具体的な実装

Vue のオンデマンド読み込みの具体的な実装

小云云
小云云オリジナル
2018-05-14 11:34:302485ブラウズ

アプリケーションをパッケージ化して構築すると、JavaScript パッケージが非常に大きくなり、ページの読み込みに影響します。異なるルートに対応するコンポーネントを異なるコード ブロックに分割し、ルートにアクセスするときに対応するコンポーネントをロードできれば、より効率的になります。この記事では主に Vue のオンデマンド読み込みの具体的な実装を紹介し、皆様のお役に立てれば幸いです。

シナリオ

xxx プロジェクトはシングルページ アプリケーションであり、コンポーネントベースの開発モデルを採用しています。ただし、現時点では、ホームページのみがアクセスされます。 、多数のコンポーネント汚染負荷が発生する状態。

目的

すべてのページコンポーネントを読み込まないようにするため、現在のページにアクセスするときに対応するコンポーネントのみを読み込みます。 (オンデマンドでロード)

implementation

app.vue

<template>
  <p id="app">
    <router-view/>
  </p>
</template>

router.js

import Vue from &#39;vue&#39;
import VueRouter from &#39;vue-router&#39;
import &#39;babel-polyfill&#39;
import {Promise} from &#39;es6-promise-polyfill&#39;
import App from &#39;../components/app&#39;

// 定义路由,每个路由映射一个组件。
const Routers = [
  {
    path: &#39;/&#39;,  // 路径
    component: resolve => require([&#39;../components/member/index], resolve)  // 异步加载组件
  },
  {
    path: &#39;/login&#39;,
    component: resolve => require([&#39;../components/member/login&#39;], resolve)
  }
]

const RouterConfig = {
  routes: Routers
}
// 创建router实例,并传递路由配置。
const router = new VueRouter(RouterConfig);
// 创建并挂载根实例。
new Vue({
  el:&#39;#app&#39;,
  router,
  // 将h作为createElement的别名是一个通用惯例。
  render: h =>(App) 
})

注:

require() 関数は 2 つのパラメータを受け入れます。最初のパラメータは、['moduleA', 'moduleB'] などの依存モジュールを示す配列です。2 番目のパラメータは、以前に指定したすべてのモジュールが正常にロードされたときに呼び出されるコールバック関数です。ロードされたモジュールはパラメータとしてこの関数に渡され、コールバック関数内で使用できるようになります。

サンプル コードでは、非同期メソッドを使用してコンポーネントを読み込みます。require 関数は、レンダリングされるコンポーネントを非同期的に導入する役割を果たします。一方、resolve は、コンポーネントの非同期コールバック レンダリングを担当します。

babel-polyfill: Promise をトランスコードしてコンパイルします。

npm install --save babel-polyfill

es6-promise-polyfill は Promise の互換性の問題を解決します。 Promise についてあまり知らない学生は、ここに移動してください

npm install --save es6-promise-polyfill

関連する推奨事項:

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

JS 非同期読み込みメソッド

Vue を使用してオンデマンドでロードしてユーザーエクスペリエンスを向上

以上がVue のオンデマンド読み込みの具体的な実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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