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 で単一のデータベースまたはテーブルを復元する方法と、起こりうる落とし穴

推薦する

航空機戦争ゲームを実装するためのJavaScript

この記事では、キャンバスとjsを使用して簡単な飛行機戦争を実装する方法を参考までに紹介します。具体的...

MySQLのページング制限のパフォーマンス問題についての簡単な説明

MySQL ページング クエリは通常、制限を通じて実装されます。 limit は 1 つまたは 2 ...

Vue でのルータービューコンポーネントの使用に関する詳細な説明

Vue プロジェクトを開発する場合、さまざまなコンポーネント ページを表示するために切り替えることが...

MySQL シリーズ: MySQL リレーショナル データベースの基本概念

目次1. 基本概念2. データベース管理技術の開発3. リレーショナルデータベース(RDBMS)の概...

txt ブックの内容を Web ページに表示するコード

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1...

JavaScriptにおけるこれの深い理解

Jsでのこれの深い理解JavaScriptスコープはstatic scopeスコープですが、 Jsの...

ウェブサイトメンテナンスページのリスト構築のヒント

また、多くの場合、メンテナンスのために Web サイトを少なくとも数分間オフラインにする必要がありま...

CSS+SVGでBステーションの課金効果を実現するサンプルコード

困難SVG グラフィックの 2 つのマスクの作成まず、コード左側のピンク色のボックスの内容ですこれに...

Linux オペレーティング システムの概要と紹介

目次1. オペレーティングシステムとは何か2. Linuxの起源3. Linuxの基本機能4. Li...

MySQL 独立インデックスと共同インデックスの選択

複数列のインデックスについては、理解が不足していることがよくあります。よくある間違いは、多数の列に独...

親要素に対する CSS 子要素の配置の実装

解決親要素に position:relative を追加します。子要素に position:abso...

Web デザインにおける Less と More について語る (写真)

Less is More は多くのデザイナーのキャッチフレーズです。これは建築界の巨匠ルートヴィヒ...

docker インストール後に hello-world を実行する問題を解決する

yumを使用してcentos7.3にDocker V1.13.1をインストールしましたしかし、doc...

MySQLのメモリ使用量を表示する方法の詳細な説明

序文この記事では主にMySQLのメモリ使用量に関する関連コンテンツを紹介し、皆さんの参考と学習のため...

WeChatアプレットは写真の撮影とアルバムからの写真の選択を実現します

この記事では、WeChatアプレットで写真を撮ったり、アルバムから写真を選択したりするための具体的な...