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 マスター スレーブ レプリケーション クラスターを構築する

推薦する

カスタムスクロールバー効果を実現するJavaScript

実際のプロジェクトでは、上下のスクロール バーと左右のスクロール バーは DIV 内にないため、右の...

非常に優れた CSS スキル 10 選のコレクションと共有

ここでは、CSS テクニックを巧みに使用することで、HTML を変更せずにブログやテンプレートの外観...

vue3 タイムスタンプ変換 (フィルターを使用せずに)

vue2 では、タイムスタンプを変換するときに、通常はフィルターを使用します。vue3 以降では、...

Docker Tomcat のアクセス インターフェイスが表示されないのはなぜですか?

質問:オリジン サーバーはターゲット リソースの表現を見つけることができないか、既存の表現を公開した...

Linux で Nginx 1.16.0 をインストールするための詳細なチュートリアル

最近 Linux をいじっていたので、nginx の新しいバージョンをインストールしたいと思いました...

HTML テーブルタグチュートリアル (3): 幅と高さの属性 WIDTH、HEIGHT

デフォルトでは、テーブルの幅と高さはコンテンツに応じて自動的に調整されます。テーブルの幅と高さを手動...

vue-video-player でのブレークポイント再開の実装

最近のプロジェクトでは、ブレークポイントからビデオの再生を再開する機能を実装する必要がありました。こ...

SSH ポート転送、ローカル ポート転送、リモート ポート転送、動的ポート転送の詳細

パート 1 SSH ポート転送の概要カフェで無料Wi-Fiを利用しているとき、誰かがあなたのパスワー...

Docker rocketmq デプロイメントの実装例

目次準備展開プロセスRocketMQ の初体験関連する質問ヘルプドキュメント私は最近 RocketM...

docker で Apollo をデプロイする詳細なチュートリアル

1. はじめにここでは apollo について詳しく説明しません。公式サイト https://git...

実用的なクイックスタートReactルーティング開発

インストールインストールするには、次のコマンドを入力します。 // ネプ npm で react-r...

Windows 10 Home Edition に Docker for Windows をインストールする

0. 背景ハードウェア: Xiaomi Notebook Air 13/Inter Core i7-...

React ルーティング リンク構成の詳細

1. 属性へのリンク(1)ルーティングパスを配置する(2)指定された形式でオブジェクトを配置する{パ...

JS を使用してバイナリ ツリー トラバーサル アルゴリズムのサンプル コードを実装する

目次序文1. バイナリツリー1.1. 二分木の走査1.2. jsを使用してバイナリツリーを表現する1...

Mac OS10.12 に mysql5.7.18 をインストールするチュートリアル

ウェブ全体を検索して、さまざまな落とし穴を見つけましたが、問題は解決しませんでした。ついに自分でも分...