Vue3 (III) ウェブサイトホームページレイアウト開発

Vue3 (III) ウェブサイトホームページレイアウト開発

1. はじめに

前回の記事で、Vue3 に Ant Design Vue が統合されました。Ant Design Vue を統合した後も、Element Ui と同様にコンポーネントが使用され、コピーして貼り付けられると述べました。

2. 実際の事例

まず、以下に示すように、 layoutと呼ばれるレイアウトを作成しましょう

Homeでは変更しないでください。なぜでしょうか? すべてのページにはヘッダーとフッターがあり、これらを書くのは面倒です。動的に変化する部分はHomeで管理できます。

1. App.vueを変更する

ルーティングの問題は今のところ無視して、 App.vueで修正します。サンプルコードは次のとおりです。

html:

<テンプレート>
  <a-レイアウト>
    <a-layout-headerクラス="header">
      <div class="logo" />
      <a-メニュー
          テーマ="ダーク"
          モード="水平"
          v-model:selectedKeys="選択されたキー1"
          :style="{ 行の高さ: '64px' }"
      >
        <a-menu-item key="1">ナビゲーション 1</a-menu-item>
        <a-menu-item key="2">ナビゲーション 2</a-menu-item>
        <a-menu-item key="3">ナビゲーション 3</a-menu-item>
      </a-メニュー>
    </a-レイアウト-ヘッダー>
    <a-レイアウト>
      <a-layout-sider width="200" style="background: #fff">
        <a-メニュー
            モード="インライン"
            v-model:selectedKeys="selectedKeys2"
            v-model:openKeys="openKeys"
            :style="{ 高さ: '100%', 右境界線: 0 }"
        >
          <a-サブメニューキー="sub1">
            <テンプレート #タイトル>
              <span>
                <ユーザーによるアウトライン />
                サブナビ1
              </span>
            </テンプレート>
            <a-menu-item key="1">オプション1</a-menu-item>
            <a-menu-item key="2">オプション2</a-menu-item>
            <a-menu-item key="3">オプション3</a-menu-item>
            <a-menu-item key="4">オプション4</a-menu-item>
          </a-サブメニュー>
          <a-サブメニューキー="sub2">
            <テンプレート #タイトル>
              <span>
                <ラップトップのアウトライン />
                サブナビ2
              </span>
            </テンプレート>
            <a-menu-item key="5">オプション5</a-menu-item>
            <a-menu-item key="6">オプション6</a-menu-item>
            <a-menu-item key="7">オプション7</a-menu-item>
            <a-menu-item key="8">オプション8</a-menu-item>
          </a-サブメニュー>
          <a-サブメニューキー="sub3">
            <テンプレート #タイトル>
              <span>
                <通知の概要 />
                サブナビ3
              </span>
            </テンプレート>
            <a-menu-item key="9">オプション9</a-menu-item>
            <a-menu-item key="10">オプション10</a-menu-item>
            <a-menu-item key="11">オプション11</a-menu-item>
            <a-menu-item key="12">オプション12</a-menu-item>
          </a-サブメニュー>
        </a-メニュー>
      </a-layout-sider>
      <a-layout スタイル="padding: 0 24px 24px">
        <a-breadcrumb style="margin: 16px 0">
          <a-breadcrumb-item>ホーム</a-breadcrumb-item>
          <a-breadcrumb-item>リスト</a-breadcrumb-item>
          <a-breadcrumb-item>アプリ</a-breadcrumb-item>
        </a-breadcrumb>
        <レイアウトコンテンツ
            :style="{ 背景: '#fff', パディング: '24px', マージン: 0, 最小高さ: '280px' }"
        >
          コンテンツ
        </a-レイアウトコンテンツ>
      </a-レイアウト>
    </a-レイアウト>
    <a-layout-footer スタイル="text-align: center">
      Ant Design ©2018 Ant UED 作成
    </a-レイアウト-フッター>
  </a-レイアウト>
</テンプレート>

