Webpack のスタイル処理の共有

Jan 08, 2018 am 09:41 AM
web webpack 共有

この記事では、主に webpack のスタイルの処理に関する簡単な説明を紹介します。編集者はそれが非常に優れていると考えたので、参考として共有します。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。

js にスタイル ファイルを導入できます


require('myStyle.css')
ログイン後にコピー

現時点では、このコードの解析を支援するために、対応する webpack ローダーを導入する必要があります。

style-loaderを使用したcss-loader

まず、css解析を処理するためのcss-loaderとstyle-loaderを導入できます。そのうち、css-loaderはcssファイルを解析するために使用され、style-loaderはcss ファイルを解析するために使用されます。 css ファイルは js ファイルに埋め込まれています


var path = require('path')
module.exports = {
 context: path.join(__dirname, 'src')
 entry: './',
 module: {
 rules: [
  {
  test: /\.css$/,
  include: [
   path.join(__dirname, 'src')
  ],
  use: ['style-loader', 'css-loader']
  }
 ]
 },
 output: {
  path: path.join(__dirname, 'dist'),
  filename: '[name].bundle.[hash].js'
 }
}
ログイン後にコピー

上記のコードでは、解析順序は最初に css-loader を使用して css ファイルを解析し、次に style を使用します。 -loader を使用して JS コードに埋め込みます。

less を使用してスタイルを記述する場合は、まずless-loader を使用してスタイル ファイルを css ファイルにコンパイルし、その後引き続き css-loader と style-loader を使用する必要があります。また、ローダーloaderは以下の-loaderを省略することができます。したがって、上記のコードは


module: {
 rules: [
 {
  test: /\.css$/,
  include: [
  path.join(__dirname, 'src')
  ],
  use: ['style', 'css', 'less']
 }
 ]
}
ログイン後にコピー

と省略できます。 一般に、テスト環境では、CSS をより速くコンパイルするために、この方法がより頻繁に使用されますが、この方法でコンパイルされた js ファイルは比較的大きくなります。で使用される本番環境には適していません。

個別のファイルにコンパイルする

上記のアプローチでは、css と js を一緒にパッケージ化し、実際のリクエストの数を減らしますが、コンパイルされた js ファイルは比較的大きいため、帯域幅を無駄にします。したがって、extract-text-webpack-plugin プラグインを使用して、CSS ファイルを独立したファイルにコンパイルします。 CDN を使用してこのファイルをノード サーバーにプッシュしたり、必要に応じてオンデマンドでロードしたりすることで、顧客リクエストのリンクを最適化し、ページの応答を高速化できます。


var path = require('path'),
 ExtractTextPlugin = require('extract-text-webpack-plugin')
module.exports = {
 context: path.join(__dirname, 'src'),
 entry: './',
 module: {
 rules: [{
  test: /\.css$/,
  include: [
  path.join(__dirname, 'src')
  ],
  use: ExtractTextPlugin.extract({
  fallback: 'style',
  use: 'css'
  })
 }]
 },
 output: {
  path: path.join(__dirname, 'dist'),
  filename: '[name].bundle.[hash].js'
 },
 plugins: [
 new ExtractTextPlugin('[name].css')
 ]
}
ログイン後にコピー

上記のコードでは、extract-text-webpack-plugin プラグインを使用して src ディレクトリ内のすべての CSS ファイルを処理します。まず、css-loader プラグインを使用して CSS コードを解析します。解析が失敗した場合は、style-loader プラグインを使用して解析し、最終的に dist ディレクトリに対応する js ファイルを生成します

古いブラウザと互換性があります

以前はスタイルを作成するときに、一部のスタイルに異なるプレフィックスが必要でした。さまざまなブラウザの場合 (-webkit- など)。ビルド ツールを入手したので、これらのプレフィックスに注意を払う必要はなくなりました。ビルド ツールはこれらのプレフィックスを自動的に追加します。

webpack の場合、これらのことを行うにはローダーまたはプラグインを使用する必要があると考えられます。確認したところ、autoprefixer-loader は廃止され、現在はメンテナンスされていないことがわかりました。posscss

postcss を使用することをお勧めします。 js 内の CSS スタイルを変換するために使用される js プラグインは他のプラグインと併用する必要があります。これは単なるコンバーターであり、コード解析機能は提供しません。

ここでは、スタイルに接頭辞を追加するための自動接頭辞プラグインが必要です。まずモジュールをダウンロードします。


npm install -D autoprefixer
ログイン後にコピー

その後、Webpackを設定できます


var autoprefixer = require('autoprefixer')
module.exports = {
 ...
 module: {
 loaders: [
  ...
  {
  {
   test: /\.css$/,
   loader: ExtractTextPlugin.extract(["css", "postcss"])
  },
  }
 ]
 },
 postcss: [autoprefixer()],
 ...
}
ログイン後にコピー

抽出されたスタイルファイルを見ると、プレフィックスが追加されていることがわかります


