Vueはログインジャンプを実装する

Vueはログインジャンプを実装する

この記事では、ログインジャンプを実装するためのVueの具体的なコードを例として紹介します。具体的な内容は次のとおりです。

くだらない話はやめて、まずはレンダリングを見てみましょう〜

具体的な実施方法については、以下の手順を参照してください。

1. login.vue を作成し、ログイン画面を描画し、ジャンプ イベントを追加します。

<テンプレート>
    <div class="ログインコンテナ">
        <el-form :model="ruleForm2" :rules="rules2"
         ステータスアイコン
         ref="ルールフォーム2" 
         ラベル位置="左" 
         ラベル幅="0px" 
         class="デモルールフォームログインページ">
            <h3 class="title">ログイン プラットフォーム</h3>
            <el-form-item prop="ユーザー名">
                <el-input type="text" 
                    v-model="ruleForm2.ユーザー名" 
                    オートコンプリート="オフ" 
                    placeholder="ユーザー名"></el-input>
            </el-form-item>
            <el-form-item prop="パスワード">
                <el-input type="パスワード" 
                    v-model="ruleForm2.password" 
                    オートコンプリート="オフ" 
                    placeholder="パスワード"></el-input>
            </el-form-item>
            <el-form-item スタイル="width:100%;">
                <el-button type="primary" style="width:100%;" @click="handleSubmit" :loading="logining">ログイン</el-button>
            </el-form-item>
            <el-form-item>
                <el-チェックボックス 
                    v-model="チェック済み"
                    class="rememberme">パスワードを記憶する</el-checkbox>
                <el-button type="text" @click="forgetpassword">パスワードを忘れた場合</el-button>
            </el-form-item>
            
        </el-form>
    </div>

</テンプレート>

<スクリプト>
  '../api/api' から { requestLogin } をインポートします。
  エクスポートデフォルト{
    データ() {
      戻る {
        ログイン: false、
        ルールフォーム2: {
        },
        ルール2: {
          アカウント: [
            { 必須: true、メッセージ: 'アカウント番号を入力してください'、トリガー: 'blur' },
          ]、
          チェックパス: [
            { 必須: true、メッセージ: 'パスワードを入力してください'、トリガー: 'blur' },
          ]
        },
        チェック済み: true
      };
    },
    メソッド: {
      ハンドルリセット2() {
        this.$refs.ruleForm2.resetFields();
      },
      ハンドル送信(ev) {
        this.$refs.ruleForm2.validate((有効) => {
          (有効)の場合{
            this.logining = true;
            var loginParams = { ユーザー名: this.ruleForm2.username、パスワード: this.ruleForm2.password、識別コード: this.ruleForm2.identifycode };
            リクエストログイン(ログインパラメータ)。その後(データ => {
              this.logining = false;
              {msg、コード、ユーザー} = データとします。
              (コード!== 200)の場合{
                this.$メッセージ({
                  メッセージ: メッセージ、
                  タイプ: 'エラー'
                });
              } それ以外 {
                (user.type === "admin")の場合{
                    sessionStorage.setItem('user', JSON.stringify(user));
                    this.$router.push({ パス: '/homepage' });
                } それ以外の場合 (user.type === "advert") {
                    sessionStorage.setItem('user', JSON.stringify(user));
                    this.$router.push({ パス: '/table' });
                }
              }
            });
          } それ以外 {
            console.log('送信エラー!!');
            false を返します。
          }
        });
      },
      パスワードを忘れた(){
          this.$alert('パスワードを取得するには管理者に連絡してください。管理者の電話番号: 131xxxxxxxx', 'プロンプト', {
          confirmButtonText: '確認'、
          タイプ: '警告'
        })
      }
    }
  }
</スクリプト>

<スタイルスコープ>
    label.el-checkbox.rememberme {
        マージン: 0px 0px 15px;
        テキスト配置: 左;
    }
    label.el-button.forget {
        マージン: 0;
        パディング: 0;
        境界線: 1px 透明の実線;
        アウトライン: なし;
    }
</スタイル>

2. Home.vueメニューバーページを作成する

