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 手順の紹介

推薦する

Vue の高度なコンポーネント機能コンポーネントの使用シナリオとソースコード分析

目次導入使用シナリオソースコード分析要約する導入Vue は、コンポーネントをステートレスかつインスタ...

MySQL がデータの削除と挿入に非常に時間がかかる問題の解決策

会社の開発者がテスト環境で挿入ステートメントを実行すると、正常に実行されるまでに 10 秒以上かかり...

CSSアニメーション属性キーフレームの詳細な説明

コラムを更新してからどれくらい経ったでしょうか?半年ですか?今年の後半は、まさに離陸、つまり文字通り...

Vue でフルスクリーンを実装し、フルスクリーン終了を監視する

目次序文:実装手順:完全なソースコード:詳細情報:序文: vueでは、デフォルトページを実装し、di...

Vue-CLI マルチページディレクトリパッケージ化手順の記録

ページディレクトリ構造 デフォルトの HTML テンプレート ファイル public/index.h...

MySQLの最適化の詳細な分析とパフォーマンス

導入データベースを使用したことがある人なら、機能面での like 記号と = 記号の類似点と相違点を...

あなたが知らない Linux KDE アプリケーション 11 選

翻訳Kool Desktop Environment の略称。 Linux、Unix、FreeBSD...

モバイル端末の水平および垂直画面ビューポート検出を決定するための js のいくつかの方法

目次1. 異なるビューポートを取得する方法2. 水平画面と垂直画面のJavaScript検出3. 水...

vue+echartsチャートの使用に関する問題記録

序文echarts は私が最もよく使用するチャート作成ツールであり、非常に完全なエコシステムとコンテ...

Docker がデータベースのデプロイに適さない 7 つの理由のまとめ

Docker は過去 2 年間で非常に人気が高まっています。開発者はすべてのアプリケーションとソフト...

いくつかの CSS3 タグの短縮形 (推奨)

border-radius: CSS3 丸い角構文: border-radius: 25px;楕円...

Windows 10 に付属する仮想マシンのネットワークを設定するための詳細な手順 (グラフィック チュートリアル)

1. サーバー ホストをクリックし、右側の操作リストで [仮想スイッチ管理] をクリックして、仮想...

HTML テーブルタグチュートリアル (46): テーブルフッタータグ

<tfoot> タグは、テーブル フッターのスタイルを定義するために使用されます。基本構...

77.9K の GitHub リポジトリを持つ Axios プロジェクト: 学ぶ価値のあることは何でしょうか?

目次序文1. Axiosの紹介2. HTTPインターセプターの設計と実装2.1 インターセプターの紹...