a {
 display: flex;
}
/*compiles to:*/
a {
 display: -webkit-box;
 display: -webkit-flex;
 display: -ms-flexbox;
 display: flex
}
ログイン後にコピー

さらに、autoprefixerは、次のような異なるバージョンを生成することもできますターゲット ブラウザのバージョン プレフィックスの数 たとえば、アプリケーションのほとんどのユーザーが比較的新しいバージョンのブラウザを使用している場合は、次のように設定できます。

postcss: [autoprefixer({ ブラウザ: ['最後の 2 バージョン'] })] 生成されるスタイルは少し異なるか、上記の例になります


a {
 display: flex;
}
/*compiles to:*/
a {
 display: -webkit-flex;
 display: -ms-flexbox;
 display: flex;
}
ログイン後にコピー

スタイル圧縮

コードを圧縮しますこれを行うには、webpack の組み込みプラグイン UglifyJsPlugin を使用できます。これは、js コードと css コードの両方を圧縮できます。


plugins: [
 ...
 new webpack.optimize.UglifyJsPlugin({
 compress: {
  warnings: false
 }
 }),
 ...
]
ログイン後にコピー

実際には、CSSコードを圧縮しているとは言えません。本質的には、JSコードを圧縮してから、そのコードをCSSファイルに出力しています。

共通コードを抽出するには CommonsChunkPlugin を使用します

まず第一に、CommonsChunkPlugin は複数のエントリがある場合に使用されることを明確にする必要があります。つまり、複数のエントリ ファイルがある場合、これらのエントリ ファイルにはいくつかの共通コードが含まれる可能性があり、これらの共通コードは別のファイルに抽出されます。これを理解することは非常に重要です。 (何かを理解するのに長い時間がかかりました、うう~~~~)

複数のエントリで同じ css ファイルが必要な場合は、CommonsChunkPlugin を使用して、これらの共通スタイル ファイルを独立したスタイル ファイルに抽出できます。


module.exports = {
 entry: {
 "A": "./src/entry.js",
 "B": "./src/entry2.js"
 },
 ...
 plugins: [
 new webpack.optimize.CommonsChunkPlugin({
 name: "commons", filename: "commons.js"
 }),
 ...
 ]
}
ログイン後にコピー

もちろんここでは共通CSSだけが抽出されるわけではなく、共通のJSコードがあればcommons.jsにも抽出されます。 ここで興味深い現象が発生します。抽出された CSS ファイルの名前はパラメータの name の値になり、js ファイルの名前は filename の値になります。

CommonsChunkPlugin は、すべてのチャンクに共通するモジュールのみを抽出するようです


// entry1.js
var style1 = require('./style/myStyle.css')
var style2 = require('./style/style.css')

// entry2.js
require("./style/myStyle.css")
require("./style/myStyle2.css")

// entry3.js
require("./style/myStyle2.css")
ログイン後にコピー

プラグインを使用すると、commons.css ファイルがまったく生成されないことがわかります。

最初の 2 つのチャンクの共通コードのみを取得する必要がある場合は、これを実行できます


module.exports = {
 entry: {
 "A": "./src/entry.js",
 "B": "./src/entry2.js",
 "C": "./src/entry3.js"
 },
 ...
 plugins: [
 new webpack.optimize.CommonsChunkPlugin({
 name: "commons", filename: "commons.js", chunks: ['A', 'B']
 }),
 ...
 ]
}
ログイン後にコピー

関連する推奨事項:

webpackの外部の使用方法

webpackを使用してリソースのメソッドとテクニックを最適化する方法

webpackのパフォーマンスの最適化

以上がWebpack のスタイル処理の共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Quark NetdiskをBaidu Netdiskに共有するにはどうすればよいですか? Quark NetdiskをBaidu Netdiskに共有するにはどうすればよいですか? Mar 14, 2024 pm 04:40 PM

Quark Netdisk と Baidu Netdisk は非常に便利なストレージ ツールですが、多くのユーザーはこれら 2 つのソフトウェアが相互運用可能かどうかを疑問に思っています。 Quark NetdiskをBaidu Netdiskに共有するにはどうすればよいですか?このサイトでは、QuarkネットワークディスクファイルをBaiduネットワークディスクに保存する方法をユーザーに詳しく紹介します。 Quark Network Disk から Baidu Network Disk にファイルを保存する方法 方法 1. Quark Network Disk から Baidu Network Disk にファイルを転送する方法を知りたい場合は、まず Quark Network Disk に保存する必要があるファイルをダウンロードして、次に開きますBaidu Network Disk クライアントを起動し、圧縮ファイルを保存するフォルダーを選択し、ダブルクリックしてフォルダーを開きます。 2. フォルダーを開いたら、ウィンドウ左上の「アップロード」をクリックします。 3. コンピュータ上でアップロードする必要がある圧縮ファイルを見つけ、クリックして選択します。

NetEase Cloud Music を WeChat Moments に共有する方法_NetEase Cloud Music を WeChat Moments に共有するチュートリアル NetEase Cloud Music を WeChat Moments に共有する方法_NetEase Cloud Music を WeChat Moments に共有するチュートリアル Mar 25, 2024 am 11:41 AM