<テンプレート>
    <el-row クラス="コンテナ">
        <el-col :span="24" class="header">
   <el-col :span="18" class="logo" >
                {{sysName}}
   </el-col>
   <el-col :span="4" class="ユーザー情報">
    <el-dropdown トリガー="hover">
     <span class="el-dropdown-link userinfo-inner"><img :src="this.sysUserAvatar" /> {{sysUserName}}</span>
     <el-dropdown-menu slot="ドロップダウン">
      <el-dropdown-item>私のメッセージ</el-dropdown-item>
      <el-dropdown-item>設定</el-dropdown-item>
      <el-dropdown-item @click.native="logout">ログアウト</el-dropdown-item>
     </el-dropdown-menu>
    </el-dropdown>
   </el-col>
  </el-col>
        <el-col :span="24" class="main">
            <余談>
                <el-menu :default-active="$route.path" class="el-menu el-menu-vertical-demo" @select="handleselect"
                        ユニークオープンルーター >
                        <テンプレート v-for="(item,index) in $router.options.routes" v-if="!item.hidden">
      <el-submenu :index="index+''" v-if="!item.leaf">
       <template slot="title"><i :class="item.iconCls"></i>{{item.name}}</template>
       <el-menu-item v-for="item.children 内の子" :index="child.path" :key="child.path" v-if="!child.hidden">{{child.name}}</el-menu-item>
      </el-サブメニュー>
      <el-menu-item v-if="item.leaf&&item.children.length>0" :index="item.children[0].path"><i :class="item.iconCls"></i>{{item.children[0].name}}</el-menu-item>
     </テンプレート>
                </el-menu>
            </余談>
   <セクションクラス="コンテンツコンテナ">
    <div class="grid-content bg-purple-light">
     <el-col :span="24" class="breadcrumb-container">
      {{$ルート名}}
     </el-col>
     <el-col :span="24" class="content-wrapper">
      <トランジション名="フェード" モード="アウトイン">
       <ルータービュー></ルータービュー>
      </トランジション>
     </el-col>
    </div>
   </セクション>
  </el-col>
    </el-row>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
    データ() {
   戻る {
    sysName:'xxx 管理プラットフォーム',
    システムユーザー名: ''、
    sysUserAvatar: ''、
    形状: {
     名前: ''、
     地域: ''、
     日付1: ''、
     日付2: ''、
     配達: 偽、
     タイプ: []、
     リソース: ''、
     説明: ''
    }
   }
        },
    メソッド: {
   //ログアウト: 関数 () {
    var _this = これ;
    this.$confirm('終了して確認しますか?', 'プロンプト', {
     //タイプ: '警告'
    }).then(() => {
     sessionStorage.removeItem('ユーザー');
     _this.$router.push('/login');
    }).catch(() => {

    });
   }
  },
    マウント() {
   var user = sessionStorage.getItem('user');
   if (ユーザー) {
    ユーザー = JSON.parse(ユーザー);
    this.sysUserName = user.name || '';
    this.sysUserAvatar = user.avatar || '';
   }

  }
}
</スクリプト>

<スタイル スコープ lang="scss">
@import '../style/vars.scss';

    。容器 {
  位置: 絶対;
  上: 0px;
  下: 0px;
  幅: 100%;
    }
    .ヘッダー{
   高さ: 60px;
            行の高さ: 60px;
   背景: $color-primary;
   色:#fff;
   .ユーザー情報{
    テキスト配置: 右;
    右パディング: 35px;
    フロート: 右;
    .userinfo-inner {
     カーソル: ポインタ;
     色:#fff;
     画像 {
      幅: 40px;
      高さ: 40px;
      境界線の半径: 20px;
      マージン: 10px 0px 10px 10px;
      フロート: 右;
     }
    }
   }
   .ロゴ {
    高さ:60px;
    フォントサイズ: 22px;
    パディング左:20px;
    画像 {
     幅: 40px;
     フロート: 左;
     マージン: 10px 10px 10px 0px;
    }
    。TXT {
                    色:#fff;
    }
   }
   .ロゴ幅{
    幅:230ピクセル;
   }
   .logo-collapse-width{
    幅:60ピクセル
   }
   。タイトル{
                フォントサイズ: 22px;
    パディング左:20px;
    行の高さ: 60px;
    色:#fff;
   }
        }
    。主要 {
   ディスプレイ: フレックス;
   位置: 絶対;
   上: 60px;
   下: 0px;
   オーバーフロー: 非表示;
   脇に
    フレックス:0 0 230px;
    幅: 230ピクセル;
    .el-メニュー{
                    高さ: 100%;
                    /* 幅: 34%; */
    }
   }
   .コンテンツコンテナ{
    フレックス:1;
    /* オーバーフロー-y: スクロール; */
    パディング: 20px;
    .ブレッドクラムコンテナ{
     。タイトル {
      幅: 200ピクセル;
      フロート: 左;
      色: #475669;
     }
     .breadcrumb-inner {
      フロート: 右;
     }
    }
    .コンテンツラッパー{
     背景色: #fff;
     ボックスのサイズ: 境界線ボックス;
    }
   }
  }
</スタイル>

3. サブページを作成する

<テンプレート>
   <p>ホームページ</p>
</テンプレート>

4. ルーティング構成

'./views/Login.vue' からログインをインポートします。
'./views/Home.vue' から Home をインポートします。
'./views/list/homepage.vue' からホームページをインポートします。 
'./views/list/Table.vue' からテーブルをインポートします。

ルートを = [
    {
        パス: '/login',
        コンポーネント: ログイン、
        名前: ''、
        非表示: true
    },
    {
        パス: '/'、
        コンポーネント: ホーム、
        名前: ''、
        leaf: true, // ノードは 1 つだけ iconCls: 'el-icon-menu', // アイコン スタイル クラス
        子供たち: [
            { パス: '/homepage'、コンポーネント: ホームページ、名前: 'ホームページ' },
        ]
    },
    {
        パス: '/'、
        コンポーネント: ホーム、
        名前: 'メニュー',
        // leaf: true, // ノードは 1 つだけ iconCls: 'el-icon-message', // アイコン スタイル クラス
        子供たち: [
            { パス: '/table'、コンポーネント: テーブル、名前: 'サブメニュー 01' }
        ]
    }
];

