今回は、vue-cli コードを高速化および最適化する方法を説明します。vue-cli コードを高速化および最適化するための 注意事項 は次のとおりです。
はじめに
Vue のグローバル化に伴い、初期の element-ui から vux、iview、その他の高品質プロジェクトに至るまで、さまざまな Vue コンポーネント フレームワークがますます完成してきており、フロントエンド構築に Vue を使用することは、すでにエンジニアリングのタスクです。 、アジャイルなもの
その中で、多くの人は公式の vue-cli 初期化プロジェクト テンプレートを選択し、サードパーティのコンポーネント フレームワークやツールを導入して開発およびビルドすることになると思いますが、個人的にはこのアプローチを強くお勧めします。ただし、vue-cli によって初期化されるプロジェクト テンプレートは結局のところすべての開発者向けであり、互換性の点である程度の妥協が必要になります。多くの人がさまざまな Webpack 構築の最適化に関する記事を検索していると思いますが、その多くは古すぎるか、厳密ではありません この記事では、時間のかかる最適化とビルド パフォーマンスの向上の間のバランスをとること、つまり、公式テンプレートへの最小限の時間と最小限の変更でビルド パフォーマンスの最大の向上を実現することを目指しています感想
vue-cli と webpack2 の初期バージョンでは、次のような最適化された設定がインターネット上に出回っていましたが、実際には、新しいバージョンの vue-cli と webpack3 は不要になりました- ParallelUglifyPlugin を使用して UglifyPlugin を置き換えます (新しいバージョンの UglifyPlugin はデフォルトでマルチスレッド並列構築をすでにサポートし、有効にするため、この手順は必要ありません) webpack3 のスコープホイスティングを有効にする (新しいバージョンの vue-cli は次のように構成されています) webapck3 であり、この設定はデフォルトで有効になっています))
- エイリアスを上手に利用してください (vue-cli の新しいバージョンではすでにこれが行われています)
- パブリック コードを抽出するように CommonsChunkPlugin を設定します (vue の新しいバージョン-cli はすでにこれを行っています)
- オンデマンドで参照する happypack マルチコア ビルド プロジェクトを有効にする
- ソースマップ構成を変更する
- DllPlugin および DllReferencePlugin のプリコンパイルされたライブラリ ファイルを有効にする
練習
1. オンデマンドでお見積り
1.1 ほとんどすべてのサードパーティ コンポーネント フレームワークは、コンポーネントのオンデマンド参照を提供します。例として、プラグイン babel-plugin-import を使用すると、コンポーネントをオンデマンドでロードし、ファイル サイズを削減するだけで済みます。 .babelrc ファイルを変更しますnpm install babel-plugin-import --save-dev // .babelrc { "plugins": [["import", { "libraryName": "iview", "libraryDirectory": "src/components" }]] }1.2 次に、必要に応じてコンポーネントを導入してサイズを削減します
import { Button } from 'iview' Vue.component('Table', Table)
2. happypack マルチコアビルドプロジェクトを有効にする
happypack をインストールした後、/build/webpack.base.conf.js ファイルを変更しますnpm install happypack --save-dev // /build/webpack.base.conf.js const HappyPack = require('happypack') const os = require('os') const happyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length }) // 增加HappyPack插件 plugins: [ new HappyPack({ id: 'happy-babel-js', loaders: ['babel-loader?cacheDirectory=true'], threadPool: happyThreadPool, }) ] // 修改引入loader { test: /\.js$/, // loader: 'babel-loader', loader: 'happypack/loader?id=happy-babel-js', // 增加新的HappyPack构建loader include: [resolve('src'), resolve('test')] }
3. ソースマップ構成を変更する
3.1 まず /config/index.js ファイルを変更します// /config/index.js dev环境:devtool: 'eval'(最快速度) prod环境:productionSourceMap: false(关闭source-map)3.2 次に、/src/main.js ファイルを変更し、本番環境のデバッグ情報をオフにします
// /src/main.js const isDebug_mode = process.env.NODE_ENV !== 'production' Vue.config.debug = isDebug_mode Vue.config.devtools = isDebug_mode Vue.config.productionTip = isDebug_mode
4. DllPlugin と DllReferencePlugin のプリコンパイルされたライブラリ ファイルを有効にする
これは最も複雑な手順であり、効果を向上させるための最も明らかな手順です。原則として、サードパーティのライブラリ ファイルを一度個別にコンパイルしてパッケージ化することです。その後のビルドではサードパーティのライブラリをコンパイルしてパッケージ化する必要はありません。 4.1 build/webpack.dll.config.js ファイルを追加し、個別に DLL する必要があるモジュールを構成しますconst path = require("path") const webpack = require("webpack") module.exports = { // 你想要打包的模块的数组 entry: { vendor: ['vue/dist/vue.esm.js', 'axios', 'vue-router', 'iview'] }, output: { path: path.join(dirname, '../static/js'), // 打包后文件输出的位置 filename: '[name].dll.js', library: '[name]_library' }, plugins: [ new webpack.DllPlugin({ path: path.join(dirname, '.', '[name]-manifest.json'), name: '[name]_library', context: dirname }), // 压缩打包的文件 new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false } }) ] }4.2 次のプラグインを build/webpack.dev.conf.js および build/webpack.prod.conf.js に追加します
new webpack.DllReferencePlugin({ context: dirname, manifest: require('./vendor-manifest.json') })4.3 /package.json にコマンド
"dll": "webpack --config ./build/webpack.dll.config.js"を追加 4.4 /index.html に DLL ベースの JS の導入を追加 (最初に導入する必要があります)
<script></script>4.5 ビルドを実行します
npm run dll(这一步会生成build/vendor-manifest.json和static/js/vendor.dll.js) npm run dev 或 npm run build
追記
上記の 4 つの主要な手順が完了すると、vue-cli テンプレート プロジェクトの構築の最適化と改善が完了しました。まだ単純ではないように見えますが、これはすでに最も単純な最適化であり、さらに多くのトリックやトリックがあります。あまりにも多くの最適化設定はほとんど意味がないと思うので拡張しませんでしたが、プロジェクトに過剰な冗長性と複雑性をもたらします 上記の構成による実際のテスト ビルド効果は、元の 13 秒から約 6 秒に短縮され、ホット デプロイメントはミリ秒レベルでさえありました最も重要なことは、最も単純な構成は、将来 vue-cli と webpack を新しいバージョンにアップグレードした後でも簡単に再構成して使用できることです。構成を復元するのにかかる時間はわずか 5 分です。 5 分で構成を変更するだけで、各ビルドの速度が 2 倍以上向上します。少し興奮しませんか:)
。 ここでもう少し言わせてください。実際、webpack2 から webpack3 へのアップグレードは、すべての Web プロジェクトを占有することを目的として構築された製品として、依然として複雑すぎる構成の問題を根本的に解決していないため、私にとっては非常に残念です。世界では、使いやすさや人間性の観点からもっと考慮されるべきです
webpack プロジェクト内のさまざまな .babelrc、.postcssrc.js...、およびさまざまな .conf ファイルを見るたびに、あらゆる種類のメイン ファイル、インデックス ファイル、アプリ ファイルがあり、なぜフロントエンドの構築がこのように発展したのかについて文句を言いたくなりますが、良いプロジェクトには 12 個以上の 設定ファイル が存在します。 . 本当に必要ですか?当初、webpack3 を使えばすべてが簡単になるだろうと思っていましたが、そうではありませんでした。しかし、当分の間、それを変更する方法はないので、私たちができることは、原則をできるだけ理解し、簡素化するために最善を尽くすことです。最適化する この記事を読む方法はもうマスターされたと思います。さらに興味をそそられる場合は、PHP 中国語 Web サイトの他の関連記事にも注目してください。
推奨読書:
HTML+JSでスクロール数字時計を実装するVueRouterのナビゲーションガードを使用する方法vue+要素を使用してテーブルページングステップを実装する方法以上がvue-cli コードを高速化して最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