<スタイル>
#コンポーネントレイアウトデモトップサイド2.ロゴ{
  フロート: 左;
  幅: 120ピクセル;
  高さ: 31px;
  マージン: 16px 24px 16px 0;
  背景: rgba(255, 255, 255, 0.3);
}

.ant-row-rtl #components-layout-demo-top-side-2 .logo {
  フロート: 右;
  マージン: 16px 0 16px 24px;
}

.サイトレイアウト背景 {
  背景: #fff;
}
</スタイル>

効果は以下のようになります。

2. レイアウトを調整する

一見すると、スタイルとレイアウトが乱雑です。レイアウトを調整し、コードを次のように変更しました。

html:

<テンプレート>
  <a-レイアウト>
    <a-layout-headerクラス="header">
      <div class="logo" />
      <a-メニュー
          テーマ="ダーク"
          モード="水平"
          v-model:selectedKeys="選択されたキー1"
          :style="{ 行の高さ: '64px' }"
      >
        <a-menu-item key="1">ナビゲーション 1</a-menu-item>
        <a-menu-item key="2">ナビゲーション 2</a-menu-item>
        <a-menu-item key="3">ナビゲーション 3</a-menu-item>
      </a-メニュー>
    </a-レイアウト-ヘッダー>
    <a-レイアウト>
      <a-layout-sider width="200" style="background: #fff">
        <a-メニュー
            モード="インライン"
            v-model:selectedKeys="selectedKeys2"
            v-model:openKeys="openKeys"
            :style="{ 高さ: '100%', 右境界線: 0 }"
        >
          <a-サブメニューキー="sub1">
            <テンプレート #タイトル>
                <span>
                  <ユーザーによるアウトライン />
                  サブナビ1
                </span>
            </テンプレート>
            <a-menu-item key="1">オプション1</a-menu-item>
            <a-menu-item key="2">オプション2</a-menu-item>
            <a-menu-item key="3">オプション3</a-menu-item>
            <a-menu-item key="4">オプション4</a-menu-item>
          </a-サブメニュー>
          <a-サブメニューキー="sub2">
            <テンプレート #タイトル>
                <span>
                  <ラップトップのアウトライン />
                  サブナビ2
                </span>
            </テンプレート>
            <a-menu-item key="5">オプション5</a-menu-item>
            <a-menu-item key="6">オプション6</a-menu-item>
            <a-menu-item key="7">オプション7</a-menu-item>
            <a-menu-item key="8">オプション8</a-menu-item>
          </a-サブメニュー>
          <a-サブメニューキー="sub3">
            <テンプレート #タイトル>
                <span>
                  <通知の概要 />
                  サブナビ3
                </span>
            </テンプレート>
            <a-menu-item key="9">オプション9</a-menu-item>
            <a-menu-item key="10">オプション10</a-menu-item>
            <a-menu-item key="11">オプション11</a-menu-item>
            <a-menu-item key="12">オプション12</a-menu-item>
          </a-サブメニュー>
        </a-メニュー>
      </a-layout-sider>
      <レイアウトコンテンツ
          :style="{ 背景: '#fff', パディング: '24px', マージン: 0, 最小高さ: '280px' }"
      >
        コンテンツ
      </a-レイアウトコンテンツ>
    </a-レイアウト>
    <a-layout-footer スタイル="text-align: center">
      ソフトウェアテスター©2021 Liuge 作成</a-layout-footer>
  </a-レイアウト>
</テンプレート>

<スタイル>
#コンポーネントレイアウトデモトップサイド2.ロゴ{
  フロート: 左;
  幅: 120ピクセル;
  高さ: 31px;
  マージン: 16px 24px 16px 0;
  背景: rgba(255, 255, 255, 0.3);
}

.ant-row-rtl #components-layout-demo-top-side-2 .logo {
  フロート: 右;
  マージン: 16px 0 16px 24px;
}

.サイトレイアウト背景 {
  背景: #fff;
}
</スタイル>

変更された効果は次のとおりです。

3. ジャンプを達成するためにルートを変更する

