検索
ホームページウェブフロントエンドVue.jsVue での Web フロントエンド プロジェクトの最適化の簡単な分析 (コード付き)

前回の記事「JSを使ってユニバーサルモジュールを書く方法をステップバイステップで教えます(詳細なコード説明)」では、JSを使ってユニバーサルモジュールを書く方法を紹介しました。次の記事では、Vue での Web フロントエンド プロジェクトの最適化について説明します。必要な友人は参照してください。お役に立てば幸いです。

Vue での Web フロントエンド プロジェクトの最適化の簡単な分析 (コード付き)

今日、ようやく自由時間ができたので、kui ドキュメント プロジェクトを最適化したいと考えています。開くのが遅すぎます。http://k-ui.cn

が完全に表示されるまでに数秒かかります。我慢できません。写真を見ればわかると思いますが、

Vue での Web フロントエンド プロジェクトの最適化の簡単な分析 (コード付き)

これを見ると、なぜこんなに遅いのか、不思議なことは何もありません。

ドキュメントの webpack 設定は役に立たないので vue-cli スキャフォールディングを手動で設定したため、さらに問題が発生すると思われます

1 ) Webpack 設定エラーにより、ライブラリがファイルに繰り返しコンパイルされました

コンパイル後に比較的大きなファイルを徐々にチェックしたところ、index.js がエントリ ファイルであり、そのコンテンツに vue ライブラリが含まれていることがわかりました。繰り返し梱包されているもの。以下に示すように、

Vue での Web フロントエンド プロジェクトの最適化の簡単な分析 (コード付き)

webpack 構成を段階的にトラブルシューティングすると、問題は見つからないので、問題はどこにあるのでしょうか?vue# を検索しました。 # # が導入され、vue3 ファイルがインポートされていることが判明しましたが、これはコンパイルの重複には影響しませんでした。影響を受けるはずはありません。最終的に問題が発見されました。 mac だったので、環境の大文字と小文字が区別されるため、「import Vue from 'vue'」は「import Vue from 'Vue'」と書かれていました。 」と手を振りながら。

問題はないようです

debugデバッグではエラーは発生しません。しかし、ここで問題が発生します。この問題は、from の後の「Vue」を小文字の「vue」に変更することで解決されます。再コンパイル後のファイルは 130 kb 以上小さくなります。 945kb から 800kb 以上まで、最適化を続けます。

2) サードパーティのファイルが大きすぎることが原因です。

ドキュメントの一部でコードの強調表示が必要なため、この記事では

highlight.js コード強調表示ライブラリを使用します。 。自分でコンポーネントを書きました。コードは次のとおりです。

<!-- code.vue -->
<template>
  <div v-high class="k-code">
    <pre: style="styles" ref="rel">
      <code: class="lang">
        <slot> </slot>
      </code>
    
  
//code.js
import Hljs from "highlight.js";
import "highlight.js/styles/atom-one-light.css";
const vueHljs = {};
vueHljs.install = (Vue) => {
  Vue.directive("high", function (el, binding) {
    let blocks = el.querySelectorAll("pre code");
    Array.prototype.forEach.call(blocks, Hljs.highlightBlock);
  });
};
export default vueHljs;
<!-- 调用 -->
<code lang="xml html">
  {{ code }}
</code>

実際はこのようにコードを書くと問題ないのですが、コンパイル後のファイルがなぜこんなに大きくなりますか?

800 は kb を超えているので... キーコードの強調表示コードをコメントアウトしました。ここに highlight.js が導入されています。再度コンパイルします:

コンパイルされたファイルはわずか

130kb で、問題の原因が見つかりました。

以前は Google のコード ハイライトを使用していましたが、今回は必要ありません。また、

markdown もわざわざ使用したくありません。

node_modules に移動して、注意深く調べてください。コードの強調表示には多すぎる言語と構文が含まれているため、毎回コンパイルします。これは完全なパッケージ python# です。 ##,sqlc など 50 はすべていくつかの強調表示された言語で書かれていますが、必要なのは js だけですhtml 構文ハイライトなので、ライブラリに必要なものを提示します。 <pre class='brush:php;toolbar:false;'>var Hljs = require(&quot;./highlight&quot;); //只要这2个高亮语言库,其他干掉 Hljs.registerLanguage(&quot;xml&quot;, require(&quot;./lang/xml&quot;)); Hljs.registerLanguage(&quot;javascript&quot;, require(&quot;./lang/javascript&quot;));</pre> コンパイル後、再度コンパイルします。

180kb

はまだ許容範囲内です。 3)

vue

router## によって駆動される単一ページ

