css-loader を使用して vue-cli で css モジュールを実装する

css-loader を使用して vue-cli で css モジュールを実装する

【序文】

Vue と React の CSS モジュール ソリューションはどちらも、実装にローダーに依存しています。使用中、Vue はscoped属性を使用してスタイルをプライベート化し、ディープ セレクター/deepを使用してスタイルを非プライベート化します。

例:

<div>
    <div class="demo">
        <div class="child"></
        div>
    </div>
</div>
<スクリプト>
//コード
<スクリプト/>
<style lang="less" スコープ>
  .デモ{
    高さ: 100px;
    パディング上部: 20px;
    背景色: グレー;
    /deep/.child {
      色: 赤;
    }
  }
</スタイル>

これは react での使用方法です (css-loader に基づく):

//テストなし
.デモ{
    高さ: 100px;
    パディング上部: 20px;
    背景色: グレー;
    :global(.child) {
        色: 赤
    }
}
'./test.less' からスタイルをインポートします

//コード

<div className={styles.demo}>
    <div class="child"></div>
</div>

vue の方が使いやすいと言わざるを得ません。

この CSS モジュールのソリューションを実装するために、Vue で css-loader を使用する必要がある場合はどうなりますか?ここでは、vue-clie 3.x を例に挙げます。

vue のスキャフォールディングvue-cliでも、 react のスキャフォールディングumiでも、 webpack-chain webpack の設定に使用されるようになりました。

ここで、 vue-cliスキャフォールディングによって作成されたプロジェクトのルート ディレクトリに、新しいvue.config.jsを作成し、次の内容を記述します。

モジュール.エクスポート = {
  チェーンWebpack: (config) => {
    config.devServer
      。プロキシ({
        '/api': {
          ターゲット: 'http://localhost:3000',
          パス書き換え: { '^/api': '', },
        },
      })
      .port(9000);

    構成モジュール
    .rule('less')
    .oneOf('通常のモジュール')
    .test(/.less$/)
    .use('css-loader')
    .tap(オプション => {
      Object.assign(options, { を返します
        モジュール:
          localIdentName: '[name]__[local]___[hash:base64:5]',
          自動: /\.less$/i,
        },
      })
    });

  },
};

実はこの段落を書く必要はありません。vue-cli の scaffolding はデフォルトでcss-loaderのモジュール化を設定していますが、 less ファイルはxxx.module.lessという形式で名前を付ける必要があり、 umi設定と異なり不便です。設定して再起動したら react のように css を書いて、インポートしたstyle dataに格納すれば良いのです。ここでは、vue-cli でcss-loaderを使用できるソリューションについてのみ説明しますが、ベストプラクティスは vue に付属しているものを使用することです

これで、css-loader を使用して vue-cli で css モジュールを実装する方法についての説明は終了です。vue-cli で css モジュールを使用する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  HTML ページはダーク モードの実装をサポートします

>>:  Nginx 構成 SSL および WSS 手順の紹介

推薦する

JDBC を使用して MySQL を操作するための簡単な分析では、Class.forName("com.mysql.jdbc.Driver") を追加する必要があります。

導入データベースに接続するためにJDBCを使用することに慣れている場合は、データベースに接続するため...

CSSの高さの崩壊問題についての簡単な説明

パフォーマンス例えば: HTML: <div class="first"&...

CentOS で LibreOffice を使用してドキュメント形式を変換する方法

プロジェクト要件では、アップロードされたドキュメントの前処理が必要です。ユーザーが doc 形式でド...

InnoDBのインデックスページ構造、挿入バッファ、適応ハッシュインデックスについての簡単な説明

InnoDB インデックスの物理構造すべての InnoDB インデックスは Btree インデックス...

HarborをベースにしたDocker専用倉庫の構築方法

目次1. ハーバーの紹介1. ハーバーが民間倉庫を建設3. 港湾の維持管理4. Harborユーザー...

HTML チュートリアル: 順序なしリスト

<br />原文: http://andymao.com/andy/post/102.h...

mysql はフィールドコンテンツの一部を置き換え、mysql は関数 replace() を置き換えます。

[mysql] replace の使用方法 (フィールドの内容の一部を置き換える) [mysql]...

Nginx を使用して rtmp ライブ サーバーを実行する方法

今回は、コンピューターや携帯電話用の rtmp ライブ ブロードキャスト サーバーを設定し、ライブ ...

MySQL 5.7 をインストールした後にコマンドライン ウィンドウを開くとクラッシュする問題の解決方法

序文最近、MySQL 5.7 をインストールしましたが、問題が見つかりました。コマンド ライン ウィ...

CentOS仮想マシンの時刻を変更する方法

上はシステム時間、下はハードウェア時間です。ここでは変更を加えているので、同じくらいの速さになってい...

MySQLクエリ条件のnot inとinの違いと理由

まずSQLを書く SELECT DISTINCT from_id タラから cod.from_id ...

JavaScript 構造化代入の詳細な説明

目次コンセプト配列の分割値を個別に宣言して割り当てるデフォルト値の構造化解除変数値の交換関数によって...

CSS3 で QR コードスキャン効果を実装する例

オンラインプレビューhttps://jsrun.pro/AafKp/まず効果を見てみましょう:最初の...

Linux プラットフォームの MySQL でリモート ログインを有効にする

開発中、MySQL へのリモートアクセスでよく問題に遭遇します。そのたびに検索する必要があり、面倒に...

PXEを使用してCentOS7.6を自動的にインストールする方法の詳細なチュートリアル

1. 需要ベースには 300 台の新しいサーバーがあり、CentOS7.6 オペレーティング システ...