Webpack エクスペリエンスの共有
webpack はモジュール バンドラーです。その主な目的は JavaScript ファイルを一緒にパッケージ化することです。パッケージ化されたファイルはブラウザで使用されますが、この記事では主に Webpack について説明します。
キャッシュ
キャッシュ用に max-age + cdn を組み合わせたファイル名 [name].[contenthash:8].js
を生成します。 [name].[contenthash:8].js
,结合 max-age + cdn 做缓存。
网页加载
html
以前是固定的一个 html, html -》版本号 js 文件(通过webpack打出来的)-》通过版本号确定具体 js。(现在想想不太合理,虽然没和后台耦合这么重)
现在是变动的 html,通过 HtmlWebpackPlugin 打出来(webpack 生成,里面包含版本号的 js)
这样还省了一个串行时间(拉版本号文件)。 同时也便于做灰度,比如发布了需求,让一部分用户先体验,动态打出 html 给到后台即可。(固定 html 则没这么轻松做)
css分离
在观麦,css变动会非常的少,这得益于 react-gm 对类名的完善。 既然变动少,把 css 单独出来也不错,使用 ExtractTextPlugin 分离 css。
分离后减少 js 大小,不阻塞 js,同时 css 和 js 可同时拉取。
common
new CommonsChunkPlugin({name: 'commons'})
看打包后的 common 代码,会发现其他模块的id和hash都会打在common中,这样每次 commons 文件都会变,就很难做缓存了。
提供两个文件列表即可,会发现 webpack 吧 id 和 hash 打在 manifest 文件中。这样commons就可以缓存了。btw,没看到官网有介绍,看到的说声。
new CommonsChunkPlugin({names: ['commons', 'manifest']})
本地开发
讲讲代理,本地开始是自己起的服务,没有后台服务,自然需要代理到某个地方。 可通过 devServer.proxy 。也可代理到外网排查 bug,都是源码,查 bug 非常快。
"proxy": { "/ticket/*": { "target": "http://dev.guanmai.cn:7413", "changeOrigin": true } }
打包速度
DllPlugin
当项目大了后,必然需要打很多包,导致打包时间非常长。 官方推荐做法是把不常变动的文件打DLL。
我们工程就把 react
react-dom
prop-types
classnames
mobx
mobx-react
lodash
moment
big.js
等打进来。
网上资料都介绍 dll 的 文件名是 [name]_[hash].dll.js, 我们是 [npm version]_dll.js npm version
rrreee
パッケージ化された共通コードを見ると、他のモジュールのIDとハッシュが共通に型付けされるため、その都度コモンズファイルが変わり、キャッシュするのが難しくなります。 2 つのファイル リストを指定するだけで、webpack がマニフェスト ファイルに ID とハッシュを設定することがわかります。このようにしてコモンをキャッシュできます。ちなみに公式サイトには紹介がなかったので、知っていたら教えてください。rrreee
ローカル開発 エージェントについて話しましょう。 devServer.proxy 経由で利用可能です。エージェントを使用して外部ネットワークにアクセスしてバグをチェックすることもできます。これはすべてソースコードであるため、バグチェックは非常に高速です。rrreee
パッケージ化の速度DllPlugin プロジェクトが大きくなると、必然的に多くのパッケージが必要となり、パッケージ化に非常に長い時間がかかります。 公式に推奨されているアプローチは、頻繁に変更されないファイルを DLL に作成することです。 私たちのプロジェクトはreact
react-dom
prop-types
classnames
mobx
mobx-react lodash
moment
big.js
が届くまで待ちます。 オンライン情報では、dll のファイル名は [名前]_[ハッシュ].dll.js であると紹介されています。[npm バージョン]_dll.js npm バージョン
を package.json バージョンから読み取ります。 なぜnpmバージョンではなくハッシュを使用しないのでしょうか?二次パッケージ化を検討しているときに問題が発生しました。DLL を再パッケージ化する必要があるかどうかを判断する方法は?ハッシュの場合はどうすればよいですか (解決策を推奨してください)。 npm バージョンを使用している場合、バージョンが変更されるとすぐに再パッケージ化されます。たとえば、react がアップグレードされた場合は、バージョン + を取得して再パッケージ化します。 happypackhappypack はビルドの速度を大幅に向上させ、複数のスレッドにパッケージ化することができ、キャッシュによりリビルドも高速化されます。 devtool開発用の評価、本番用のソースマップ(許容範囲内で表示の問題、パッケージング速度の犠牲などのトラブルシューティングに使用されます)babel-loadercacheDirectoryを覚えてください
noParseとエイリアス
一部のライブラリ必須ではないため、noParse 構成は解析されず、エイリアスは x.min.js ファイルを指します。
木揺れ
はまだ使用されておらず、まだ適切な時期ではないように感じます。良い記事がありました。 Compression
UglifyJsPlugin 最初は、webpack.optimize.UglifyJsPlugin をベースにしていました。 uglify-js@2.x で。
🎜現在、webpack が別途登場しており、キャッシュのサポートやマルチコア圧縮など、さらに多くの機能を備えています。試してみましたが、非常に高速でした。 webpack.optimize.UglifyJsPlugin は実際には uglifyjs-webpack-plugin です。 🎜🎜私にとって不思議なのは、これが公式には uglify-es に基づいているということです。ただし、依存関係は依然として uglify-js だと思います。奇妙さ。 🎜🎜UglifyJsParallelPlugin🎜🎜正式リリース前はマルチコア対応の webpack-uglify-Parallel を使用していました。速度はuglifyjs-webpack-pluginとあまり変わりません。 🎜🎜記事を書くときにgithubを覗いてみたら7月に廃止されて公式サイトに統合されていました。 🎜🎜その他🎜🎜 babel の babel-minify-webpack-plugin は傍観してください。 🎜🎜スクリプト cdn🎜🎜一部の js (gm-fetch babel-polyfill) にはほとんど変更がありません。webpack でパッキングするのは少し無駄です。cdn 経由で取得して、スクリプト形式で HTML ドキュメントに組み込むことができます。 🎜🎜分析🎜🎜チャートと非常に直感的な分析があります。私はそのほうが好きです。 🎜webpack-monitor🎜🎜古いものは webpack-bundle-analyzer です🎜🎜関連する推奨事項: 🎜🎜🎜webpack を使用してフロントエンド プロジェクトを構築するための Web サンプル コード🎜🎜🎜🎜 webpack 構成方法の概要🎜🎜node.jsのnpmとwebpackの設定方法を詳しく解説
以上がWebpack エクスペリエンスの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Vue は、インタラクティブで効率的な Web アプリケーションを迅速に構築するのに役立つ優れた JavaScript フレームワークです。 Vue3 は、多くの新機能が導入された Vue の最新バージョンです。 Webpack は現在最も人気のある JavaScript モジュール パッケージャーおよびビルド ツールの 1 つで、プロジェクト内のさまざまなリソースの管理に役立ちます。この記事では、Webpack を使用して Vue3 アプリケーションをパッケージ化してビルドする方法を紹介します。 1.Webpackをインストールする

