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 ページレンダリングにおけるキーの適用例チュートリアル

導入フロントエンドプロジェクトの開発プロセスでは、el-table によって表示される結果列がコンポ...

DockerでHadoopを実行しイメージを作成する方法

車輪の再発明として、ここでは再パッケージ化を使用して Docker ベースの Hadoop イメージ...

Vueはスクロールバースタイルを実装します

最初はブラウザのスクロールバーのスタイルを変更して効果を実現したいと思っていましたが、情報を調べてみ...

nginx を使用して wgcloud へのアクセスを構成する方法

nginx の設定は次のとおりです。 http://172.17.188.27/wgcloud など...

MySQL累積計算実装方法の詳しい説明

目次序文需要分析MySQL ユーザー変数累積計算にMysqlユーザー変数を使用する要約するこの記事で...

MySQL のキーとインデックスの違い

まずはコードを見てみましょう: ALTER TABLE reportblockdetail ADD ...

MySQLデータベースを使い始めるための最初のステップはテーブルを作成することです

データベースを作成する右クリック - 新しいデータベースを作成ライブラリ名を入力し、文字セットと並べ...

VantフレームワークをWeChatアプレットに導入するプロセス全体の記録

序文WeChat ミニプログラムのネイティブ UI が少し物足りないと感じることがあるので、サードパ...

Linux環境でrmによって誤って削除されたファイルを回復する方法

目次序文RMの後には希望はあるのでしょうか?最前線を使ってファイルを取得するextundeleteを...

MySQL実行計画の詳細な説明

EXPLAIN ステートメントは、MySQL がステートメントを実行する方法に関する情報を提供します...

MySQL 5.7 の sql_mode のデフォルト値によって生じる落とし穴と解決策

通常のプロジェクト開発中に、MySQL バージョンが 5.6 から 5.7 にアップグレードされた場...

mysql ビュー関数の分析と使用例

この記事では、例を使用して MySQL ビューの機能と使用方法を説明します。ご参考までに、詳細は以下...

画面なしで無線ネットワークに接続しているときに Raspberry Pi の IP アドレスを見つける方法

あなたがlinuxerだと仮定すると、 windowserだとは想定しません。Windows ユーザ...

vue-routerのマッチングに基づいてパンくずリスト機能を実現する

この記事では主にvue-routerのmatchedをベースにしたbreadcrumb機能を紹介し、...