VUE-CLI3倍の負荷の最適化

最初の画面負荷の最適化

2019年7月11日に更新しました

ベースのプロジェクトvue2.x + VUE-ルータ+ vuex +要素-UI 。結合VUE-cli3.0
背景と結果:遅くロードを折る行項目の後、11Sのロード時間は、4秒程度でロード時間の最適化制御の後、パッケージ+ 5.76M 2.54Mの元のボリュームから変更。

最適化の方向:

  • 1.コンポーネントは、オンデマンドでロードされます。

  • 2.画像​​圧縮。

  • 3.cdnリソースを導入し(VUE、vuex、VUEルータ、コンポーネントライブラリ、等)

  • 4.使用GZIP(Open Serverは、GZIPが必要です)

その他:削除冗長コードとコメント、セブンの牛は、静的リソースなどCDNサイトのストレージをクラウド!
いくつかのツール
WebPACKのバンドルアナライザプラグイン、webbpackパッケージ解析ツールのWebPACKバンドルアナライザ、
画像圧縮サイト:TinyPNGの
スピードのウェブサイト:Pingdomの
WebPACKのパッケージ分析ツールがインストールされています。

npm install --save-dev webpack-bundle-analyzer //npm安装
yarn add -s webpack-bundle-analyzer -D//yarn 安装

①、その後も内部のvue.config.jsを設定する必要があります

module.exports = {
    baseUrl: process.env.NODE_ENV == 'production' ? './' : '/',
    outputDir: 'dist',
    assetsDir: 'static',
    chainWebpack: config => {//①这里是配置的部分
      config
        .plugin('webpack-bundle-analyzer')
        .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
    },
}

そして、リアパッケージファイルサイズ(ファイルブロック表示にマウススライド)の外に、このようなページがあるでしょうプロジェクトを実行します。この連続最適化によると、あなたのプロジェクトファイルサイズの最適化の世話します。
ここに画像を挿入説明

画像圧縮サイトでは、その場所、自動圧縮、大きな絵ポイントPNG画像の圧縮または大幅に画像をドラッグして、最終的にPS変更接尾辞のjpg、または直接変更の下で、ラインで使用することができます。同じサイズのPNG画像を使用した場合よりも、なぜ、私は(JPGは、いくつかの恥ずかしを圧縮することはできません)ことも、大きなJPG画像を見つけましたが、要求より少ない時間ので、理由を理解するために戻って行きます。
ここに画像を挿入説明
ガンサイト:デプロイドメイン、適切な場所に固執します。瞬間を待って、結果が出てきました。

ここに画像を挿入説明


話題が始まった
コンポーネントは、需要にロードされている
公式のウェブサイト、それは非常に明らかにしました

//main.js
import {Input,Radio,FormItem,Icon,Row,Col,Upload,Message,MessageBox} from 'element-ui'

Vue.use(Input);Vue.use(Radio);Vue.use(FormItem);Vue.use(Icon);Vue.use(Row);Vue.use(Col);Vue.use(Upload);
Vue.use(Loading);Vue.use(DatePicker);Vue.use(Table);Vue.use(TableColumn);
//Vue.use(Message);Vue.use(MessageBox);//

Vue.useと上記のメッセージとあれば、あなたのMessageBox()メソッドは、彼は自動的にこのような使用の場合は、もう一度それを実行します
グローバル使用:方法

Vue.prototype.$message = Message;
Vue.prototype.$confirm = MessageBox.confirm;//因为我用到了confirm

方法2:テンプレート内の必要性

//user.vue
import Message from 'element-ui'
mounted(){
Message.error(“错误!“)}

CDNは、導入された
いくつかのCDNリソース駅:jsdeliverbootCDNunpkgサイトの検索時間を加えたアドレスの後に「/パッケージを検索」の背後には、
まずHTMLのスクリプトタグで導入します

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0, user-scalable=0">
    <link rel="shortcut icon" type="images/x-icon" href="logo1.png">

    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/lib/theme-chalk/index.css">

    <script src="https://cdn.jsdelivr.net/npm/[email protected]/build/player/lottie.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue-router.min.js"></script>
    <!--你如要用vue devtools,需引用vue.js-->
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vuex.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/axios.min.js"></script>

    <script src="https://cdn.jsdelivr.net/npm/[email protected]/lib/index.js"></script>

    <script src="https://cdn.jsdelivr.net/npm/[email protected]/index.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/bin/jsencrypt.min.js"></script>
	
    <script src="https://cdn.bootcss.com/echarts/4.2.1/echarts.min.js"></script>
	
	<script src="https://cdn.bootcss.com/iview/3.4.2-rc.1/iview.min.js"></script>
    <title>Title</title>
</head>

vue.config.js

module.exports = {
    // 部署应用的根路径(默认'/'),也可用相对路径(存在使用限制)
    baseUrl: process.env.NODE_ENV == 'production' ? './' : '/', 
    outputDir: 'dist',
    assetsDir: 'static',
    configureWebpack: {//这里是添加的部分
      externals:{
        'vue': 'Vue',
        'vue-router': 'VueRouter',
        'vuex': 'Vuex',
        'element-ui': 'ELEMENT',
        'axios': 'axios',
        'echarts': 'echarts',
	    'lottie-web': 'lottie',
        'jsencrypt': 'JSEncrypt',
        'iview': 'iview'
      }
    },
}

gzipの
この最適化アプローチは、サーバ(バックエンド)のオープンGZIPを必要とし、私はちょうど行われなければ、フロントエンドのニーズについて何かを言うだろう

注:開かれたgzip_static圧縮とが.gzファイルを終了要求(のnginxを使用している場合)と同じ名前とディレクトリに存在する力の前提のgzip_staticはnginxのです。
その後gzip_static最初の準備GZを使用して圧縮ファイルを圧縮し、サーバは圧縮ファイルと元のファイルを保存するために多くのスペースを消費しますが、自分自身の評価に長所と短所。

参考:最初の画面に最適化負荷 githubの/ VUE-CLI3-config設定

圧縮のWebPACK - プラグインのプラグインをインストールします。

npm  i compression-webpack-plugin -save-dev
//或者
yarn -D compression-webpack-plugin
//vue.config.js
const IS_PROD = ['production', 'prod'].includes(process.env.NODE_ENV);//检测构建环境
const CompressionWebpackPlugin = require('compression-webpack-plugin');
const productionGzipExtensions = /\.(js|css|json|txt|html|ico|svg)(\?.*)?$/i;
module.exports = {
configureWebpack: config => {
      if(IS_PROD){
        const plugins = [];
        plugins.push(
          new CompressionWebpackPlugin({
            filename: '[path].gz[query]',
            algorithm: 'gzip',
            test: productionGzipExtensions,
            threshold: 10240,
            minRatio: 0.8,
          })
        );
        config.plugins = [
          ...config.plugins,
          ...plugins
        ];
      }
    }
};

そして、以上の10Kのファイルが同じ名前サフィックスが.gzファイルにパッケージ化されている見ることができる(糸ビルド)パッケージ

目的は、レコードを書いて、お互いから学ぶことです!

スキットルズが好きですか?私はキリンを持って、あなたはあなたを絞ることができます!

公開された15元の記事 ウォンの賞賛3 ビュー3447

おすすめ

転載: blog.csdn.net/qq_39370934/article/details/90268837