vueページの白い画面の理由と最適化

1.理由:

シングルページアプリケーションのhtmlはjsによって生成されます。これは、最初の画面で大きなjsファイル(app.jsおよびvendor.js)をロードする必要があるため、ネットワーク速度が遅い場合、ある程度の白い画面が生成されます。

2.解決策:解決策:

1.ルーティングとコンポーネントの遅延読み込み

1.遅延読み込みをルーティングする

// 1、Vue异步组件技术:
{
    
    
  path: '/home',
  name: 'Home',
  component: resolve => require(['../views/home.vue'], resolve)
}

// 2、es6提案的import()
{
    
    
  path: '/',
  name: 'home',
  component: () => import('../views/home.vue')
}

// 3、webpack提供的require.ensure()
{
    
    
  path: '/home',
  name: 'Home',
  component: r => require.ensure([],() =>  r(require('../views/home.vue')), 'home')
}

2.コンポーネントの遅延読み込み

components:{
    
    
  "dailyModal":()=>import("./dailyModal.vue")
},
components:{
    
    
  "dailyModal":resolve=>require(['./dailyModal.vue'],resolve)
},

2.CDNリソースの最適化

CDNのフルネームはコンテンツ配信ネットワーク、つまりコンテンツ配信ネットワークです。CDNは、ネットワーク上に構築されたコンテンツ配信ネットワークであり、中央プラットフォームの負荷分散、コンテンツ配信、スケジューリング、およびその他の機能モジュールを通じて、さまざまな場所に配置されたエッジサーバーに依存しているため、ユーザーは近くの必要なコンテンツを取得し、ネットワークを削減できます。輻輳、およびユーザーアクセスの改善応答速度とヒット率。CDNの主要なテクノロジーには、主にコンテンツの保存と配信のテクノロジーが含まれます。
プロジェクトがどんどん大きくなるにつれて、ますます多くのサードパーティのnpmパッケージが信頼され、ビルド後のファイルはどんどん大きくなります。シングルページアプリケーションと組み合わせると、ネットワーク速度が遅い場合やサーバーの帯域幅が制限されている場合に、長期間の白い画面が表示されます。現時点では、CDN方式を使用してネットワークの読み込み速度を最適化できます。

1. vue、vue-router、vuex、axiosなどのvueファミリーバケットのリソースを変更してCDNリンクから取得し、対応するリンクをindex.htmlに挿入します。

<body>
  <div id="app"></div>
  <script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
  <script src="https://cdn.bootcss.com/axios/0.19.0-beta.1/axios.min.js"></script>
  <script src="https://cdn.bootcss.com/vuex/3.1.0/vuex.min.js"></script>
  <script src="https://cdn.bootcss.com/vue-router/3.0.2/vue-router.min.js"></script>
  <script src="https://cdn.bootcss.com/element-ui/2.6.1/index.js"></script>
</body>

2.vue.config.jsでexternalsプロパティを構成します

module.exports = {
    
    
 ···
    externals: {
    
    
      'vue': 'Vue',
      'vuex': 'Vuex',
      'vue-router': 'VueRouter',
      'axios':'axios'
    }
 }

3.関連する依存npmパッケージをアンインストールします

npm uninstall  vue vue-router vuex axios

3.gZipアクセラレーションの最適化

最新のブラウザはすべてgzip圧縮をサポートしています。gzip圧縮を有効にすると、送信リソースのサイズが大幅に削減されるため、リソースのダウンロード時間が短縮され、最初の白い画面の時間が短縮され、ユーザーエクスペリエンスが向上します。
gzipは、テキストベースのファイル(CSS、JavaScript、HTMLなど)に対して最高の圧縮効果を発揮します。大きなファイルを圧縮する場合、最大70〜90%の圧縮率を達成できることがよくあります。圧縮されたリソース(写真)gzip圧縮の効果は非常に悪いです。

const CompressionPlugin = require('compression-webpack-plugin')
configureWebpack: (config) => {
    
    
  if (process.env.NODE_ENV === 'production') {
    
    
    config.plugins.push(
      new CompressionPlugin({
    
    
        // gzip压缩配置
        test: /\.js$|\.html$|\.css/, // 匹配文件名
        threshold: 10240, // 对超过10kb的数据进行压缩
        deleteOriginalAssets: false, // 是否删除原文件
      })
    )
  }
}

4. vue.config.jsのマップファイルを閉じます。これにより、多くのマップファイルを減らすことができます。

productionSourceMapは、エラーを報告するときにコード位置を見つけるために使用されます

productionSourceMap: false,

5. SSR、サーバー側レンダリング、サーバー側のホームページに必要なhtmlを事前にアセンブルします

6.ホームページに読み込み画面またはスケルトン画面を追加します(最適化されたエクスペリエンス)

フロントエンド業界でのSPAの人気が徐々に高まっているため、シングルページアプリケーションは必然的にホームページの読み込みに圧力をかけます。現時点では、優れたホームページのユーザーエクスペリエンスが重要です。多くのアプリは、「スケルトン画面」方式を使用してアンロードされたコンテンツを表示し、ユーザーにまったく新しいエクスペリエンスを提供します。
いわゆるスケルトン画面は、ページコンテンツがロードされていないときにいくつかのグラフィックを使用して実行し、コンテンツがロードされた後にそれを置き換えることです。このプロセスでは、ユーザーはコンテンツが徐々に読み込まれ、すぐに表示されることを認識し、「白い画面」の悪いエクスペリエンスを減らします。

https://segmentfault.com/a/1190000020124630?utm_source=tag-newest

おすすめ

転載: blog.csdn.net/m0_48076809/article/details/109058909