ホームページ ウェブフロントエンド jsチュートリアル Webpack はスタイルをどのように処理すべきでしょうか?

Webpack はスタイルをどのように処理すべきでしょうか?

Jun 13, 2018 pm 03:10 PM
webpack スタイル

この記事では主に 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 プラグインを使用して解析し、最後に対応する js ファイルを dist ディレクトリに生成します

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

以前、スタイルを作成したとき、一部のスタイルには異なるプレフィックスが必要でした-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']
 }),
 ...
 ]
}
ログイン後にコピー

上記は、すべての人のために私がまとめたものです。将来、すべての人に役立つことを願っています。

関連記事:

nodeのchild_processモジュールについて(詳細なチュートリアル)

Node.jsにおける子プロセスのアプリケーションシナリオとは

nodeJsにおけるファイルシステムとフローの詳細な解釈

以上が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衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

macOS: デスクトップ ウィジェットの色を変更する方法 macOS: デスクトップ ウィジェットの色を変更する方法 Oct 07, 2023 am 08:17 AM

macOS Sonoma では、Apple の macOS の以前のバージョンのように、ウィジェットを画面外に隠したり、通知センター パネルで忘れたりする必要はありません。代わりに、これらは Mac のデスクトップに直接配置でき、インタラクティブでもあります。使用していないときは、macOS デスクトップ ウィジェットがモノクロ スタイルで背景にフェードインするため、気が散ることが減り、アクティブなアプリケーションまたはウィンドウで目の前のタスクに集中できるようになります。ただし、デスクトップをクリックするとフルカラーに戻ります。単調な外観が好みで、その統一性をデスクトップ上に保持したい場合は、それを永続的にする方法があります。次の手順は、その方法を示しています。システム設定アプリを開きます

VUE3 入門チュートリアル: Webpack を使用したパッケージ化とビルド VUE3 入門チュートリアル: Webpack を使用したパッケージ化とビルド Jun 15, 2023 pm 06:17 PM

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

vite と webpack の違いは何ですか vite と webpack の違いは何ですか Jan 11, 2023 pm 02:55 PM

相違点: 1. Webpack サーバーの起動速度は Vite より遅いですが、Vite は起動時にパッケージ化する必要がなく、モジュールの依存関係を解析してコンパイルする必要がないため、起動速度が非常に速くなります。 2. Vite ホット アップデートは webpack よりも高速です。Vite の HRM の観点から、特定のモジュールのコンテンツが変更された場合、ブラウザーにモジュールを再リクエストさせるだけです。 3. Vite は esbuild を使用して依存関係を事前構築しますが、webpack はノードに基づいています。 4. Vite のエコロジーは webpack ほど良くなく、ローダーとプラグインが十分に豊富ではありません。

WordPress Web ページの位置ずれを解決するためのガイド WordPress Web ページの位置ずれを解決するためのガイド Mar 05, 2024 pm 01:12 PM

WordPress Web ページの位置のずれを解決するためのガイド WordPress Web サイトの開発では、Web ページ要素の位置がずれていることがあります。これは、さまざまなデバイスの画面サイズ、ブラウザの互換性、または不適切な CSS スタイル設定が原因である可能性があります。このずれを解決するには、問題を注意深く分析し、考えられる原因を見つけて、段階的にデバッグおよび修復する必要があります。この記事では、WordPress Web ページの位置ずれに関する一般的な問題とその解決策をいくつか紹介し、開発に役立つ具体的なコード例を提供します。

モジュール開発に PHP と webpack を使用する方法 モジュール開発に PHP と webpack を使用する方法 May 11, 2023 pm 03:52 PM

Web 開発テクノロジーの継続的な発展に伴い、フロントエンドとバックエンドの分離とモジュール開発が広く普及する傾向になりました。 PHP は一般的に使用されるバックエンド言語です。モジュラー開発を行う場合、モジュールの管理とパッケージ化にいくつかのツールを使用する必要があります。Webpack は非常に使いやすいモジュラー パッケージング ツールです。この記事では、モジュール開発に PHP と webpack を使用する方法を紹介します。 1. モジュラー開発とは何ですか? モジュラー開発とは、プログラムを、それぞれが独自の機能を持つ独立したモジュールに分解することを指します。

CSS Web 背景画像デザイン: さまざまな背景画像スタイルと効果を作成します。 CSS Web 背景画像デザイン: さまざまな背景画像スタイルと効果を作成します。 Nov 18, 2023 am 08:38 AM

CSS Web ページの背景画像のデザイン: さまざまな背景画像のスタイルと効果を作成します。特定のコード例が必要です。 要約: Web デザインにおいて、背景画像は重要な視覚要素であり、ページの魅力と読みやすさを効果的に高めることができます。この記事では、いくつかの一般的な CSS 背景画像デザイン スタイルと効果を紹介し、対応するコード例を示します。読者は、自分のニーズや好みに応じてこれらの背景画像のスタイルと効果を選択して適用し、より良い視覚効果とユーザー エクスペリエンスを実現できます。キーワード: CSS、背景画像、デザインスタイル、エフェクト、コード表現

Webpack はどのように es6 モジュールを es5 モジュールに変換しますか? Webpack はどのように es6 モジュールを es5 モジュールに変換しますか? Oct 18, 2022 pm 03:48 PM

設定方法: 1. import メソッドを使用して ES6 コードをパッケージ化された js コード ファイルに配置します; 2. npm ツールを使用して babel-loader ツールをインストールします。構文は「npm install -D babel-loader @babel/core」です。 @babel/preset-env"; 3. babel ツールの構成ファイル「.babelrc」を作成し、トランスコーディング ルールを設定します。 4. webpack.config.js ファイルでパッケージ化ルールを構成します。

Spring Boot と Webpack を使用してフロントエンド プロジェクトとプラグイン システムを構築する Spring Boot と Webpack を使用してフロントエンド プロジェクトとプラグイン システムを構築する Jun 22, 2023 am 09:13 AM

最新の Web アプリケーションの複雑さが増すにつれて、優れたフロントエンド エンジニアリングとプラグイン システムを構築することがますます重要になっています。 Spring Boot と Webpack の人気により、これらはフロントエンド プロジェクトとプラグイン システムを構築するための完璧な組み合わせになりました。 SpringBoot は、最小限の構成要件で Java アプリケーションを作成する Java フレームワークです。自動構成などの多くの便利な機能を提供するため、開発者は Web アプリケーションをより迅速かつ簡単に構築および展開できます。 W

See all articles