近日来,我陆续的分享了vue相关的系列文章,以新闻列表项目为载体,实战的方式介绍了vue及其周边的技术。本文承接前文,不断通过项目迭代的方式继续分享vue相关的知识。

目前Vue实战系列文章已形成了目录,各位感兴趣的朋友欢迎浏览:Vue实战目录——vue+router+vuex+axios从零实现新闻详情页

本项目git地址:

https://gitee.com/vuejslearn/news-list.git

打开项目,点击新闻列表的标题,窗口切换到了新闻详情,但是如果我想回去的话,还得点击导航栏,比较麻烦,有没有可能打开一个新窗口来展示新闻详情呢?这样我再看列表就会更加方便了。答案是有的,打开文件newsList.vue修改goDetail函数:

具体的代码:

let routerUrl = this.$router.resolve({ path: '/detail', query: { content: content } }) window.open(routerUrl.href, '_blank')

短短几行代码就让我们的本页切换,变成了新窗口打开了。其实背后的方式就是用router获取url,然后通过window自带的方法打开而已。

ok,我们启动项目,点击新闻列表的标题,成功调转,但是,怎么跳转到登录页了?不应该跳到新闻详情吗?什么情况?

仔细想一想,如果我打开一个新窗口,那么这个新窗口里的组件就需要重新创建并挂载,那么原来的vuex里的状态是不是就重置啦?因此,就跳到登录页了。如果想成功跳转,就必须让登录状态能夸窗口,那怎么办呢?如果将状态保存到本地,像cookie那样,是不是就可以了?那该怎么做呢?很简单,用:

localStorage.setItem(key,value)

保存就行啦,一行代码,就可以将数据保存到本地啦。如果读取的话就用:

localStorage.getItem(key)

就可以从本地读取了,是不是很简单?ok,开始改造vuex,将状态改成本地存储:

修改login.vue的登录函数,添加保存本地代码:

修改导航路由文件的全局前置守卫,将由vuex判断登录状态改为从本地获取:

然后去掉store的引入,重启项目,发现,成功的跳转到详情页了。但是这个导航栏,怎么看着那么的难看呢,我们优化一下导航栏吧。

1.在views里新建Header.vue文件。这里介绍一下vue的文件命名,如果是一个单词的文件,必须要大写开头,比如header.vue就是错的,因为小写字母会被vue当成系统标签。如果是多单词文件,比如:BaseHeader.vue,要采用驼峰法命名,使用的时候可以是这样子用。

2.将App.vue里的导航div模块,放到Header.vue里,同时把样式代码也拿过去。然后去掉Home、About、newAbout这些没用的导航。最后的样子:

Header.vue

App.vue

修改导航文件,去掉Home、About、newAbout等导航,修改默认导航为新闻列表。最后重启项目:

点击其中的新闻标题,跳转到了新闻详情窗口:

OK,本文暂时介绍到这里。相关代码以提交到git上,感兴趣的朋友可以拉下代码看一下,亲自运行一下。


原创不容易,鉴于本人水平有限,文中如有错误之处欢迎大家指正。以后我会持续发布vue实战系列的文章,喜欢的朋友欢迎关注。

