当前位置: 首页 > news >正文

Vue实战(四)登录/注册页的实现

项目地址: Github
往期文章:
Vue实战(一)项目分析
Vue实战--(二)路由设计及导航栏开发
Vue实战(三)项目配置

登录界面

我写好的界面是这样的
图片描述

  • 背景图片的加载

    - 这里要注意的一件事情,就是因为Vue-cil自动安装了Img-loader模块,在我们npm run dev模拟服务器环境的时候,图片会被打包成base64格式,所以我们这里的图片引入与以前的方法不一样。
    <div class="login-warp" :style="{backgroundImage: 'url(' + BgImg + ')'}">
    </div>
    //BgImg为背景图片的路径,存放在data中

参考文章:vue图片引入的三种方式
vue 动态加载图片src的解决办法

Vuex 的配置

登录状态每个组件都用的上,所以现在我们要用上Vuex,在npm安装好之后,我们要在main.js中引入vueX

  • 引入VueX

main.js

import store from './store/index'

new Vue({
  el: '#app',
  router,
  store,
  components: { App },
  template: '<App/>'
})
  • 配置Vuex

在src目录下新建一个store文件夹用来存放Vuex的配置文件
store/index.ja

// store index.js
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
// 初始化时用sessionStore.getItem('user'),这样子刷新页面就无需重新登录
const state = {
  user: window.sessionStorage.getItem('user')
}
const mutations = {
  GET_USER: (state, data) => {
    // 把用户名存起来
    state.user = data
    window.sessionStorage.setItem('user', data)
  },
  LOGOUT: (state) => {
    // 登出的时候要清除用户名
    state.user = null
    window.sessionStorage.removeItem('user')
  }
}

const actions = {
}
export default new Vuex.Store({
  state,
  mutations,
  actions
})

登录/注册 功能的实现

参考文章:vue+axios新手实践实现登陆

  • Mock数据

首先Mock两个假接口,
mock.js

Mock.mock('/login', (options) => {
  console.log(options.body)
  return options.body
})
Mock.mock('/register', (options) => {
  console.log(options.body)
  return options.body
})
  • 发送axios请求
          this.axios.post('/login', {
            user: this.validateForm.username,
            pass: this.validateForm.password
          })
            .then((response) => {
              if (response.status === 200) {
                var data = JSON.parse(response.data)
                this.$store.commit('GET_USER', data.user)
              }
            })

这样子就实现了登录功能

修改导航栏

导航栏中的 登录/注册 选项,如果用户登录了,就把它换为用户名,所以我们要修改一下导航栏,这一功能可以借助v-if实现

//用户未登录
< v-if="!this.$store.state.user" >
    <>登录/注册</>
// 用户已登录,用户名为导航名
< v-else >
    <> {{this.$store.state.user}} </>

相关文章:

  • TROUBLESHOOTING GUIDE TNS-12518 TNS listener could not hand off client connection
  • 数据结构--zkw线段树
  • GraphicsStatsService之1-dump数据的实现
  • Nginx(转)
  • react-create-app
  • 好用的Vue状态管理模式:浅谈Vuet在实际应用中解决的问题
  • Android 解决 View 的滑动冲突
  • RabbitMQ-Java版本生产与消费
  • Ajax学习(一)
  • window对象
  • saltstack常用远程命令
  • vuex,vue问题汇集(一)
  • ERROR   OGG-01161 Bad column index (15) specified for table
  • HNUSTOJ-1520 压缩编码
  • java json与map互相转换(一)
  • [LeetCode] Wiggle Sort
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Logstash 参考指南(目录)
  • Vue2.0 实现互斥
  • vue--为什么data属性必须是一个函数
  • Xmanager 远程桌面 CentOS 7
  • 测试开发系类之接口自动化测试
  • 回顾 Swift 多平台移植进度 #2
  • 力扣(LeetCode)21
  • 使用SAX解析XML
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​Python 3 新特性:类型注解
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (1)STL算法之遍历容器
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (52)只出现一次的数字III
  • (C语言)fgets与fputs函数详解
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (二)PySpark3:SparkSQL编程
  • (七)理解angular中的module和injector,即依赖注入
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)关于多人操作数据的处理策略
  • (转)我也是一只IT小小鸟
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET 8.0 中有哪些新的变化?
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Core中Emit的使用
  • .NET DataGridView数据绑定说明
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .net访问oracle数据库性能问题
  • /3GB和/USERVA开关