vue ルーティング ビュー router-view のネストされたジャンプの実装

vue ルーティング ビュー router-view のネストされたジャンプの実装

目的:

実装された機能:ログイン ページを作成し、ホームページにジャンプします。ホームページには、メニュー バー、上部ナビゲーション バー、本文、および標準的な背景 Web ページ形式が含まれます。メニュー バーのさまざまなメニューをクリックすると、さまざまなコンポーネント (さまざまなページ) が表示されます。

router-viewネストされたリダイレクトを構成するには、2 つのメイン ページを準備する必要があります。1 つはapp.vueによってリダイレクトされるログイン ページ ( login.vue ) で、もう 1 つはログイン ページ ( index.vue login.vueです。さらに、メニュージャンプとページコンテンツのカスタマイズにはさらに 2 ページが必要です。

ここではテンプレートとしてelement-uiを使用しています

前提条件: element-uiを導入する

プロジェクトディレクトリでコマンドを実行します: npm i element-ui -s

main.jsを修正し、 elementコンポーネントを導入する

ステップ:

  • ログインページを作成する (login.vue)
  • バックグラウンド操作ページを作成する (index.vue)
  • バックグラウンド操作ページメニュージャンプの設定
  • ネストされたルーティングを構成するルーティングコントロールメニューにジャンプ

1. app.vueページを修正する

アプリページにrouter-viewタグを配置するだけで、すべてのルートリクエストはデフォルトでここからジャンプします。

<テンプレート>
  <div id="アプリ">
    <ルータービュー></ルータービュー>
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  名前: 'アプリ'、
  メソッド: {
  }
}
</スクリプト>

<スタイル>
</スタイル>

2. ログインページを作成する (/views/login/login.vue)

ここのログインボタンはメインページに直接ジャンプし、現在のログインページは完全に置き換えられます。

ログインページコード:point_down:

<テンプレート>
  <div id="ログイン">
    <el-form>
      <el-row :gutter="20">
        <el-col class="title" :offset="9" :span="6">
          <h1>ログインページ</h1>
        </el-col>
      </el-row>
      <el-row :gutter="20">
        <el-col class="col-label" :offset="7" :span="4">
          <span class="label">アカウント:</span>
        </el-col>
        <el-col :span="4">
          <el-input type="text" placeholder="アカウント番号を入力してください" v-model="account.username"></el-input>
        </el-col>
      </el-row>
      <el-row :gutter="20">
        <el-col class="col-label" :offset="7" :span="4">
          <span class="label">パスワード:</span>
        </el-col>
        <el-col :span="4">
          <el-input type="password" placeholder="パスワードを入力してください" v-model="account.password"></el-input>
        </el-col>
      </el-row>
      <el-row :gutter="20">
        <el-col :offset="8" :span="8">
          <span>
            <a href="#" rel="external nofollow" rel="external nofollow" @click="register" >アカウントを登録</a>
            /
            <a href="#" rel="external nofollow" rel="external nofollow" @click="resetPwd" >パスワードをリセット</a>
          </span>
        </el-col>
      </el-row>
      <el-row :gutter="20">
        <el-col :offset="10" :span="4">
          <el-button type="primary" round @click="onSubmit">ログイン</el-button>
        </el-col>
      </el-row>
    </el-form>
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  名前: 'ログイン',
  データ() {
    戻る {
      アカウント:
        ユーザー名: ''、
        パスワード: ''
      }
    }
  },
  メソッド: {
    登録する() {
      this.$メッセージ({
        メッセージ: 「そのような機能は存在しないようです」
        タイプ: '情報'
      })
    },
    リセットPwd() {
      this.$メッセージ({
        メッセージ: 「来世」
        タイプ: '成功'
      })
    },
    送信() {
      this.$router.push('/index')
    }
  }
}
</スクリプト>

<スタイルスコープ>
  #ログイン {
    テキスト配置: 中央;
    マージン: 0 自動;
  }
  .ラベル {
    高さ: 40px;
    行の高さ: 40px;
  }
  .col-label {
    テキスト配置: 右;
  }
  .el-行 {
    上マージン: 15px;
  }
  .el-ボタン{
    幅: 120ピクセル;
  }
  。タイトル {
    上マージン: 10%;
  }