web であるため、js モジュールはオンデマンド でロードされません。 #view、プロジェクトがどんどん大きくなるにつれて、これをオンデマンドでロードする必要があります。そうしないと、すべてのページが同じ js ファイルにパッケージ化されてしまいます。読み込みが遅くなる原因となります。 オンデマンド読み込み (つまり、遅延読み込み) には 3

実装メソッドがあり、

1) Vue 独自の非同期メソッド

in

ルータプッシュ時に修正を行う

{
  path: &#39;/test&#39;,
  name: &#39;test&#39;,
  component: resolve => require([&#39;../components/test&#39;], resolve)
}
2) es提案書のImport()

公式ドキュメント

内容と名前に注意する 同じ意志ファイルにパッケージ化されます

const test = () => import( /* webpackChunkName: "test" */ &#39;../components/test&#39;) {
    path: &#39;/test&#39;,
    name: &#39;test&#39;,
    component: test
  },

3) webpack によって提供される require.ensure()

パラメータ、最後のチャンク名、および出力設定が確実に渡されることを確認してください。渡されたchunkFilename: [id].build.js

{
  path: &#39;/test&#39;,
  name: &#39;test&#39;,
  component: resolve => require.ensure([], () => resolve(require(&#39;../components/test&#39;)), &#39;test&#39;)
},

になります 注: require.ensure() は webpack に固有であり、import() に置き換えられました。

上記の

3
メソッドはオンデマンド読み込みを実現でき、最後に

webpack configchunkFilename

output: {

  path: path.resolve(__dirname, &#39;../dist&#39;),
  filename: &#39;js/[name].js&#39;, //.[hash].js&#39;,
  publicPath: &#39;/&#39;,
  chunkFilename: &#39;js/[name].[chunkhash:3].js&#39;,

},
# を設定します。 ##もちろん、プロジェクトではオンデマンド読み込みを実行しましたが、最終的にパッケージ化されたファイルはマージされたままでした。 私のルーティングは次のように機能します:

import Vue from "vue";
import Router from "vue-router";

Vue.use(Router);

let routes = [];

let r = [
  "",
  "install",
  "start",
  "log",
  "input",
  "button",
  "select",
  "switch",
  "form",
  "colorpicker",
  "loading",
  "icon",
  "timeline",
  "theme",
  "react-kui",
  "angular-kui",
  "alert",
  "message",
  "notice",
  "upload",
  "poptip",
  "menu",
  "tabs",
  "badge",
  "checkbox",
  "radio",
  "datepicker",
  "table",
  "layout",
  "page",
  "modal",
  "kyui-loader",
  "sponsor",
  "about",
];

r.forEach((x) => {
  routes.push({
    path: `/${x}`,
    component: (resolve) =>
      require([x == "" ? "./ui/index" : `./ui/${x}`], resolve),
    // component: r => require.ensure([], () => r(require(x==&#39;&#39;?&#39;/ui/index&#39;: `./ui/${x}` )), x)
  });
});

let routers = new Router({
  routes: routes,
  mode: "history",
});
export default routers;

オンデマンド読み込みには問題ないようですが、最終的にパッケージ化された

chunkFilename

300kb

で、すべてのページは js ファイルに入力されます。 <p>探究了一番,因为是异步加载,所以不能动态传值的,<code>map遍历的时候路径组合x值是动态传入,导致打包后无法识别。最后修改为静态的,问题解决了。重新编译后多个页面路由分割成单个js文件,每个约10kb左右,路由改变时,动态加载对应的js文件

import xx from &#39;/dev/test‘   //这里的abc 是静态的值 如 ‘/ui/abc.vue’ {

path: &#39;xx&#39;,
  component: xx
}

至此,问题解决了,页面加载正常情况下延时1-2秒,时间缩短了将近10陪。

【完】

推荐学习:vue.js高级教程

以上がVue での Web フロントエンド プロジェクトの最適化の簡単な分析 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は禅境花园で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Netflixのフロントエンド:React(またはVue)の例とアプリケーションNetflixのフロントエンド:React(またはVue)の例とアプリケーションApr 16, 2025 am 12:08 AM

Netflixは、Reactをフロントエンドフレームワークとして使用します。 1)Reactのコンポーネント開発モデルと強力なエコシステムが、Netflixがそれを選択した主な理由です。 2)コンポーネント化により、Netflixは複雑なインターフェイスをビデオプレーヤー、推奨リスト、ユーザーコメントなどの管理可能なチャンクに分割します。 3)Reactの仮想DOMおよびコンポーネントライフサイクルは、レンダリング効率とユーザーインタラクション管理を最適化します。

フロントエンドの風景:Netflixが選択にアプローチした方法フロントエンドの風景:Netflixが選択にアプローチした方法Apr 15, 2025 am 12:13 AM

