VUEは登録とログインの効果を実現します

VUEは登録とログインの効果を実現します

この記事の例では、登録とログインの効果を実現するためのVUEの具体的なコードを紹介します。具体的な内容は次のとおりです。

1. エフェクト表示

2. 登録効果の実現

<テンプレート>
  <div class="ログインセクション">
    <el-フォーム 
      ラベル位置="上" ラベル幅="100px" クラス="demo-ruleForm"
      :rules="ルール"
      :model="ルールフォーム"
        ステータスアイコン
        ref="ルールフォーム"
    >
      <el-form-item label="ユーザー名" prop="名前">
        <el-input type="text" v-model="rulesForm.name"></el-input>
      </el-form-item>
      <el-form-item label="パスワード" prop="パスワード">
        <el-input type="password" v-model="rulesForm.password"></el-input>
      </el-form-item>
 
      <el-form-item>
        <el-button type="primary" @click="submitForm('ruleForm')" >送信</el-button>
        <el-button >リセット</el-button>
      </el-form-item>
 
    </el-form>
  </div>
</テンプレート>
<スクリプト>
'@/service/api' から {register} をインポートします。
エクスポートデフォルト{
  データ() {
    戻る {
      ルールフォーム:{
        名前:''、
        パスワード:''
      },
      ルール:
        名前:[
          {required:true,message:'名前を入力してください',trigger:"blur"},
          {最小:1、最大:5、メッセージ:"長さ 3-5"、トリガー:"ぼかし"}
        ]、
        パスワード:[
          {required:true,message:'パスワードを入力してください',trigger:"blur"},
          {最小:3、最大:5、メッセージ:"長さ 3-5"、トリガー:"ぼかし"}
        ]
      }
    };
  },
  メソッド: {
    送信フォーム(フォーム名){
      this.$refs[フォーム名].validate((valid)=>{
          if(有効){
              //チェックに合格したら、ユーザー名とパスワードをバックエンドに送信します。register({
                名前: this.rulesForm.name,
                パスワード: this.rulesForm.password,
              }).then((データ)=>{
                コンソール.log(データ)
                if(データコード === 0){
                  localStorage.setItem('token',data.data.token);
                    window.location.href='/';
                }
                if(データコード === 1){
                  this.$message.error(データ.メッセージ)
                }
              });
          }それ以外{
            console.log("送信エラー!!");
            false を返します。
          }
      });
    }
  }
}
</スクリプト>
 
<style lang="スタイラス">
.ログインセクション
  パディング 0px 20px
</スタイル>

3. ログインページの実装

<テンプレート>
  <div class="ログインセクション">
    <el-フォーム
      ラベル位置="上"
      ラベル幅="100px" クラス="demo-ruleForm"
      :rules="ルール"
      :model="ルールフォーム"
        ステータスアイコン
        ref="ルールフォーム"
    >
      <el-form-item label="ユーザー名" prop="名前">
        <el-input type="text" v-model="rulesForm.name"></el-input>
      </el-form-item>
      <el-form-item label="パスワード" prop="パスワード">
        <el-input type="password" v-model="rulesForm.password"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="submitForm('ruleForm')">送信</el-button>
        <el-button>リセット</el-button>
      </el-form-item>
    </el-form>
  </div>
</テンプレート>
<スクリプト>
'@/service/api' から {login} をインポートします。
 
エクスポートデフォルト{
  データ() {
    戻る {
      //データを格納するオブジェクトrulesForm:{
        名前:''、
        パスワード:''
      },
      ルール:
        名前:[
          {required:true,message:'名前を入力してください',trigger:"blur"},
          {最小:1、最大:5、メッセージ:"長さ 3-5"、トリガー:"ぼかし"}
        ]、
        パスワード:[
          {required:true,message:'パスワードを入力してください',trigger:"blur"},
          {最小:3、最大:5、メッセージ:"長さ 3-5"、トリガー:"ぼかし"}
        ]
      }
    };
  },
  メソッド: {
    送信フォーム(フォーム名){
      this.$refs[フォーム名].validate((valid)=>{
          if(有効){
              //チェックに合格したら、ユーザー名とパスワードをバックエンドに送信します login({
                名前: this.rulesForm.name,
                パスワード: this.rulesForm.password,
              }).then((データ)=>{
                コンソール.log(データ)
                if(データコード === 0){
                  localStorage.setItem('token',data.data.token);
                    window.location.href='/';
                }
                if(データコード === 1){
                  this.$message.error(データ.メッセージ)
                }
              });
          }それ以外{
            console.log("送信エラー!!");
            false を返します。
          }
      });
    }
  }
}
</スクリプト>
 
<style lang="スタイラス">
.ログインセクション
  パディング 0px 20px
</スタイル>

4. ルーティングジャンプの実装