</スタイル>

コードを表示

2.1. router/index.jsにログインページのルーティングを追加する

{
      パス: '/'、
      名前: 'ログイン',
      コンポーネント: () => import('../views/login/login.vue')
},

3. メインページを作成する (/components/index.vue)

メインページは、主に左側菜單欄(el-menu),頂部導航欄(el-container )、主體展示頁面(el-main )の3つの部分に分かれています。この部分は、elment-ui(https://element.eleme.cn/#/zh-CN/component/container)のレイアウトコンテナインスタンスからコピーされています。

<テンプレート>
  <el-container style="border: 1px solid #eee">
    <el-aside width="200px" style="background-color: rgb(238, 241, 246)">
      <el-menu :default-openeds="['1']" :router="true">
        <el-サブメニューインデックス="1">
          <template slot="title"><i class="el-icon-message"></i>ナビゲーション 1</template>
          <el-メニュー項目グループ>
            <template slot="title">グループ 1</template>
            <el-menu-item index="1-1">オプション 1</el-menu-item>
            <el-menu-item index="1-2">オプション 2</el-menu-item>
          </el-menu-item-group>
        </el-サブメニュー>
      </el-menu>
    </el-aside>

    <el-container class="table-div">
      <el-header style="text-align: right; font-size: 12px">
        <el-ドロップダウン>
          <i class="el-icon-setting" style="margin-right: 15px"></i>
          <el-dropdown-menu slot="ドロップダウン">
            <el-dropdown-item>表示</el-dropdown-item>
            <el-dropdown-item>新規</el-dropdown-item>
            <el-dropdown-item>削除</el-dropdown-item>
          </el-dropdown-menu>
        </el-dropdown>
        <span>王暁湖</span>
      </el-header>

      <メイン>
        <テーブル></テーブル>
      </el-main>
    </el-コンテナ>
  </el-コンテナ>
</テンプレート>

<スタイル>
.el-ヘッダー{
  背景色: #B3C0D1;
  色: #333;
  行の高さ: 60px;
}

.el-aside {
  色: #333;
}
</スタイル>

<スクリプト>
エクスポートデフォルト{
  名前: 'インデックス',
  データ() {
  }
}
</スクリプト>

<スタイル>
  .table-div {
    幅: 100%;
  }
  .el-テーブル{
    高さ: 100%;
  }
</スタイル>

3.1. メインページルートを作成する

{
      パス: '/index',
      名前: 'インデックス',
      コンポーネント: () => import('@/components/index')
}

この時点で、ログインページからメインページへジャンプする動作設定は完了です。効果を確認してください。プロジェクトを開始し、http://localhost:8080/#/ にアクセスします。

クリックしてログインし、ホームページに移動します

4. ホームページを変更する

主に2つの部分を変更します:メニュージャンプパス、メイン構成ルーティングビュー

4.1. メニュールーティングモードを有効にし、メニュージャンプパスを変更する

el-menuメニューでvue-routerモードを有効にし、 el-menu-itemタグのindexリダイレクトするページ アドレスを設定します。

4.2. ルータビューを追加する

メインコンテンツをrouter-viewタグに直接置き換え、 name属性にパラメータを追加します。ここではtableタグを使用します。これは非常に重要です。ルートは、このname属性に基づいて、ジャンプ先のルート ビューを指定する必要があります。

5. 2つのサブページを作成する

ルーティングアドレスが正しく設定されている限り、ページはどこにでも配置できます。

first-page.vuefirst-table.vue (カスタマイズされたページコンテンツ) を作成しました

router/index.jsでルートを設定します。router router-viewコンポーネントが追加されたページの対応するルート設定にchildrenを追加します。ここで、 indexルートの設定を変更し、 childrenを追加し、 pathnamecomponents (デフォルトのルート ビュー ジャンプのみが設定されている場合は、使用されるパラメーターはcomponentであり、複数のルート ビュー ジャンプを設定する場合はcomponentsが使用されることに注意してください。)

{
      パス: '/index',
      名前: 'インデックス',
      component: () => import('@/components/index'), // ここでホームページのデフォルトルートジャンプのページコンポーネントを設定します children: [ // 子ルートを追加します {
          path: 'page', // 注意: パスの前に / を付けないでください。そうしないとジャンプしません。ここで損失を被りました。name: 'page',
          components: { // パラメータ名にはsが付いていることに注意してください
            table: () => import('@/components/first-page') // ここでのテーブルは、ホームページの router-view タグの名前と同じである必要があります。これにより、ホームページのルーティング ビューがジャンプします。3.2 を参照してください。
          }
        },
        {
          パス: 'テーブル',
          名前: 'テーブル',
          コンポーネント:
            テーブル: () => import('@/components/first-table')
          }
        }
      ]
}


