zoukankan      html  css  js  c++  java
  • Vue--登录页面

    登录页面开发

    先把项目根目录下components和views目录下的文件都删掉

    在  src outerindex.js 中配置路由(把原有的路由配置删除),如下:

    import Vue from "vue";
    import VueRouter from "vue-router";
    
    Vue.use(VueRouter);
    
    export default new Route({
    
    });

    在  srcviews 目录下新建  login 目录及此目录下新建文件  index.vue写入如下内容

    <template>
            <div>
                登录页面
            </div>
    </template>

    我们的组件写好了,那怎么渲染到页面呢,先在router下的index.js里配置路由

    import Vue from "vue";
    import Router from "vue-router";
    // import Login from '@/views/login/index'
    
    // 下面的情况,默认会导入@/views/login下的index.vue组件
    import Login from '@/views/login'
    
    Vue.use(Router);
    
    
    export default new Router({
          routes: [
            {
              path: '/login',
              name: 'login', // 路由名称
              component: Login // 组件对象
            }
            
          ]
    });

    这样我们的路由也就写好了,在去App.vue里写组件的渲染出口

    <template>
      <div id="app">
        <!-- 组件渲染出口 -->
        <router-view></router-view>
      </div>
    </template>

    然后启动服务,访问login路由

    上面的流程是先找public下的index.html文件,然后将main.js里的vue实例渲染到index.html里的id=‘app’的标签上。

    main.js导入了App.vue,所以将App.vue里的内容渲染到index.html里,当我们访问login路由的时候,会在router下的index.js里找login路由,找到之后,找到对应的组件,然后渲染到App.vue里,所以index.html里的id=‘app'的标签里渲染的内容就是views/login下的index.vue里的内容

    使用elementUI

    上面我们测试了一下路由,访问是没有问题的,现在来结合elementUI做个登录页面

    在src/views/login/index.vue里写如下代码

    <template>
      <div class="login-container">
        <el-form ref="form" :model="form" label-width="80px" class="login-form">
          <h2 class="login-title">管理系统</h2>
          <el-form-item label="用户名">
            <el-input v-model="form.username"></el-input>
          </el-form-item>
          <el-form-item label="密码">
            <el-input v-model="form.password"></el-input>
          </el-form-item>
    
          <el-form-item>
            <el-button type="primary" @click="onSubmit">登录</el-button>
          </el-form-item>
        </el-form>
      </div>
    </template>
      <script>
    export default {
      data() {
        return {
          form: {
            username: "",
            password: ""
          }
        };
      },
      methods: {
        onSubmit() {
          console.log("submit!");
        }
      }
    };
    </script>
    
    <style acoped>
    .login-form {
      width: 350px;
      margin: 160px auto; /* 上下间距160px,左右自动居中*/
      background-color: rgb(255, 255, 255, 0.8); /* 透明背景色 */
      padding: 30px;
      border-radius: 20px; /* 圆角 */
    }
    
    /* 背景 */
    .login-container {
      position: absolute;
      width: 100%;
      height: 100%;
      background: url("../../assets/login.png");
    }
    
    /* 标题 */
    .login-title {
      color: #303133;
      text-align: center;
    }
    </style> -->

    在App.vue里去掉上下边距和设置字体

    <template>
      <div id="app">
        <!-- 组件渲染出口 -->
        <router-view></router-view>
      </div>
    </template>
    
    <style >
      body{
        font-family: "微软雅黑";  /*  设置字体 */
        margin: 0px auto /* 去除上下的边距*/
      }
    </style>

    访问login

     添加表单验证

    上面我们只是实现了登录的form表单,但是没有验证数据输入的合法性,比如空,或者长度

    elementui提供给了我们校验的方法

    Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名即可

    校验规则:https://github.com/yiminghe/async-validator

    修改 src/views/login/index.vue里的代码

     1   <template>
     2     <div class="login-container">
     3       <el-form ref="form" :rules="rules" :model="form" label-width="80px" class="login-form">
     4         <h2 class="login-title">管理系统</h2>
     5         <el-form-item label="用户名" prop="username">
     6           <el-input v-model="form.username"></el-input>
     7         </el-form-item>
     8         <el-form-item label="密码" prop="password">
     9           <el-input v-model="form.password"></el-input>
    10         </el-form-item>
    11 
    12         <el-form-item>
    13           <el-button type="primary" @click="submitForm('form')">登录</el-button>
    14         </el-form-item>
    15       </el-form>
    16     </div>
    17   </template>
    18     <script>
    19   export default {
    20     data() {
    21       return {
    22         form: {
    23           username: "",
    24           password: ""
    25         },
    26         rules: {
    27           username: [
    28             {required: true, message: "用户名不能为空", trigger: 'blur'},
    29             {min: 3, max: 10, message: "用户名3-5位", trigger: 'blur'}
    30           ],
    31           password: [
    32             {required: true, message: "密码不能为空", trigger: 'blur'},
    33             {min: 3, max: 10, message: "密码3-5位", trigger: 'blur'}
    34           ]
    35       }
    36       };
    37     },
    38     methods: {
    39       submitForm(formName) {
    40           this.$refs[formName].validate(valid => {
    41             // console.log(valid) 验证通过为true,有一个不通过就是false
    42             if (valid) {
    43               // 通过的逻辑
    44             } else {
    45               console.log('验证失败');
    46               return false;
    47             }
    48           });
    49       }
    50     }
    51   };
    52   </script>
    53 
    54   <style acoped>
    55   .login-form {
    56     width: 350px;
    57     margin: 160px auto; /* 上下间距160px,左右自动居中*/
    58     background-color: rgb(255, 255, 255, 0.8); /* 透明背景色 */
    59     padding: 30px;
    60     border-radius: 20px; /* 圆角 */
    61   }
    62 
    63   /* 背景 */
    64   .login-container {
    65     position: absolute;
    66     width: 100%;
    67     height: 100%;
    68     background: url("../../assets/login.png");
    69   }
    70 
    71   /* 标题 */
    72   .login-title {
    73     color: #303133;
    74     text-align: center;
    75   }
    76   </style> -->

    在第三行加上 :rules="rules" 第五行和第八行加上 prop="username" 后面的属性值自定义,更改39行到47行,第十三行改为 @click="submitForm('form')",submitForm就是method的方法名。后面的form是第三行的ref属性。

    {required: true, message: "密码不能为空", trigger: 'blur'},表示当鼠标失去焦点后验证,必填,如果为空则提示message里的信息

    {min: 3, max: 10, message: "密码3-5位", trigger: 'blur'}表示当鼠标失去焦点后验证,最小为3位,最大为10位,如果不满足则提示message里的信息

  • 相关阅读:
    jQuery
    MySQL的引入,绿色包下载和应用
    jsp引用JSTL核心标签库
    Servlet的引入
    Servlet访问Javabean并传结果给jsp
    Spring MVC 中获取session的几种方法
    面试必问系列——hashmap的默认扩容阈值是大于12还是大于等于12
    面试必问系列——重写equals为什么一定要重写hashcode
    分析spring4和spring5日志中的不同
    mysql 查询参数尾部有空格时被忽略
  • 原文地址:https://www.cnblogs.com/zouzou-busy/p/11741407.html
Copyright © 2011-2022 走看看