デフォルトルートをエクスポートします。

5.main.jsの実装

// `import` コマンドで読み込む Vue ビルド バージョン
// (ランタイムのみまたはスタンドアロン) が webpack.base.conf にエイリアスとともに設定されています。
'vue' から Vue をインポートします
'./App' から App をインポートします
'vue-router' から VueRouter をインポートします。
'./routes' からルートをインポートします
'vuex' から Vuex をインポートします
'./vuex/store' からストアをインポートします。
'element-ui' から ElementUI をインポートします。
'element-ui/lib/theme-chalk/index.css' をインポートします。
'./mock' から Mock をインポートします。
モック
'./style/login.css' をインポートします

/* Vue.use(VueAxios、axios) */
Vue.use(要素UI)
Vue.use(VueRouter)
Vue.use(Vuex)
Vue.config.productionTip = false

const ルーター = 新しい VueRouter({
  ルート
})

router.beforeEach((to, from, next) => {
  //NProgress を開始します。
  to.path == '/login'の場合{
    sessionStorage.removeItem('ユーザー');
  }
  user = JSON.parse(sessionStorage.getItem('user')); とします。
  if (!user && to.path != '/login') {
    次へ({ パス: '/login' })
  } それ以外 {
    次()
  }
})

新しいVue({
  ルーター、
  店、
  レンダリング: h => h(App)
}).$mount('#app')

このようなログイン画面が実現されています。具体的なソースコードについては、Vue でログインジャンプを実現するを参照してください。

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

以下もご興味があるかもしれません:
  • Vue ジャンプページのいくつかの方法 (推奨)
  • Vue.js実戦vue-routerを使ってページにジャンプする
  • vue-routerがジャンプしたときに新しいページを開く2つの方法
  • Vueはログインしていないときにログインページにジャンプする方法を実装します
  • Vue でページ間を移動してパラメータを渡す方法
  • vue-routerでページにジャンプする方法
  • Vue はログイン後に前のページへのページジャンプを実装します
  • Vue ルーティングインターセプションとページジャンプの設定方法
  • Vue ページジャンプアニメーション効果を実装する方法
  • Vueページがジャンプした後に元のページの初期位置に戻す方法

<<:  インデックスは MySQL クエリ条件で使用されますか?

>>:  Windows 10 に Apache 2.4.41 をインストールするチュートリアル

推薦する

IOSデータベースアップグレードデータ移行の詳細な例

IOSデータベースアップグレードデータ移行の詳細な例まとめ:昔、データベースのバージョン アップグレ...

CentOS 7 に mysql5.7 の解凍バージョンをインストールするチュートリアル

1. mysqlの圧縮パッケージを/usr/localフォルダに解凍し、名前をmysqlに変更します...

MySQLデータベースを別のマシンに移行する方法の詳細な説明

1. まず、移行サーバー上のデータ ファイルを見つけます。MySQL 5.7 とデフォルトのインスト...

JavaScriptで継承を実装するいくつかの方法

目次構造継承(callで実装)プロトタイプチェーン継承(プロトタイプチェーンの助けを借りて実装)複合...

Linux環境変数の設定に関する完全なガイド

Linux環境変数の設定ソフトウェアのインストールをカスタマイズする場合、多くの場合、環境変数を設定...

ES6実装クラスのプライベート変数の書き方をいくつか詳しく説明します

プライベート変数のクロージャ実装プライベート変数は共有されないnew キーワードにより、 perso...

MongoDBのパフォーマンスを向上させる方法

MongoDB は高性能なデータベースですが、使用していくうちにパフォーマンスの問題が発生することが...

キャンバスはスクラッチカード効果を描画します

この記事では、キャンバスでスクラッチカード効果を描画するための具体的なコードを参考までに共有します。...

JavaScript で同時実行制御を実装する方法

目次1. 同時実行制御の概要1.1 フェーズ1 1.2 フェーズ2 1.3 フェーズ3 2. 同時実...

シンプルなログインページを実装するための HTML+jQuery

目次導入公開コード(バックエンドインターフェース)例 1: 最もシンプル (純粋な HTML)コード...

優れたユーザー インターフェース デザインのための 37 のヒント (画像付き)

1. 複数列レイアウトではなく、単一列レイアウトを使用する1 列のレイアウトにより、全体的な状況をよ...

HTML コードの書き方に関する提案のまとめ

リソースファイルのプロトコルを省略する画像、メディアファイル、スタイル、スクリプトの URL では、...

XHTMLタグは適切に使用する必要があります

<br />123WORDPRESS.COM の以前のチュートリアルでは、Web ページ...

純粋な CSS で「テキストオーバーフローの切り捨てと省略」を実装するいくつかの方法

私たちの日常的な開発作業では、テキストのオーバーフロー、切り捨て、省略は、考慮する必要がある非常に一...

CSS スタイルの導入方法とその長所と短所の紹介

CSSを導入する3つの方法1. インラインスタイル利点: 書きやすく、重みがある 欠点: 構造とスタ...