ナビゲーションバーコンポーネントをVueでカプセル化する

ナビゲーションバーコンポーネントをVueでカプセル化する

はじめに:ナビゲーション バーなどのコンポーネント ベースのアイデアを使用して機能モジュールを完全にカプセル化すると、開発アイデアと効率の両方に多くの利点があります。開発では、コンポーネント ベースの開発アイデアを可能な限り使用し、すべてのコードを同じ .vue ファイルに記述しないようにする必要があります。これにより、コードの可読性が大幅に向上します。

ナビゲーションバーのカプセル化

主なアイデアは、赤い部分をコンポーネントとして扱うことです。赤い部分は画像とテキストが異なるだけなので、同じコンポーネントにカプセル化し、画像情報とテキスト情報をコンポーネントに渡します (スロットを使用できます)。

//タブバーアイテム.vue
<テンプレート>
  <div class="tabBarItem" @click="tabBarItemClick">
    <div v-if="!isActive">
      <スロット名="アイテムアイコン"></スロット>
    </div>
    <div v-else>
      <スロット名="アイテムアイコンアクティブ"></スロット>
    </div>
    <div:style="isActiveColor"> は、
      <スロット名="アイテムテキスト"></スロット>
    </div>
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  名前:"タブバーアイテム",
  小道具:{
    パス:文字列、
    アクティブカラー:{
      タイプ:文字列、
      デフォルト:"ピンク"
    }
  },
  計算:{
    アクティブ:{
      得る(){
        this.$route.path.indexOf(this.path)!=​​=-1 を返します。
      },
      セット(){}
    },
    isActiveColor(){
      this.isActive?{color:this.activeColor}:{} を返します。
    }
  },
  方法:{
    タブバーアイテムクリック(){
      this.$router.push(this.path);
    }
  }
}
</スクリプト>

<スタイルスコープ>
.tabBarItem{
  フレックス: 1;
  フォントサイズ: 12px;
}
.tabBarItem画像{
  上マージン: 3px;
  幅: 24px;
  パディング下部:3px;
}
</スタイル>

次のステップは、これら 4 つのオプションを同じ場所に配置するコンテナーをカプセル化することです。

//タブバー.vue
<テンプレート>
  <div class="tabBar">
    <スロット></スロット>
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  名前:"タブバー"
}
</スクリプト>

<スタイルスコープ>
.タブバー{
  ディスプレイ: フレックス;
  高さ: 49px;
  位置: 固定;
  左: 0;
  右: 0;
  下部: 0;
  テキスト配置: 中央;
  ボックスの影: 0px -1px 1px rgba(100, 100, 100, .1);
  背景色: #f6f6f6;
}

</スタイル>

次のステップでは、これを使用して、それぞれの TabBarItem スロットに異なる画像とテキスト情報を書き込むことです。

//メインタブバー.vue
<テンプレート>
  <div class="mainTabBar">
    <タブバー>
      <タブバー項目パス="/home" activeColor="#ff8198">
        <img src="~assets/img/tabbar/home.svg" alt="" slot="item-icon">
        <img src="~assets/img/tabbar/home_active.svg" alt="" slot="item-icon-active">
        <div slot="item-text">ホーム</div>
      </タブバー項目>
      <タブバー項目パス="/カテゴリ" activeColor="#ff8198">
        <img src="~assets/img/tabbar/category.svg" alt="" slot="item-icon">
        <img src="~assets/img/tabbar/category_active.svg" alt="" slot="item-icon-active">
        <div slot="item-text">カテゴリー</div>
      </タブバー項目>
      <タブバーアイテムパス="/カート" activeColor="#ff8198">
        <img src="~assets/img/tabbar/shopcart.svg" alt="" slot="アイテムアイコン">
        <img src="~assets/img/tabbar/shopcart_active.svg" alt="" slot="item-icon-active">
        <div slot="item-text">ショッピングカート</div>
      </タブバー項目>
      <タブバー項目パス="/プロファイル" activeColor="#ff8198">
        <img src="~assets/img/tabbar/profile.svg" alt="" slot="item-icon">
        <img src="~assets/img/tabbar/profile_active.svg" alt="" slot="item-icon-active">
        <div slot="item-text">マイ</div>
      </タブバー項目>
    </タブバー>
  </div>
</テンプレート>

<スクリプト>
「components/common/tabbar/TabBar」からTabBarをインポートします。
「components/content/tabbar/TabBarItem」からTabBarItemをインポートします。
エクスポートデフォルト{
  名前:"メインタブバー",
  コンポーネント:{
    タブバー、
    タブバーアイテム
  }
}