Netflixのフロントエンドテクノロジーでの選択は、主にパフォーマンスの最適化、スケーラビリティ、ユーザーエクスペリエンスの3つの側面に焦点を当てています。 1。パフォーマンスの最適化:Netflixは、Reactをメインフレームワークとして選択し、SpeedCurveやBoomerangなどのツールを開発して、ユーザーエクスペリエンスを監視および最適化しました。 2。スケーラビリティ:マイクロフロントエンドアーキテクチャを採用し、アプリケーションを独立したモジュールに分割し、開発効率とシステムのスケーラビリティを改善します。 3.ユーザーエクスペリエンス:Netflixは、Material-UIコンポーネントライブラリを使用して、A/Bテストとユーザーフィードバックを介してインターフェイスを継続的に最適化して、一貫性と美学を確保します。

React vs. Vue:Netflixはどのフレームワークを使用していますか?React vs. Vue:Netflixはどのフレームワークを使用していますか?Apr 14, 2025 am 12:19 AM

netflixusesaCustomframeworkは、「ギボン」ビルトンリアクト、notreactorvuedirectly.1)チームエクスペリエンス:seice basedonfamperivity.2)projectomplerprojects:vueforsplerprojects、racefforcomplexones.3)customeforsneeds:reactofforsmorefloficailie.

フレームワークの選択:Netflixの決定を推進するものは何ですか?フレームワークの選択:Netflixの決定を推進するものは何ですか?Apr 13, 2025 am 12:05 AM

Netflixは、主に、パフォーマンス、スケーラビリティ、開発効率、エコシステム、技術的な負債、およびフレームワーク選択におけるメンテナンスコストを考慮しています。 1。パフォーマンスとスケーラビリティ:JavaとSpringbootが選択され、大規模なデータと高い同時リクエストを効率的に処理します。 2。開発効率とエコシステム:Reactを使用して、フロントエンド開発効率を向上させ、その豊富なエコシステムを利用します。 3.技術的な負債とメンテナンスコスト:node.jsを選択してマイクロサービスを構築して、メンテナンスコストと技術的債務を削減します。

Netflixのフロントエンドの反応、Vue、および未来Netflixのフロントエンドの反応、Vue、および未来Apr 12, 2025 am 12:12 AM

Netflixは、主にReactをフロントエンドフレームワークとして使用し、特定の機能のためにVUEによって補足されます。 1)Reactのコンポーネント化と仮想DOMは、Netflixアプリケーションのパフォーマンスと開発効率を向上させます。 2)VueはNetflixの内部ツールと小規模プロジェクトで使用されており、その柔軟性と使いやすさが重要です。

フロントエンドのvue.js:実際のアプリケーションと例フロントエンドのvue.js:実際のアプリケーションと例Apr 11, 2025 am 12:12 AM

Vue.jsは、複雑なユーザーインターフェイスを構築するのに適した進歩的なJavaScriptフレームワークです。 1)そのコア概念には、レスポンシブデータ、コンポーネント、仮想DOMが含まれます。 2)実際のアプリケーションでは、TODOアプリケーションを構築し、Vuerouterを統合することで実証できます。 3)デバッグするときは、vuedevtools and Console.logを使用することをお勧めします。 4)パフォーマンスの最適化は、V-IF/V-Show、リストレンダリング最適化、コンポーネントの非同期負荷などを通じて達成できます。

Vue.jsとReact:重要な違​​いを理解するVue.jsとReact:重要な違​​いを理解するApr 10, 2025 am 09:26 AM

Vue.JSは中小企業から中規模のプロジェクトに適していますが、Reactは大規模で複雑なアプリケーションにより適しています。 1。VUE.JSのレスポンシブシステムは、依存関係追跡を介してDOMを自動的に更新し、データの変更を簡単に管理できるようにします。 2.反応は一方向のデータフローを採​​用し、データは親コンポーネントから子コンポーネントに流れ、明確なデータフローと簡単な抽出構造を提供します。

Vue.js vs. React:プロジェクト固有の考慮事項Vue.js vs. React:プロジェクト固有の考慮事項Apr 09, 2025 am 12:01 AM

VUE.JSは、中小規模のプロジェクトや迅速な反復に適していますが、Reactは大規模で複雑なアプリケーションに適しています。 1)Vue.jsは使いやすく、チームが不十分な状況やプロジェクトスケールが小さい状況に適しています。 2)Reactにはより豊富なエコシステムがあり、高性能で複雑な機能的ニーズを持つプロジェクトに適しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

DVWA

DVWA

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

mPDF

mPDF

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