'vue' から Vue をインポートします
'vue-router' から Router をインポートします。
Vue.use(ルーター)
'@/store' からストアをインポートします
'@/service/api.js' から {userInfo} をインポートします。
'@/views/user-login/index.vue' からログインをインポートします。
const router = 新しいルーター({
    モード:"履歴",
    ルート:[
        {
            パス:'/login',
            名前:"ログイン",
            タイトル:"ログインページ",
            コンポーネント:ログイン、
            メタ:{
                ログイン:true
            }
        }
    ]
});
//ルートガード router.beforeEach( async (to,from,next) => {
    /*
        一部のルートではログインが必要です。ログイン状態を判定するには 1. ログインしていません: ログインページにジャンプします 2. ログイン: 直接入力します 一部のルートではログインは必要ありません。直接入力します ps: ログインするかどうか --meta
    */
    const トークン = localStorage.getItem('トークン');
    const isLogin = !!トークン;
    //ルートに入るときは、それが正当かどうかを確認するためにバックエンドにトークンを送信する必要があります。const data = await userInfo();
    Store.commit('chageUserInfo',data.data)
 
   if(to.matched.some(item => item.meta.login)){//ログインが必要ですconsole.log("ログインが必要です");
 
        if(isLogin){//すでにログインしている場合は直接渡します。if(data.error === 400){//バックエンドはログインに失敗したことを通知します。next({name:'login'});
                localStorage.removeItem('トークン');
                戻る;
            }
            if(to.name === 'ログイン'){
                次へ({name:'home'});
            }それ以外{
                次();
            }
            戻る;
        }
        if(!isLogin && to.name === 'login'){//ログインしていませんが、ログインページに移動します next();
        }
        if(!isLogin && to.name !== 'login'){//ログインしていない、ログインページではない next({name:'login'});
        }
   }それ以外{
       次();
   }
})
デフォルトルーターをエクスポートします。

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

以下もご興味があるかもしれません:
  • Vue でのログインとログアウトの実装例
  • Vue2.0 axios フロントエンドおよびバックエンド ログイン インターセプター (例の説明)
  • ログインを実装するための vue+axios 初心者練習用サンプルコード
  • vue.jsとlaravelを使用したWeChat認証ログインの詳細な説明
  • ログインインターセプションとaxiosインターセプターの使用のVueフロントエンド実装
  • vue-cli3と要素に基づいたログインページの実装
  • Vue 学習ロード ログイン登録サンプルコード
  • vueは携帯電話経由でSMS認証コードを送信する登録機能を実装します
  • Vue.jsは、ユーザーコメント、ログイン、登録、情報変更機能を実装します。
  • Vueプロジェクトはログインと登録の効果を実現します

<<:  JavaScriptはシンプルな計算機能を実装します

>>:  MySQL で単一のデータベースまたはテーブルを復元する方法と、起こりうる落とし穴

推薦する

Chrome 4.0 は GreaseMonkey スクリプトをサポートします

GreaseMokey (中国語では Grease Monkey Script と呼んでいます) は...

CSS ボックスモデル内のパディングと略語の詳細な説明

上図のように、パディング値は時計回り(右上、右下)の複合属性であり、パディングの内側の余白がボックス...

Vueソースコード解析における仮想DOMの詳しい説明

なぜ仮想DOMが必要なのでしょうか?仮想 DOM はブラウザのパフォーマンス問題を解決するために設計...

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

この記事は、参考のためにMySQL 8.0.17のインストールと設定のグラフィックチュートリアルを記...

Docker を使用した MySQL のデプロイの詳細説明 (データ永続化)

この記事では、Docker を使用して MySQL をデプロイし、データを保持する方法について簡単に...

フロア効果を実現するためのJavaScript

この記事では、フロア効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します。...

CSS における zoom:1 属性の定義と機能

今日、CSS の zoom 属性は何のために使用されるのかと尋ねられました。この属性は、フローティン...

Nginx ドメイン名 SSL 証明書の構成 (Web サイトの http を https にアップグレード)

序文HTTP と HTTPS日常生活でよく使われる URL は、おおまかに次の 2 種類に分けられま...

Vue3 における親コンポーネントと子コンポーネント間の値の転送の詳細な説明

vue3 が誕生してからかなり時間が経ち、筆者も最近になって vue3 を学び始めました。 vue2...

Vue は水の波紋効果のクリックフィードバック指示を実装します

目次水波効果実装を見てみましょう水の波紋のデフォルトスタイルをカスタマイズする水の波紋の位置と直径を...

Navicat を使用してリモート Linux MySQL データベースに接続するときに発生する 10061 不明エラーの詳細な説明

Navicat を使用してリモート Linux MySQL データベースに接続すると、不明なエラー ...

Vue プロジェクトでブラウザ キャッシュ設定を無効にする例

プロジェクトをリリースするときに、キャッシュをクリーンアップする必要があるという問題に遭遇することが...

MYSQL メタデータ ロック (MDL ロック) MDL ロックの問題分析

1. はじめにMYSQL の MDL ロックは常に頭痛の種でした。ロックについて話すとき、通常は I...

Expressプロジェクトファイルディレクトリの説明と詳細な機能の説明

app.js: スタートアップファイル、またはエントリファイルpackage.json: プロジェク...

HTML フォームタグチュートリアル (3): 入力タグ

HTML フォーム タグのチュートリアル。このセクションでは、主に Web ページで INPUT タ...