🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
审核人:李伟 被审核代码负责人:赵家红 代码地址:http://192.168.1.170/hyfe/demo-project/tree/master/demo-zhaojiahong * * * * * 1.项目启动失败 (已修改) 缺少文件`mine.js` 2.命名不规范:JS变量名要求遵循小驼峰法(已修改) 问题所在文件:`fileInto.js、seajs.config.js`等 3.单双引号使用规范:统一使用单引号(已修改) 问题所在文件:`car_number.js`等 4.可读性改进:建议此处改用while语句(已修改) 问题所在文件:`car_number.js 19行`等 ~~~ var astr = ""+str; for(;astr.length<7;){ astr = "_" + astr; } ~~~ 5.程序存在bug,逻辑错误:当页面数据更新的时候(ajax),高速路口流量图表并不会更新 问题所在文件:`road_rate.js` PS: 1. 用d3绘图一定要考虑DOM结构的update、enter、exit 2. 提供一种测试此类bug的方法:原理是通过定时器,实现间歇性更新数据,真实项目大多也是这样更新数据的 首先将`request.js`中的sendWebSocket方法改写成如下: ~~~ sendWebSocket: function(url, callback) { var protocol = url.split(':')[0] if(protocol == 'ws') { //线上版本 window.WS = new WebSocket(url) WS.onmessage = function(response) { if (response) { var data = response.data callback && callback(data) } } WS.onclose = function() { WS.close() } window.onunload = function() { WS.close() } } else { // request.sendAjax(url,callback) setInterval(function() { request.sendAjax(url,callback) },5000) } } ~~~ 接着将请求数据的方法改为`sendWebSocket` ~~~ // 原写法 request.sendAjax(baseConfig.road_rate,function(data){ if (data){ road_rate(data) } }); // 改为 request.sendWebSocket(baseConfig.road_rate,function(data){ if (data){ road_rate(data) } }); ~~~ 6.高速路口流量图表Y轴tickValues不应该是死数据,而应该是动态的(已修改) ~~~ // 错误代码 var yMark = [0 ,10, 20, 30, 40, 50]; //y轴坐标刻度 // 同理 比例尺错误 var yRuler = d3.scale.linear() .domain([0,50]) .range([height - padding.top - padding.bottom,0]); ~~~ PS: 比例尺的domain一般是:`domain([minData * 1.2 , maxData * 1.2])` ,数据最大值最小值应该自行求取,乘以放大系数1.2是为了防止数据图表出界-----书上都有说明 问题所在文件:`road_rate.js`