1. まず、NetEase Cloud Music に入り、ソフトウェアのホームページ インターフェイスをクリックして、曲の再生インターフェイスに入ります。 2. 次に、曲の再生インターフェイスで、下の図の赤いボックスに示すように、右上隅にある共有機能ボタンを見つけて、クリックして共有チャンネルを選択し、共有チャンネルで「共有先」オプションをクリックします。下部にある [WeChat Moments] を選択すると、コンテンツを WeChat Moments に共有できます。

Baidu Netdisk で友達とファイルを共有する方法 Baidu Netdisk で友達とファイルを共有する方法 Mar 25, 2024 pm 06:52 PM

最近、Baidu Netdisk Android クライアントの新しいバージョン 8.0.0 がリリースされ、このバージョンには多くの変更が加えられただけでなく、多くの実用的な機能も追加されました。その中でも最も目を引くのがフォルダー共有機能の強化だ。ユーザーは簡単に友人を招待して仕事や生活で重要なファイルを共有できるようになり、より便利なコラボレーションと共有が実現します。では、友達と共有する必要があるファイルをどのように共有すればよいでしょうか? 以下では、このサイトの編集者が詳しく説明します。 1) Baidu Cloud APP を開き、まずホームページ上の関連フォルダーをクリックして選択し、次にインターフェイスの右上隅にある [...] アイコンをクリックします (以下を参照) 2) 次に、[+] をクリックします。 「共有メンバー」欄】を選択し、最後に全てにチェックを入れます

Mango TV メンバーのアカウント共有 2023 Mango TV メンバーのアカウント共有 2023 Feb 07, 2024 pm 02:27 PM

Mango TV には、さまざまな種類の映画、テレビシリーズ、バラエティ番組などのリソースがあり、ユーザーはそれらを自由に選択して視聴できます。 Mango TV 会員はすべての VIP ドラマを視聴できるだけでなく、ユーザーが楽しくドラマを視聴できるように最高解像度の画質を設定することもできます。以下では、編集者がユーザーが使用できる無料の Mango TV 会員アカウントをいくつか紹介します。急いで見てください。見てください。 Mango TV 最新のメンバー アカウント無料共有 2023: 注: これらは収集された最新のメンバー アカウントです。直接ログインして使用できます。パスワードを自由に変更しないでください。口座番号: 13842025699 パスワード: qds373 口座番号: 15804882888 パスワード: evr6982 口座番号: 13330925667 パスワード: jgqae 口座番号: 1703

コックピット Web UI から管理アクセスを有効にする方法 コックピット Web UI から管理アクセスを有効にする方法 Mar 20, 2024 pm 06:56 PM

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

HP プリンター ドライバーの 2 つのインストール方法を共有する HP プリンター ドライバーの 2 つのインストール方法を共有する Mar 13, 2024 pm 05:16 PM

HP プリンターは多くのオフィスで欠かせない印刷機器であり、コンピューターにプリンター ドライバーをインストールすると、プリンターが接続できないなどの問題を完全に解決できます。では、HP プリンター ドライバーをインストールするにはどうすればよいでしょうか?以下のエディターでは、2 つの HP プリンター ドライバーのインストール方法を紹介します。 1 つ目の方法: 公式 Web サイトからドライバーをダウンロードする 1. 検索エンジンで HP 中国公式 Web サイトを検索し、サポート欄で [ソフトウェアとドライバー] を選択します。 2. [プリンター] カテゴリを選択し、検索ボックスにプリンターのモデルを入力し、[送信] をクリックしてプリンター ドライバーを見つけます。 3. お使いのコンピューター システムに応じて対応するプリンターを選択します (win10 の場合は、win10 システム用のドライバーを選択します)。 4. ダウンロードが成功したら、フォルダー内でそれを見つけます

ウェブ標準とは何ですか? ウェブ標準とは何ですか? Oct 18, 2023 pm 05:24 PM

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

トマトの小説リンクの共有方法 トマトの小説リンクの共有方法 Feb 27, 2024 pm 04:20 PM

トマトノベルスは、質の高い小説素材を数多く集めた小説の宝庫です。ここでは、たくさんの種類の小説の中から自分の好みに合わせて好きな小説を選ぶことができます。読書好きの人にとっては、まさに自由に飛べる文学の世界であることは間違いありません。お気に入りの読み物に出会ったとき、それを友達と共有して一緒に読みたいと思うことがありますが、多くのユーザーはそれを共有する方法を正確に知りません。そのため、このチュートリアル ガイドでは、次のようなプレイヤー向けにガイドの詳細な紹介を提供します。もっと詳しく この記事と合わせて読んでみてください!トマトの小説を友達と共有するにはどうすればよいですか? 1. Tomato Novel を開き、クリックして小説に入り、右上隅の共有アイコンをクリックします。 2. 共有チャンネルを選択します ここでは WeChat の友達への共有を例に挙げます。 3. 「共有」をクリックします。 4. 確認できます

See all articles