JavaAPI 開発における Web サーバー処理に Jetty7 を使用する インターネットの発展に伴い、Web サーバーはアプリケーション開発の中核部分となり、多くの企業でも注目を集めています。増大するビジネス ニーズを満たすために、多くの開発者が Web サーバー開発に Jetty の使用を選択しており、その柔軟性と拡張性は広く認識されています。この記事では、JavaAPI 開発における Jetty7 の使用方法を紹介します。

フォーム検証は Web アプリケーション開発において非常に重要なリンクであり、フォーム データを送信する前にデータの有効性をチェックして、アプリケーションのセキュリティ脆弱性やデータ エラーを回避できます。 Web アプリケーションのフォーム検証は、Golang を使用すると簡単に実装できます。この記事では、Golang を使用して Web アプリケーションのフォーム検証を実装する方法を紹介します。 1. フォーム検証の基本要素 フォーム検証の実装方法を紹介する前に、フォーム検証の基本要素が何であるかを知る必要があります。フォーム要素: フォーム要素は

Cockpit は、Linux サーバー用の Web ベースのグラフィカル インターフェイスです。これは主に、初心者/熟練ユーザーにとって Linux サーバーの管理を容易にすることを目的としています。この記事では、Cockpit アクセス モードと、CockpitWebUI から Cockpit への管理アクセスを切り替える方法について説明します。コンテンツ トピック: コックピット エントリ モード 現在のコックピット アクセス モードの確認 CockpitWebUI からコックピットへの管理アクセスを有効にする CockpitWebUI からコックピットへの管理アクセスを無効にする まとめ コックピット エントリ モード コックピットには 2 つのアクセス モードがあります。 制限付きアクセス: これは、コックピット アクセス モードのデフォルトです。このアクセス モードでは、コックピットから Web ユーザーにアクセスできません。

Web 標準は、W3C およびその他の関連組織によって策定された一連の仕様とガイドラインです。HTML、CSS、JavaScript、DOM、Web アクセシビリティおよびパフォーマンスの最適化の標準化が含まれます。これらの標準に従うことで、ページの互換性を向上させることができます。 、メンテナンス性とパフォーマンス。 Web 標準の目標は、Web コンテンツをさまざまなプラットフォーム、ブラウザー、デバイス上で一貫して表示および操作できるようにして、より優れたユーザー エクスペリエンスと開発効率を提供することです。

インターネットが急速に発展している現在、PHP はサーバーサイドのスクリプト言語として、ますます多くの開発者に採用されています。 PHP には、学習が容易、柔軟性、オープンソース、無料であるという利点があり、さまざまな Web サイトや Web アプリケーションを迅速に開発できます。ただし、PHP 開発者として、熾烈な競争の中で抜きん出て、効率的で安定したコードを作成するには、さまざまな機能の実装スキルと経験を習得する必要もあります。まず第一に、プロジェクト アーキテクチャの合理的な計画が PHP アプリケーション開発の鍵となります。適切なプロジェクト構造により、コードの保守性が向上します。

Web は、ワールド ワイド ウェブとしても知られるグローバル ワイド エリア ネットワークであり、インターネットのアプリケーション形式です。 Web はハイパーテキストとハイパーメディアに基づいた情報システムであり、ユーザーはハイパーリンクを通じて異なる Web ページ間を移動することにより、情報を閲覧したり入手したりすることができます。 Web の基礎はインターネットであり、統一および標準化されたプロトコルと言語を使用して、異なるコンピューター間でのデータ交換と情報共有を可能にします。

PHP は Web 開発のバックエンドに属します。 PHP はサーバー側のスクリプト言語であり、主にサーバー側のロジックを処理し、動的な Web コンテンツを生成するために使用されます。フロントエンド テクノロジーと比較して、PHP はデータベースとの対話、ユーザー リクエストの処理、ページ コンテンツの生成などのバックエンド操作に多く使用されます。次に、特定のコード例を使用して、バックエンド開発における PHP のアプリケーションを説明します。まず、データベースに接続してデータをクエリするための簡単な PHP コード例を見てみましょう。