前述のように、ルートを確立し、動的部分へのジャンプ アクセスを実現するには、動的部分を変更するだけで済みます。ここでのヘッダーとフッター、およびセカンダリ メニューは変更されません。 content部分のみを変更する必要があります。

Home.vue を変更します。サンプルコードは次のとおりです。

js:

<テンプレート>
  <a-レイアウト>
    <a-layout-sider width="200" style="background: #fff">
      <a-メニュー
          モード="インライン"
          v-model:selectedKeys="selectedKeys2"
          v-model:openKeys="openKeys"
          :style="{ 高さ: '100%', 右境界線: 0 }"
      >
        <a-サブメニューキー="sub1">
          <テンプレート #タイトル>
                <span>
                  <ユーザーによるアウトライン />
                  サブナビ1
                </span>
          </テンプレート>
          <a-menu-item key="1">オプション1</a-menu-item>
          <a-menu-item key="2">オプション2</a-menu-item>
          <a-menu-item key="3">オプション3</a-menu-item>
          <a-menu-item key="4">オプション4</a-menu-item>
        </a-サブメニュー>
        <a-サブメニューキー="sub2">
          <テンプレート #タイトル>
                <span>
                  <ラップトップのアウトライン />
                  サブナビ2
                </span>
          </テンプレート>
          <a-menu-item key="5">オプション5</a-menu-item>
          <a-menu-item key="6">オプション6</a-menu-item>
          <a-menu-item key="7">オプション7</a-menu-item>
          <a-menu-item key="8">オプション8</a-menu-item>
        </a-サブメニュー>
        <a-サブメニューキー="sub3">
          <テンプレート #タイトル>
                <span>
                  <通知の概要 />
                  サブナビ3
                </span>
          </テンプレート>
          <a-menu-item key="9">オプション9</a-menu-item>
          <a-menu-item key="10">オプション10</a-menu-item>
          <a-menu-item key="11">オプション11</a-menu-item>
          <a-menu-item key="12">オプション12</a-menu-item>
        </a-サブメニュー>
      </a-メニュー>
    </a-layout-sider>
    <レイアウトコンテンツ
        :style="{ 背景: '#fff', パディング: '24px', マージン: 0, 最小高さ: '280px' }"
    >
      コンテンツ
    </a-レイアウトコンテンツ>
  </a-レイアウト>
</テンプレート>

<script lang="ts">
'vue' から defineComponent をインポートします。
import HelloWorld from '@/components/HelloWorld.vue'; // @ は /src へのエイリアスです

エクスポートデフォルトdefineComponent({
  名前: 'ホーム'、
  コンポーネント:
    こんにちは世界、
  },
});
</スクリプト>

App.vue を変更してルートジャンプを実装します。サンプルコードは次のとおりです。

html:

<テンプレート>
  <a-レイアウト>
    <a-layout-headerクラス="header">
      <div class="logo" />
      <a-メニュー
          テーマ="ダーク"
          モード="水平"
          v-model:selectedKeys="選択されたキー1"
          :style="{ 行の高さ: '64px' }"
      >
        <a-menu-item key="1">ナビゲーション 1</a-menu-item>
        <a-menu-item key="2">ナビゲーション 2</a-menu-item>
        <a-menu-item key="3">ナビゲーション 3</a-menu-item>
      </a-メニュー>
    </a-レイアウト-ヘッダー>
    <ルータービュー/>
    <a-layout-footer スタイル="text-align: center">
      ソフトウェアテスター©2021 Liuge 作成</a-layout-footer>
  </a-レイアウト>
</テンプレート>

<スタイル>
#コンポーネントレイアウトデモトップサイド2.ロゴ{
  フロート: 左;
  幅: 120ピクセル;
  高さ: 31px;
  マージン: 16px 24px 16px 0;
  背景: rgba(255, 255, 255, 0.3);
}

.ant-row-rtl #components-layout-demo-top-side-2 .logo {
  フロート: 右;
  マージン: 16px 0 16px 24px;
}