html5怎么改为vue_Vue实战——编程式导航打开新窗口,登录状态本地存储相关推荐

  1. 微信小程序【网易云音乐实战】(第四篇 用户登录、本地存储、视频播放、上拉下拉刷新)

    一.用户登录 官网事件使用使用 1. 绑定事件 和 获取数据 bindinput :当输入框有变化时,触发事件. handleInput(event){// let type=event.curren ...

  2. Vue.js-Day05【安装路由(vue-router)、如何使用vue-router、404配置、激活class、动态路由、编程式导航、路由嵌套、路由元信息、导航拦截】

    Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 目   录 1.单页面应用 1.1.多页面应用 1.2.单页面应用 1.3.vue-router 2.安装vue-rout ...

  3. 前端笔记(11) Vue3 Router 编程式导航 router.push router.replace

    什么是编程式导航? 在上篇博客Vue3 Router 监听路由参数变化中,我们使用 <router-link> 创建 a 标签来定义导航链接: <router-link to=&qu ...

  4. 031_vue编程式导航

    1. 页面导航的两种方式 1.1. 声明式导航: 通过点击链接实现导航的方式, 叫做声明式导航.例如: 普通网页中的<a></a>链接或vue中的<router-link ...

  5. 页面导航的两种方式——声明式导航、编程式导航||vue-router编程式导航||router.push() 方法的参数规则

    页面导航的两种方式 vue-router编程式导航 编程式导航基本用法 <!DOCTYPE html> <html lang="en"><head&g ...

  6. vue-router详尽:编程式导航、路由重定向、动态路由匹配、路由别名、嵌套路由、命名视图

    vue-router编程式导航 在vue项目中经常用到this.$router.push() 和 this.$router.replace() 方法进行路由跳转就是编程式导航... 通俗理解编程式导航 ...

  7. vue编程式导航,命名路由

    //使用 window.location.href 的形式,叫做 编程式导航 绑定事件的形式 <template><div class="goods-item" ...

  8. 声明式导航编程式导航

    声明式导航:在浏览器中,点击链接实现导航的方式,叫做声明式导航.如:普通网页中点击<a>链接,vue中点击<router--link>都属于声明式导航. 编程式导航:在浏览器中 ...

  9. Vue页面与页面之间的传值(router.push()编程式导航)

    页面与页面之间跳转传值,其实我们一般用两种,query传参或者用params 其实这两个方式都是页面导航的一种,编程式导航:通过调用JavaScript形式的API实现导航的方式,大家不了解的可以去官 ...

最新文章

  1. Retrofit2 multpart多文件上传详解
  2. 序列号明码比较的反汇编代码以及注册机的初步使用
  3. 为什么在大型 Angular 应用里我们需要使用 ngrx
  4. php ip2long bug,php ip2long函数怎么用-PHP问题
  5. XXE漏洞利用技巧(XML注入):从XML到远程代码执行
  6. 如何训练您的医生...使用开源
  7. 15 年老程序员自述:8 个影响我职业生涯的重要技能
  8. Java字符编码知识简介
  9. android设置adb环境变量,如何配置android的adb环境变量
  10. LaTeX新人教程,30分钟从完全陌生到基本入门
  11. 云计算风起云涌,IaaS 步入黄金发展期
  12. 网络安全证书已过期或不可信怎么办
  13. python自动获取微信公众号最新文章
  14. 【心慈喜讯】“心”启航青少年心理健康支持项目成功入选广州市海珠区“慈泉杯”社会组织公益创投活动
  15. 我叫mt4服务器维护中,我叫MT4:7月11日凌晨维护公告
  16. Android 内存优化- ANR 详解
  17. 视觉激光雷达信息融合与联合标定
  18. C语言应声虫程序,【0016】应声虫(寓言)
  19. 视频转二维码怎么操作?简单一步在线生成视频二维码
  20. 硬盘双击打不开,u盘双击打不开解决办法

热门文章

  1. 带你玩转Logview: MaxCompute Logview参数详解和问题排查
  2. 我使用阿里云做直播,有什么手段保护直播安全?
  3. 一文告诉你,如何在 Kubernetes 的容器引擎中运行 KVM 和 VMware VM!
  4. 不少人暗搓搓的准备春招了,我有一些好东东和招聘信息给你
  5. 5分钟带你了解Kafka的技术架构 | 技术头条
  6. 华为发布基于第二代英特尔®至强®可扩展处理器家族的新一代服务器
  7. 找了前锤子CTO钱晨加入SLG ,百度终于认了……新的一年第4批CDN牌照公布;亚马逊开设云计算技术培训工作 | 极客头条...
  8. 官宣!张小龙史上最长演讲 4小时3万字完整版回应微信的一切
  9. (企业案例)Nacos Config 进阶使用
  10. flowable实战(九)flowable数据库表中流程实例、活动实例、任务实例三者之间关系分析