IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue电商后台管理系统项目开发实战(二) -> 正文阅读

[JavaScript知识库]Vue电商后台管理系统项目开发实战(二)

前言

经历了项目初始化,本篇主要介绍 项目初始化之后路由的配置,以及前几个组件的配置,可以把一个组件理解为一个页面,每个页面就是一个组件。

Login组件

?首先,我们需要在router.js中引入我们创建好的Login.vue组件,

?通过实例化router对象,以及router的hash模式完成配置

?当用户访问'/login'时,向用户展示 我们写好的Login组件,并且添加路由的重定向,来设置,如果用户访问了'/'时,我们也让用户跳转到'/login' 中

接下来进入到Login组件的配置

<template>
  <div class="login_container">
    <div class="login_box">
      <!-- 头像区 -->
      <div class="avatar_box">
        <img src="../assets/logo.png">
      </div>
      <!-- 登录表单区 -->
      <el-form ref='loginFormRef' :model="loginForm" :rules="loginRules" label-width="0px" class="login_form">
        <!-- 用户名 -->
        <el-form-item prop="username">
          <el-input v-model="loginForm.username" prefix-icon="iconfont icon-user" type="text"></el-input>
        </el-form-item>
        <!-- 密码 -->
        <el-form-item prop="password">
          <el-input v-model="loginForm.password" prefix-icon="iconfont icon-3702mima" type="password"></el-input>
        </el-form-item>
        <!-- 按钮 -->
        <el-form-item class="btns">
          <el-button type="primary" @click="login('loginFormRef')">登录</el-button>
          <el-button type="info" @click.enter="resetForm('loginFormRef')">重置</el-button>
        </el-form-item>
      </el-form>
    </div>
  </div>
</template>

?Login作为我们所配置的子组件,需要在内容首位放入一对template标签,此外,在template中,我们需要唯一的一个根节点进行包裹。

表单登录区域 我们在el-form设置了v-model=‘loginForm’ 用来绑定 整个表单用到的数据,在input中可以通过,v-model=‘loginForm.name'的方式 来进行数据的双向绑定

?el-form 中 :rules='loginRules' 用来绑定表单的验证规则

?在el-form-item中我们只需要通过prop属性绑定验证规则即可

?验证效果如图。

再往下是登录和重置按钮,通过@click来绑定点击事件

重置的点击事件

?这里的this指向的是我们vue的实例对象,$refs是 element-ui 帮我们挂在到实例对象上的。

翻看element-ui提供的文档

?由此可以得知,resetField可以帮我们移除表单里的数据,以及验证结果

登录按钮

?眼下我们需要讲用户所填写的用户名密码,提交到服务器进行验证,但是在这之前,我们需要先让用户通过表单的验证,减少没必要的请求,减小服务器端的压力。

validete就是用来帮助我们进行表单的预校验的,它返回一个boolean 如果校验成功返回true,如果失败返回false 因此我们这里需要 调用if (!valid) 如果valid 为false 就让函数return出去。

校验成功我们就可以向服务器发起请求了

查看接口文档

?发起请求成功以后发现服务器返回了一个promise对象

?因此我们需要es7 为我们提供的async/await 方法 来简化 我们的异步请求操作

此外利用解构赋值 接收服务器返回的参数

我们log看一下

?返回了一个对象,以及服务器返回的数据

通过res.meta.status判断请求是否成功,如果失败,就通过this.$message提示用户,登录失败。

请求成功通过window.sessionStorage.setItem('token', res.data.token)保存 服务器返回 回来的token值,并且通过$router.push让页面跳转到我们所需要的页面即组件上。

为什么需要保存token呢 因为它是一种身份认证的机制,接下来将用于我们的路由守卫,以及后续相关请求中。

?我们F12看看我们的sessionstorage

token以及被保存下来了

登录成功以后自动跳转到后台管理页面

?

?全局路由守卫

?在我们的router文件中,我们需要添加一个路由守卫,保护我们的用户信息。

根据以上代码,我们逐行分析

如果用户访问的是'/login' 此页面 我们不需要用户提供token 因为token是在页面登录成功以后,服务器才会发放的。

接下来通过window.sessionStorage.getItem('token') 获取刚刚我们用window.sessionStorage.setItem所保存下来的键名为token的值,并且用tokenStr接受

如果tokenStr为空,强制返回'/login'组件,如果存在,放行。

最后我们需要通过export 将router 暴露出去供其他组件使用。

?补充

我们每次发起请求,访问的url都应该带根目录,但是每次都填根目录,显得很繁琐,因此我们用上了一个axios为我们提供的方法,设置我们的根目录

?在接下来的组件中,我们发起请求是,都应该添加我们的请求头,我们在此也配置一下。

?通过axios提供的请求拦截器,在我们每次发起请求时,过滤一下我们的数据,为我们的请求添加请求头,请求头则是刚刚获取到服务器颁发给我们的token? 此外 拦截器 我们必须要用return 返回值

?总结

考虑到家人们可能需要复制代码段,但是我又喜欢截图。我把gitee链接发布给大佬们浏览

weiyuyang/vue-shop

?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-14 21:32:45  更:2021-11-14 21:32:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:04:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码