.サイトレイアウト背景 {
  背景: #fff;
}
</スタイル>

ホットデプロイメントコンパイル後のエラーは次のとおりです。

エラー レポートから、検証ルールがエラーを報告していることがわかります。簡単な方法は、未登録のコンポーネントHelloWorldを削除することです。2 番目の方法は、検証ファイルのルールを変更し、 eslintrc.jsに次のコンテンツを追加することです。

js:

  ルール:
    'コンソールなし': process.env.NODE_ENV === 'production' ? '警告' : 'オフ',
    'デバッガーなし': process.env.NODE_ENV === 'production' ? 'warn' : 'オフ',
    'vue/未使用コンポーネント':'オフ'
  }


この自動コンパイルでは、以下に示すように、依然としてエラーが発生します。

エラーが報告されても恐れることはありません。慌てないでください。次のようにサービスを再起動してください。

今回はページアドレスに直接アクセスしてみたところ、以下のような結果になりました。

次に、以下に示すように、「About」ページにアクセスします。

3. 最後に

ルータビューの使用法

インターフェースプレースホルダーと同等

router-linkの使用法

ページジャンプ

これで、Vue3 ウェブサイトのホームページレイアウトの開発に関するこの記事は終わりです。Vue3 Vue3サイトのホームページレイアウト開発に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vite2とVue3を使用したウェブサイトの国際化を実現するプロセス全体

<<:  MySQL のインデックスと制約の例文

>>:  ハイパーリンクに関するいくつかの質問

推薦する

サーバー上で Nginx を使用して Springboot プロジェクトをデプロイする方法の詳細なチュートリアル (jar パッケージ)

1. Javaプロジェクトをjarパッケージにパッケージ化するここではMavenツールを使用します...

MySQLでインデックスエラーが発生する状況について簡単に説明します

以下に、トレーニング機関からのヒントと私自身の要約をいくつか示します。以下のインデックスの内容を説明...

MySQL の NOT IN 充填ピットの NULL 列の問題の解決方法

以前、会社で小さな機能に取り組んでいたとき、特定の状況でデータがいくつあるかを数えてから問題を修正し...

CSS3で線形グラデーションを実装するためのコードの詳細な説明

序文デモでは古いバージョンのブラウザのグラデーションが実装されています[IE9-]。 IE9 より前...

Puppeteer を使用して Linux (CentOS) で Web ページのスクリーンショット機能を実装する

Linux に puppeteer をインストールするときに、次の問題が発生する可能性があります。こ...

Linux で特定のユーザーにフォルダーのすべてのコンテンツを許可するにはどうすればよいですか?

【問題分析】 chown コマンドを使用できます。ここで ch は change (変更) を表し...

MySQL インポート csv エラーの 4 つの解決策

これは今日私が踏んだ4つの落とし穴を記念したものです...落とし穴1:地元のせいエラー:エラー 39...

Vue で echarts を使用してコンポーネントを視覚化する方法

echarts コンポーネントの公式ウェブサイト アドレス: https://echarts.apa...

Dockerはポートマッピングを設定しますが、ソリューションにアクセスできません

#docker ps チェック、すべてのポートがマップされています コンテナID イメージ コマンド...

nginx + php の「入力ファイルが指定されていません」の解決策

本日、ローカル開発環境で突然「入力ファイルが指定されていません」というエラーが発生してしまいました。...

CSSの使用に関する深い理解 clear:both

clear:both清除浮動これは私が常に持っていた印象ですが、私はこれをめったに使用せず、私の理...

よく忘れられがちな CSS のヒント 26 選

これは、よく使われるけれども忘れられがちな CSS 実装方法のコレクションです。抜けや追加があれば、...

MySQL 8.0.15 winx64 圧縮パッケージのインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.15 winx64 圧縮パッケージのインストールと設定方法を参考ま...

mysql-joinsの具体的な使用方法

目次結合構文: 1. InnerJOIN: (内部結合) 2. LeftJOIN: (左結合) 3....