vue简单的登录、注册功能

1,登录

这里使用的是vue3

登录功能很简单也比较简陋,如图:

在这里插入图片描述

在这里插入图片描述

下面登录的代码:

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <script src="./js/vue.js"></script>
    <style>
       .c {
        text-align: center;
      } 
      h1 {
        text-align: center;
      }
      form {
        text-align: center;
      }
    </style>
  </head>

  <body>
    <div id="app">
      //通过v-if进行判断是否登录,登录就显示此div
      <div v-if="flag" class="c">
        <h1>欢迎您:{{name}}</h1>

        //通过v-on简写@绑定点击事件,点击注销按钮时调用logout方法
        <button @click="logout">注销</button>
      </div>

      //未登录就显示此div
      <div v-else>
        <h1>欢迎您:请登录</h1>
        <form action="">
          //使用v-model绑定属性,当输入框的值改变时,vue对象里的值也发生改变
          账号:<input v-model="name" type="text" /> <br /><br />
          密码:<input v-model="password" type="text" /> <br /><br />
      
          //通过v-on简写@绑定点击事件,点击登录按钮时调用login方法
          <button @click="login">登录</button>
        </form>
      </div>
    </div>
    <script>
      const App = {
        data() {
          return {
            name: "",
            password: "",
            flag: false,
            isChecked: false
          };
        },
        methods: {
          login() {
            alert("name:" + this.name +";"+ "password:" + this.password);
            this.flag = true;
          },
          logout() {
            this.flag = false;
            this.name = ''; //将输入框的内容清空
            this.password = '';
          },
        },
      };
      Vue.createApp(App).mount("#app");
    </script>
  </body>
</html>


2,注册

注册页面加了些css,增加了一些判断,输入的账号需要大于等于3个字符,密码需要大于等于6个字符

在这里插入图片描述

在这里插入图片描述

代码如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>注册页面</title>
  <style>
    * {
      box-sizing: border-box;
      font-family: Arial, sans-serif;
    }
    body {
      margin: 0;
      padding: 0;
      background-color: #f1f1f1;
    }
    .container {
      max-width: 400px;
      margin: 50px auto;
      background-color: #fff;
      padding: 20px;
      box-shadow: 0 0 10px rgba(0,0,0,0.3);
    }
    h1 {
      text-align: center;
      margin-bottom: 30px;
    }
    form {
      display: flex;
      flex-direction: column;
    }
    label {
      margin-bottom: 10px;
      font-weight: bold;
    }
    input[type="text"],
    input[type="password"],
    input[type="email"] {
      /* color: orange; */
      background-color: burlywood;
      padding: 10px;
      border-radius: 5px;
      margin-bottom: 20px;
      font-size: 16px;
    }
    input[type="submit"] {
      background-color: #4CAF50;
      color: #fff;
      padding: 10px;
      border: none;
      border-radius: 5px;
      cursor: pointer;
      font-size: 16px;
    }
    input[type="submit"]:hover {
      background-color: #3e8e41;
    }
    .error {
      color: red;
      font-size: 14px;
      margin-top: 5px;
    }
  </style>
</head>
<body>
  <div id="app">
    <div class="container">
      <h1>创建你的账号</h1>
      <form @submit.prevent="submitForm">
        <label for="username">账号:<span class="error">{{ usernameError }}</span></label>
        <input type="text" id="username" v-model.trim="username" required>
        <label for="password">密码:<span class="error">{{ passwordError }}</span></label>
        <input type="password" id="password" v-model.trim="password" required>
        <label for="email">邮箱:</label>
        <input type="email" id="email" v-model.trim="email">
        <p>偏好设置</p>
        <label><input type="checkbox" v-model="isChecked"/>接收更新邮件</label>
        <input type="submit" value="创建账号">
      </form>
    </div>
  </div>
  <script src="js/vue.js"></script>
  <script>
    const app = {
      data() {
        return {
          username: '',
          password: '',
          email: '',
          usernameError: '',
          passwordError: '',
          isChecked: false
        }
      },
      methods: {
        submitForm() {
          this.usernameError = '';
          this.passwordError = '';
          if (this.username.length < 3) {
            this.usernameError = '账号需要大于或等于3个字符';
            // alert("账号需要大于或等于3个字符")
          }
          if (this.password.length < 6) {
            this.passwordError = '密码需要大于或等于6个字符';
            // alert("密码需要大于或等于6个字符")
          }
          if (!this.usernameError && !this.passwordError) {
            alert('创建成功! 账号:'+this.username+';'+'密码:'+this.password+';'+'邮箱:'+this.email+';'+'    是否接收更新邮件:'+this.isChecked);
          }
        }
      }
    };
    Vue.createApp(app).mount("#app")

  </script>
</body>
</html>
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现登录注册功能,你需要在Vue中使用组件来创建表单,使用Vue Router来处理路由和页面导航,以及使用Vuex来管理应用程序状态。 下面是一个简单的示例,演示如何使用Vue实现登录注册功能: 1. 创建注册组件和登录组件 在Vue中,可以使用组件来创建用户界面。为了实现登录注册功能,你需要创建两个组件:一个用于用户注册,另一个用于用户登录。 ``` <template> <div> <h1>注册</h1> <form> <input type="text" placeholder="用户名" v-model="username"> <input type="password" placeholder="密码" v-model="password"> <button type="submit" @click.prevent="register">注册</button> </form> </div> </template> <script> export default { data() { return { username: '', password: '' } }, methods: { register() { // 实现注册逻辑 } } } </script> ``` ``` <template> <div> <h1>登录</h1> <form> <input type="text" placeholder="用户名" v-model="username"> <input type="password" placeholder="密码" v-model="password"> <button type="submit" @click.prevent="login">登录</button> </form> </div> </template> <script> export default { data() { return { username: '', password: '' } }, methods: { login() { // 实现登录逻辑 } } } </script> ``` 2. 创建路由和导航 使用Vue Router来处理路由和页面导航。你需要定义两个路由:一个用于用户注册,另一个用于用户登录。 ``` import Vue from 'vue' import Router from 'vue-router' import Register from '@/components/Register' import Login from '@/components/Login' Vue.use(Router) export default new Router({ routes: [ { path: '/register', name: 'Register', component: Register }, { path: '/login', name: 'Login', component: Login } ] }) ``` 3. 创建Vuex store 使用Vuex来管理应用程序状态。你需要创建一个store,用于存储用户信息和登录状态。 ``` import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ state: { user: null, isLoggedIn: false }, mutations: { setUser(state, user) { state.user = user state.isLoggedIn = true }, clearUser(state) { state.user = null state.isLoggedIn = false } }, actions: { login({ commit }, user) { // 实现登录逻辑 commit('setUser', user) }, logout({ commit }) { // 实现登出逻辑 commit('clearUser') } } }) ``` 4. 在应用程序中使用组件、路由和Vuex store 最后,在应用程序中使用组件、路由和Vuex store来实现完整的登录注册功能。 ``` <template> <div> <h1>我的应用程序</h1> <nav> <router-link to="/register">注册</router-link> <router-link to="/login">登录</router-link> </nav> <router-view></router-view> </div> </template> <script> export default { name: 'App' } </script> ``` 完整的示例代码可以在GitHub上找到:https://github.com/vuejs/vue-router/tree/dev/examples/auth-flow

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值