前端学习(十一)导航栏登录功能

一般网站的右上角,都是一个用户登录的按钮,用户登录完就显示用户的头像,点击进去就是个人中心。本文就为实现这个功能。

组件实现

在右上角添加这么个模块,他实现的效果是下面这样的,
这是没登录时的样子:
未登录时
这是登录后的效果:
在这里插入图片描述
当然以后如果有头像了,把这个图标换成头像就更生动了
首先就把这个视图的功能先写出来:
我新建了个文件“src\views\login\menuLoginBar.vue”:

<template>
  <el-dropdown style="float: right">
    <div>
      <router-link v-if="!getLoginStatus()" to="/login" style="color: white">登录</router-link>
      <i v-if="getLoginStatus()" class="el-icon-user-solid" style="color: white">
        <el-dropdown-menu>
          <el-dropdown-item>
            <span>退出登录</span>
          </el-dropdown-item>
        </el-dropdown-menu>
      </i>
    </div>
  </el-dropdown>
</template>

<script>
import storageUtil from "../../utils/storageUtil"

export default {
  name: "loginView",
  data() {
    return {
      msg: this.getLoginStatus()
    }
  },
  methods: {
    getLoginStatus() {
      if (!window.localStorage) {
        alert("浏览器不支持localstorage,请更换更高版本的浏览器")
        return false
      } else return storageUtil.get("isLogin") != null;
    }
  }
}
</script>

这里用到el-dropdown,就是实现那个鼠标移动到这个弹出下面的选项。

      <router-link v-if="!getLoginStatus()" to="/login" style="color: white">登录</router-link>
      <i v-if="getLoginStatus()" class="el-icon-user-solid" style="color: white">

看这两行,第一行是未登录时显示的,第二行是登录时显示的,他们切换显示靠的是v-if=“getLoginStatus()”,getLoginStatus()这个方法就是查询是否登录了,之后再具体讲。

el-dropdown-menu就是下拉菜单的子菜单项。基本功能就这么些。

引入到导航栏

      <el-menu-item style="float: right">
        <menuLoginBar></menuLoginBar>
      </el-menu-item>

这个好办,就在导航栏代码里新增一个子模块就可以了。
当然也要先导入模块:

<script>
import menuLoginBar from "@/views/login/menuLoginBar";

export default {
  name: 'App',
  components: {menuLoginBar}
}
</script>

查询登录状态

一般网站登录后都是会保持一段时间的登录状态的,即使关闭页面再打开登录状态也还在,这样减少用户登录的次数,会方便很多,这个取决于业务。
那么如何做呢?就是使用localStorage,做一个本地存储,但是localStorage是不会过期的,除非人为删除他,所以得对他进行封装,给他添加一个过期功能。
所以我还新增了一个工具类:

let storageUtil =  {
    set : function (key, value, expiredM) {
        /**
         * set 带过期时间的存储方法
         * @ param {String}     key 键
         * @ param {String}     value 值,
         * @ param {String}     expired 过期时间,以分钟为单位
         */
        let expiredTime = Date.now() + expiredM * 60000
        let item = {
            value: value,
            expired: expiredTime
        }
        let itemStr = JSON.stringify(item)
        localStorage.setItem(key, itemStr)
    },

    get :function (key) {
        /**
         * get 获取方法,须与set配套使用
         * @ param {String}     key 键
         */
        let valueStr=localStorage.getItem(key)
        if (valueStr!=null){
            let item=JSON.parse(valueStr)
            if (Date.now()>=item.expired){
                localStorage.removeItem(key)
                return null
            }else {
                return item.value
            }
        }else {
            return null
        }
    }
};
export default storageUtil;

我就不具体讲了,这些工具类网上一搜大把。
在有了工具类之后,在登录界面(之前文章里已实现),就得添加登录成功后持久化存储登录状态的语句:

storageUtil.set("isLogin",true,30)

这里就不展开讲了,其实这里要学习的是怎么添加工具类,以及怎么引用它。可以以我这个工具类为模板把,然后引用就:

import storageUtil from "@/utils/storageUtil"

功能改进

以上实现还存在问题,就是未登录时点击登录,登录成功之后,会自动跳转到首页,但是右上角这个状态他不会改变,因为没刷新,它没有重新判断当前的登录状态,手动刷新一下页面即可更新。
但是我们想要的效果肯定不能是这样的,所以当我们主动发生登录状态变更的时候(被动就不需要考虑了,比如登录信息过期),比如手动登录,手动退出登录时。

