フロントエンドの白い画面の理由といくつかの解決策

フロントエンドで白い画面が表示される理由:

  1. JS の問題に
    よく使用されるフレームワークである Vue React Angular は JS によって駆動され、単一ページ アプリケーションの HTML も JS によって生成されます。ページをレンダリングするときは、大きな JS ファイル ( app.js および Vendor.js ) が必要です。 JS でロードおよび解析される ロードが完了するまでページを表示できず、白い画面が表示されます (ネットワーク速度が良くない場合は、ある程度の白い画面も表示されます)。

  2. ブラウザの互換性の問題
    vue コードが ie で白い画面を表示する

  3. URL URL が無効であるか、中国語の文字が含まれています

  4. キャッシュによりvue プロジェクト パッケージ が参照さ
    れるため、オンラインで dist ファイルを初めて置き換えるときに、一部の携帯電話/ブラウザでは後で初めてページが開き、白い画面が表示されることがあります。

    理由: Index.html エントリ ファイルはデフォルトでクライアント側でキャッシュされ、vue パッケージ化によって生成された css/js はすべてハッシュ値であり、最後のファイル名とは異なるため、css/js は見つかりません。 . 白い画面が表示されます。サーバー側でパッケージが更新されると、古いファイルが削除され、index.html でリンクされているパスが古いファイルのパスのままであるため、ファイルが見つからず、白い画面が表示されます。

  5. ページエラー

解決:

アイデア: パッケージ化されたボリュームを削減します (sourceMap がオフになり、CDN が導入され、ルーティングが遅延ロードされ、コンポーネントがオンデマンドでロードされます)

レンダリング速度を向上させます。

ユーザーエクスペリエンスを最適化します。

CDN リソースの最適化:

  1. 依存するサードパーティの npm パッケージをすべて 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>
  1. vue.config.js で externals プロパティを構成する
module.exports = {
    
    
 ···
    externals: {
    
    
      'vue': 'Vue',
      'vuex': 'Vuex',
      'vue-router': 'VueRouter',
      'axios':'axios',
      'element-ui': 'ElementUI'
    }
 }
  1. 関連する依存 npm パッケージをアンインストールする
npm uninstall xxx

gzip圧縮を使用する

フロントエンド処理:

// npm i compression-webpack-plugin -S
const CompressionPlugin = require('compression-webpack-plugin');

module.exports = {
    
    
	productionSourceMap: false,
	configureWebpack: config => {
    
    
		if (process.env.NODE_ENV === 'production') {
    
    
			return {
    
    
				plugins: [
					new CompressionPlugin({
    
    
						// 匹配规格
						test: /\.js$|\.html$|\.css$|\.png$/,
						// 文件超过多大进行压缩 单位Byte
						threshold: 10240,
						// 是否删除源文件(建议不删除)
						deleteOriginalAssets: false
					})
				],
			}
		}
	},
}

nginx で gzip 圧縮を有効にする必要もあります。例:

 gzip on;
 gzip_static on; //当存在.gzip格式的js文件时,优先使用静态文件
 gzip_min_length  10k; //开启gzip压缩的最小大小
 gzip_buffers     4 16k;
 gzip_http_version 1.1;
 gzip_comp_level 6;
 gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
 gzip_vary on;
 gzip_proxied   expired no-cache no-store private auth;
 gzip_disable   "MSIE [1-6]\.";

**注意:** nginx で gzip 圧縮を有効にすると、フロントエンドによってパッケージ化されたファイルが圧縮されているかどうかに関係なく、Web サイトによってロードされた js ファイルはすべて nginx によってリアルタイムで圧縮されます。

gzip_static がオフの場合、フロントエンドによってアップロードされた js 圧縮ファイル (gzip 形式のもの) は役に立ちません。
gzip_static がオンの場合、フロントエンドでパッケージ化された gzip 圧縮ファイルが最初に読み込まれますが、ファイルが見つからない場合は、nginx がリアルタイムで圧縮してブラウザに渡します。

SSR サーバーレンダリング

ホームページと読み込み画面またはスケルトン画面(エクスペリエンスを最適化するためのみ)

elementUにはスケルトン画面コンポーネント(Skeleton)があります

いわゆるスケルトン画面は、ページコンテンツがロードされていないときにグラフィックスを使用してその場所を占め、コンテンツがロードされた後に置き換えられます。このプロセス中に、ユーザーはコンテンツが徐々に読み込まれ、すぐに表示されることを認識し、「白い画面」の不快なエクスペリエンスが軽減されます。

おすすめ

転載: blog.csdn.net/weixin_53058401/article/details/127968765
おすすめ