解决vue生产环境,页面卡死的问题
作者:夏天爱劳动
这篇文章主要介绍了解决vue生产环境,页面卡死的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
vue生产环境,页面卡死的解决
问题描述
开发环境没问题,本地连测试环境没问题,打包到测试环境,直接把页面整崩k,搞得接口请求啥都没问题,但是接口preview就是不返回,
解决过程
- a.起初认为是后端打包得问题,但是进过分析和后台测试,基本排除
- b.前端重新打包,问题复现,(可能是页面陷入死循环,造成网页渲染出现问题,导致preview没有返回值)
- c.本地没有问题,本地连测试环境也没出现问题,基本排除有出现死循环的可能
- d.最后发现echarts在初始化的时候会报错,最后将报错的代码删除掉。(本地也报错,但是未出现页面卡死的现象)
最后得出在项目开发中,任何一个错误都可能造成项目卡死和浏览器崩溃,所以我们需要严谨的开发项目,有错误必须解决。
vue项目页面卡死原因排查
问题描述
点击后台管理某一菜单发现直接卡死,没有其他报错信息,整个网页鼠标变为手指状态不能进行任何操作
问题排查
首先是通过注释代码发现问题是出在以下代码中
<basic-container> <h4>教师指标数据</h4> <avue-crud ref="crud" :data="tableData" :table-loading="tableLoading" :option="tableOption" @refresh-change="refreshChange" @search-change="searchChange"> <template slot-scope="scope" slot="menu"> <el-button type="text" icon="el-icon-view" size="small" @click="handleView(scope.row,scope.index)">查看 </el-button> </template> </avue-crud> </basic-container>
查看日志输出
锁定到问题是数据展示的data 需要array 但是却拿到了Object
将数据展示方式tableData改为 table:[]数组类型进行展示即可
data:{ return :{ tableData: [] ] } getList() { this.tableLoading = true; this.tableData=[]; fetchList(this.listQuery).then(response => { console.log("------------------"+response.data.data) this.tableData.push(response.data.data) ; this.tableLoading = false }) },
总结
这里有几个问题一个是avue 版本兼容的问题 貌似旧版本会兼容这种情况不会出现卡死的问题大佬修改框架后出现的这个问题另一个是返回值规范 如果使用表格 最好都返回list数组 不要返回单object类型导致出现类似
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。