PS:篇幅和时间原因,代码贴的不完整,想看具体的代码去:https://gitee.com/lsjWeiYi/vue-frame,不过这里的代码也不完全和博客上的一模一样,后面可能我有做更改。

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Web前端项目300实例是一个综合性的示例集合,其中包含了各种各样的前端项目,用于帮助开发者学习和掌握前端技术。 这些实例覆盖了HTML、CSS、JavaScript等前端技术的各个方面,涵盖了网页布局、动画效果、表单验证、响应式设计、数据可视化等多个领域。 例如,一个实例可以是一个简单的网页布局,它包含一个导航栏、一个主要内容区域和一个页脚。通过这个实例,开发者可以学习如何使用HTML和CSS来创建网页的基本结构和样式。 另一个实例可以是一个图片轮播效果,通过该实例,开发者可以学习如何使用JavaScript和CSS来实现图片的自动切换和动画效果。 还有一些更高级的实例,比如一个表单验证功能,通过该实例,开发者可以学习如何使用JavaScript来验证用户输入的表单数据的有效性。 除了这些基本的示例外,还有一些更具挑战性的实例,比如一个数据可视化的项目,通过该实例,开发者可以学习如何使用JavaScript和相关的图表库来呈现数据的可视化效果。 总的来说,Web前端项目300实例是一个很好的学习资源,它可以帮助开发者通过实践来巩固前端技术的知识,提高自己的编码能力和项目开发经验。无论是初学者还是有经验的开发者,都可以从中获益。 ### 回答2: web前端项目300实例是一个综合性的示例集合,旨在帮助学习者掌握和实践前端开发中的各种技术和动手能力。这些实例覆盖了前端开发领域的各个方面,涉及到HTML、CSS、JavaScript等技术的应用。 首先,这些实例通过直接的HTML和CSS代码展示了网页的基础布局和样式设计,包括页面头部、导航栏、侧边栏、内容区域等基本的页面组成部分。 其次,这些实例还演示了常见的Web页面组件开发方法,如轮播图、导航菜单、图表、表单等等。通过实践这些示例,学习者可以学会如何使用HTML、CSS和JavaScript来开发这些常见的组件,提高页面的交互性和用户体验。 此外,这些实例还包括了一些涉及到数据处理和API调用的案例。例如,通过使用JavaScript和AJAX技术,可以实现与后端进行数据交互,实时加载数据、搜索功能等等。 最后,这些实例还包括了一些现代化的Web开发技术的应用,比如响应式布局、移动端适配、前端框架的使用等等。通过这些示例,学习者可以了解到当前前端开发中的一些流行技术和最佳实践。 总而言之,web前端项目300实例提供了丰富的示例和实践机会,可以帮助学习者系统地掌握和运用前端开发中的各种技术和技巧,是一个有助于提高前端开发水平的学习资源。 ### 回答3: Web前端项目300实例是一个包含了300个前端实例的项目。这些实例覆盖了各种不同的Web前端技术和应用场景,可以帮助开发人员更好地学习和掌握前端技术。 这些实例通常分为不同的类别,比如HTML、CSS、JavaScript等。每个实例都是一个独立的项目,可以通过查看源代码和运行示例来学习相应的前端技术。 在这个项目中,你可以找到从基础到高级的各种实例。比如,你可以学习如何创建一个简单的网页,如何使用CSS样式美化页面,如何使用JavaScript实现交互效果,以及如何使用框架(如React或Vue)快速构建复杂的前端应用程序。 这些实例不仅仅是代码片段,也包含了详细的说明文档和解析。你可以通过阅读这些文档来理解每个实例的目的和实现方法。 此外,这个项目还提供了一个在线代码编辑器,你可以在浏览器中编辑和运行这些实例。这个功能使得学习变得更加方便和实用。 在使用这个项目的过程中,你可以逐渐提升自己的前端开发技能,掌握各种常用的技术和工具。你可以根据自己的学习进度和兴趣选择具体的实例进行学习和实践。 总之,Web前端项目300实例是一个全面的前端学习资源,通过实际项目的练习和实践,可以帮助你成为一名优秀的前端开发人员。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lsjweiyi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值