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 で最初のアプリケーションをデプロイする方法

前回の記事では、Docker Desktop をインストールし、Kubernetes を有効にしまし...

Vueはショッピングカート決済機能をシミュレートします

この記事では、ショッピングカート決済機能を実現するためのVueの具体的なコードを例として紹介します。...

Dockeにredisをインストールする方法

1. redisイメージを検索する docker 検索 redis 2. Redisイメージをダウン...

CentOS7環境にMySQL5.5データベースをインストールする

目次1. 現在のシステムにMySQLがインストールされているかどうかを確認する2. インストールされ...

マークアップ言語 - CSS レイアウト

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

Node.js でメモリ効率の高いアプリケーションを作成する方法

目次序文問題: 大きなファイルのコピーNodeJS のストリームとバッファバッファストリーム解決策 ...

MySQLデータベース操作の基本コマンド

1. データベースを作成します。 データ data _name を作成します。 PHP でデータベー...

MySQL 5.7.18 winx64 のインストールと設定方法のグラフィックチュートリアル

圧縮パッケージのインストールは、mysql-5.7 以降、大幅に変更されました。この記事では、mys...

HTML テーブル マークアップ チュートリアル (37): 背景画像属性 BACKGROUND

テーブル ヘッダーの背景画像を設定します。任意の GIF または JPEG 画像ファイルを使用できま...

全文検索とキーワードスコアリング方式のMySQL実装例

1. はじめに今日、同僚から、MySQL を使用して ElasticSearch に似た全文検索機能...

MySQL 文字列連結と null 値の設定のためのインスタンス メソッド

#文字列連結 concat(s1,s2); テーブル内の last_name と first_nam...

MySQL データベースのインポートとエクスポートのデータ エラーの解決例の説明

データのエクスポートエラーを報告する 「secure_file_priv」のような変数を表示します。...

Nginx 構成 PC サイトとモバイル サイトの分離によるリダイレクトの実現

PCサイトとモバイルサイトの分離設定にはnginxを使います。私のPCサイトとモバイルサイトは、SE...

IE6 で幅と高さがおかしいバグ

図に示すように: しかし、IE6で表示すると、right:1px:になります。 IE6 には、幅と高...

MySQLでよく使われる演算子と関数の概要

まずデータ テーブルを作成しましょう。 使用テスト; テーブル「従業員」を作成します( emp_no...