在项目实践中,遇到了这么一档子事

开发环境下,很快乐,什么事儿都没有,于是想打包一下测一下自动登录的效果

好家伙,一开始登录没有效,改来改去,最后连路由都切换不了,

明明开发环境下好好的,为毛打包后就不行了

折腾了半天,终于找到原因:ajax请求数据搞的鬼

情况如下:

开发环境下用express模拟出请求路由,登录数据和端口数据一起放在一个login.json文件中

{
"userinfo":{
"name" : "vbyzc1984",
"tel" : "13959795557",
"head" : "QQ20180813161622.jpg",
"addr" : "泉州市丰泽区外代大厦11楼1102",
"money":"9500",
"score":"7500",
"level":"2",
"exp":"1250",
"nextexp":"5000"
},
"goods" :[
{
"title":"梅菜扣肉饭",
"image":"food1.jpg",
"price":"13",
"label":{
"zp":true,
"new":true,
"la":false
}
}
]
}

  

将login.json require引入:var appData = require('./api/login.json')

用express注册出2个路由:

“api/login.json” : 设置返回数据为 appData.userinfo

“api/goods.json” : 设置返回数据为 appData.goods

请求很正常,正常登录

api/login.json是静态模拟,所以打包后,直接把整个目录复制过去测试效果,

由于开发环境下是虚拟路由直接返回整个login.json对象中的某个对象,

所以代码中用response.data.data,得到的是包括userinfo,和goods2个子对象的一个完整对象,直接放到vuex状态中的登录对象,肯定不能用

所以最后解决方法是,把login.json改为db.json,用于放所有模拟数据

再分别新建独立的对应数据文件:比如login.json,只放这些东西:

{
"data":{
"name" : "vbyzc1984",
"tel" : "13959795557",
"head" : "QQ20180813161622.jpg",
"addr" : "泉州市丰泽区外代大厦11楼1102",
"money":"9500",
"score":"7500",
"level":"2",
"exp":"1250",
"nextexp":"5000"
}
}

此外还有一奇葩事件导致相关的代码出现错误警告

开发环境中,从localStorage获取没有设置的值,得到的是 null

而生产环境中,得到的是 'undefined' ,注意,是字符串,不知为何?

暂时只能多加个判断来解决 :

AUTO_LOGIN_TOKEN != null && AUTO_LOGIN_TOKEN != undefined && AUTO_LOGIN_TOKEN != 'undefined'
 
狗血事件就靠一段落了。

vue实践中的狗血事件之:mock数据引发的血坑的更多相关文章

  1. vue-cli3.x中使用axios发送请求,配合webpack中的devServer编写本地mock数据接口(get/post/put/delete)

    vue-cli3.x中使用axios发送请求,配合webpack中的devServer编写本地mock数据接口(get/post/put/delete) 手把手式笔记 Axios配置 安装 axios ...

  2. Vue开发中的中央事件总线

    在Vue开发中会遇到大量的组件之间共享数据的情形,针对不同的情形,Vue有相对应的解决方案.比如,父组件向子组件传值可以使用props,复杂项目中不同模块之间传值可以使用Vuex.但是,对于一些简单的 ...

  3. onscroll事件没有响应的原因以及vue.js中添加onscroll事件监听的方法

    1 onscroll事件失效 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  4. vue项目中使用mockjs模拟接口返回数据

    Mock.js 是一个模拟数据生成器,利用它,可以拦截ajax请求,直接模拟返回数据,这样前后端只要约定好数据格式,前端就不需要依赖后端的接口,可以直接使用模拟的数据了. 网上介绍mock的教程也较多 ...

  5. vue项目中使用mockjs+axios模拟后台数据返回

    自己写练手项目的时候常常会遇到一个问题,没有后台接口,获取数据总是很麻烦,于是在网上找了下,发现一个挺好用的模拟后台接口数据的工具:mockjs.现在把自己在项目中使用的方法贴出来   先看下项目的目 ...

  6. vue组件中—bus总线事件回调函数多次执行的问题

    在利用vue组件进行事件监听时发现,如果对N个vue组件实例的bus总线绑定同一事件的回调函数,触发任意组件的对应事件,回调函数至少会被执行N次,这是为什么呢? 为此,调研了普通对象的事件绑定和触发实 ...

  7. vue.js 中如何解除绑定事件

    我们项目中有一个点赞需求,只允许点击一次赞,再次点击则取消赞, 为了防止用户多次连续点击,在点赞后需要解绑事件,成功调取API后,才可再次点击取消赞. 目前用的方法是加入一个flag控制点击事件可否点 ...

  8. clipboard 在 vue 项目中,on 事件监听回调多次执行

    clipboard 定义一个全局变量 import ClipboardJS from "clipboard"; if(clipboard){ clipboard.destroy() ...

  9. VUE 实现监听滚动事件,实现数据懒加载

    methods: { // 获取滚动条当前的位置 getScrollTop() { let scrollTop = 0 if (document.documentElement && ...

随机推荐

  1. symfon2 配置文件使用 + HttpRequest使用 + Global多语言解决方案

    1. 在 app/conig中建立一个自命名的文件: abc.yml 2. 在 app/config/config.yml中导入abc.yml 文件头部: imports:- { resource: ...

  2. android开发之使用SQLite数据库存储

    http://blog.csdn.net/jason0539/article/details/16360835 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且 ...

  3. [软工课程博客] 求解第N个素数

    任务 求解第 10,0000.100,0000.1000,0000 ... 个素数(要求精确解). 想法 Sieve of Eratosthenes 学习初等数论的时候曾经学过埃拉托斯特尼筛法(Sie ...

  4. “一片空白”的c#

    using System; using System.Collections.Generic; using System.Text; namespace FindTheNumber           ...

  5. 从零开始学Kotlin-类的继承(6)

    从零开始学Kotlin基础篇系列文章 Kotlin中的超类Any Kotlin 中所有类都继承超类 Any 类 class demo6 //默认继承超类Any class demo6 : Any() ...

  6. 『编程题全队』Alpha 阶段冲刺博客Day7

    1.每日站立式会议 1.会议照片 2.昨天已完成的工作统计 孙志威: 1.添加了网络通信管理类 2.稍微修改了燃尽图模块ChartWidget 3.在主窗口中添加了用户信息框 4.重构了项目中的文件结 ...

  7. Linux命令(十一) 显示文件类型 file

    命令介绍 file 命令是用来显示文件的类型,对于每个给定的参数,该命令试图将文件分类,分辨的类型有文本文件.可执行文件.压缩文件.或其它可理解的数据格式. 常用参数介绍 -b 不显示文件名称,只显示 ...

  8. Docker(十七)-修改Docker容器启动配置参数

    有时候,我们创建容器时忘了添加参数 --restart=always ,当 Docker 重启时,容器未能自动启动, 现在要添加该参数怎么办呢,方法有二: 1.Docker 命令修改 docker c ...

  9. Android Manifest文件

    Manifest文件内容 1.自定义权限(Permission) :  <permission android:description="string resource" a ...

  10. springMVC下出现http 400错误

    参数绑定过程中类型转换失败 Failed to convert property value of type 'java.lang.String' to required type 'java.uti ...