</スクリプト>
<スタイル>

</スタイル>

ナビゲーションバーは一般的にホームページで使用されるため、このナビゲーションバーをApp.vueに配置します。

<テンプレート>
  <div id="アプリ">
    <メインタブバー></メインタブバー>
  </div>
</テンプレート>

<スクリプト>
「components/content/tabbar/MainTabBar」からMainTabBarをインポートします。
エクスポートデフォルト{
  名前: 'アプリ'、
  コンポーネント:{
    メインタブバー
  }
}

まとめ:ナビゲーション バーを書くのに 3 つのファイルを使用するようです。面倒に思えるかもしれませんが、コードの可読性が大幅に向上します。プロジェクトの他の場所でナビゲーション バーを使用する必要がある場合は、MainTabBar に似たファイルを作成し、必要な画像とテキストをその中に書き込むだけです。他のプロジェクトで使用する場合でも、ファイルを直接コピーして直接使用できます。CSS スタイルを記述する必要さえないため、開発効率が大幅に向上します。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • 5 分で vue-cli3 を使用してプロジェクトを作成する方法を説明します (初心者向けガイド)
  • Vueプロジェクトでlessを使用するためのヒント
  • Vue プロジェクトで TypeScript クラスを適用する方法
  • Vue.jsでタブ切り替えと色変更操作を実装する解説
  • Vuex全体のケースの詳細な説明
  • Vueのトグルボタンをクリックしてボタンを有効にし、無効にします。
  • Vueコンポーネント通信方法事例まとめ
  • Vue.js スロットにおけるスコープ付きスロットの使用法の詳細な説明
  • Vue コードの読みやすさに関するいくつかの提案

<<:  MySQL ルートパスワードエラー番号 1045 の解決方法

>>:  Dockerコンテナのホスト間マルチネットワークセグメント通信ソリューションの詳細説明

推薦する

JSを段階的に学ぶ方法についての簡単な説明

目次概要1. jsの位置づけを明確に理解する2. 明確な学習パス3. 自己規律と粘り強さ4. 練習し...

Vueは書籍ショッピングカートの機能を実現

この記事の例では、書籍ショッピングカート機能を実現するためのVueの具体的なコードを参考までに共有し...

スタックメニューを実装するためのjQueryプラグイン

jQueryプラグインの毎日の積み重ねメニュー、参考までに、具体的な内容は次のとおりです。スタックメ...

MySQL の frm ファイルからテーブル構造を復元する 3 つの方法 [推奨]

mysql が正常に実行されている場合、テーブル構造を表示することは難しくありません。しかし、場合...

Docker コンテナのデプロイの試み - マルチコンテナ通信 (node+mongoDB+nginx)

その理由はモッカー プラットフォームを導入したかったので、友人の勧めで既成のプロジェクト api-m...

CSSのclip-pathプロパティを使用して不規則なグラフィックを表示する

clip-path CSS プロパティはクリッピングを使用して要素の表示可能領域を作成します。領域内...

Docker Desktop で rocketmq をインストールするための非常に詳細なチュートリアル

Dockerデスクトップをインストールするダウンロード先: Docker Desktop for M...

Springboot プロジェクトに動的にパラメータを渡すための Docker の実装方法

背景最近、Docker 初心者の友人から、毎回プロジェクト構成ファイルにハードコーディングしてサービ...

CentOS7 systemdにカスタムシステムサービスを追加する方法

システムド: CentOS 7のサービスsystemctlスクリプトは、/usr/lib/syste...

Linux でプロセスを効果的に管理するための 8 つのコマンド

序文プロセス管理の役割:サーバーの健全性状態を判定する: プロセスの状態 (メモリ、CPU 占有率な...

Vueデータプロキシの詳細な説明

目次1. これからお話しするのは、フロントエンド担当者がvue-cliで完了できるソリューション、デ...

Linux CRM デプロイメント コードの詳細な説明

Linuxの基本設定 Linux環境でpython3をコンパイルしてインストールする 1. Linu...

MySQL を使用して Excel でデータ生成を完了する方法

Excel は、データ分析に最もよく使用されるツールです。この記事では、MySQL と Excel ...

Kubernetes コントローラーとラベルの簡単な分析

目次01 k8sの一般的なコントローラーRCコントローラーデプロイメント コントローラーステートフル...

グループフィールドを 1 行に書き込むための mysql group_concat メソッドの例

この記事では、MySQL group_concat を使用してグループ化されたフィールドを 1 つの...