この方法で設定されたアクセスアドレスは、localhost:8080/#/index/page、localhost:8080/#/index/tableです。

設定はこれで完了です。ページにアクセスしてテストしてください。

ご覧のとおり、2 つのメニュー構成により、メインのルーティング ビューが変更され、ビューに表示されるページ コンポーネントが制御されます。設定完了

これで、vue ルーティング ビュー router-view のネストされたジャンプの詳細に関するこの記事は終了です。vue ルーティング ビュー router-view のネストされたジャンプの関連コンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue-router ネストルーティングの詳細な説明
  • vue.js ルーターのネストされたルート
  • Vueルーティングルーターの詳細な説明
  • Vue のルータールーティングの 2 つのモード (ハッシュと履歴) の詳細な説明
  • VueRouterルーティングの詳細な説明
  • Vueルータールーティングの詳細な説明

<<:  MySQL データベースの高度なクエリとマルチテーブルクエリ

>>:  Docker を使用して Redis マスター スレーブ レプリケーション クラスターを構築する

推薦する

Dockerボリュームのファイルマッピング方法

背景ブロックチェーン ログ モジュールで作業しているときに、コンテナーが実行されている場合は、ログ ...

MySQLはJSON内部フィールドを抽出し、数値としてダンプします

目次背景問題分析1. 属性値はJson形式であり、Json操作関数を使用して処理する必要があります。...

MySQL の binlog_format モードと設定の詳細な分析

MySQL レプリケーションには、SQL ステートメント ベースのレプリケーション (SBR)、行ベ...

読み取り専用と無効の違い

要約すると: Readonly は入力 (テキスト/パスワード) とテキスト領域に対してのみ有効です...

Nginx サービスを使用してサブドメイン環境を構築し、2D マップの読み込みパフォーマンスを向上させる方法を説明します。

1. 背景最近、友人が大規模なマップの読み込みが遅いという問題に遭遇しました。iServer のパ...

Vueはシンプルなマーキー効果を実装します

この記事では、Vueの具体的なコードを共有して、シンプルなマーキー効果を実現しています。具体的な内容...

MySQL 5.7 共通データ型

——「MySQL in Simple Terms (第 2 版)」からのメモ数値型整数型バイト最小最...

ウェブデザインのためのオンライン開発ツール10選の紹介

1. オンラインテキストジェネレーターBlindTextGenerator: デザイナーにとって、こ...

OpenShift のクイックインストールの詳細な手順

OpenShift 3.9 の最新バージョンを体験する最も早い方法。準備 [root@host ~]...

Nginx フォワードプロキシとリバースプロキシの違いと原理分析

1. フォワードプロキシとリバースプロキシの違いフォワード プロキシはクライアントのプロキシとして機...

antd pro に基づく SMS 認証コード ログイン機能 (プロセス分析)

目次まとめ全体的なプロセスフロントエンドページコード検証コードとログイン サービスをリクエストする ...

MySQL における一般的な高度な SQL ステートメント

MySQL 高度な SQL ステートメント kgc を使用します。 テーブルlocation(Reg...

CSSは座席選択効果を実現するためにautoflow属性を使用する

1. 自動フロー属性、要素コンテンツの長さと幅が要素自体の長さと幅を超える場合、スクロールバーが表示...

JavaScript の instanceof メソッドの手動実装

1. instanceofの使用法instanceof演算子は、コンストラクター関数のprototy...

Vue で $props、$attrs、$listeners を使用する方法の詳細な説明

目次背景1. 文書の説明2. 特定の用途結論背景ここで、状況について説明しましょう。親コンポーネント...