ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
`审核人:白占宁` `被审核代码负责人:孙雨珩` `代码地址:http://192.168.1.170/hyfe/demo-project/tree/master/demo-sunyuheng` ### 值得分享的地方 * 各个组件文件中代码的组织形式; * `moment.js`的使用; * `conic-gradient`使用场景及能实现的效果分享。 ### 存在的问题 #### 1、项目目录结构 目录结构与`gitlab`上的不一致,所有项目的目录结构应该保持一致。 #### 2、变量命名 ``` var $el = me.$el = $(tpl) var $count = me.$count = $el.find('.J-count') var $title = me.$title = $el.find('.J-title') ``` 解决方案:声明变量时不建议以`$`开头。 #### 3、项目中`_`默认为表示`lodash.js` ``` var _ = require('common/util') ``` 解决方案:替换变量名称,不要使用`_`命名。 #### 4、选择元素时原生JS与jQuery混用 ``` var containerEl = document.querySelector(container); if (containerEl) { containerEl.appendChild( me.$el.node() ) } ``` 解决方案:项目中引入了jQuery,涉及到DOM相关操作就都使用jQuery来完成。 #### 5、提供的API方法的参数 提供的绘图API的方法参数固定为三个:容器,数据和配置项,其中容器和数据必选,配置项可选。 ``` /** * 绘制圆形类型图,对外提供的API接口 * * @param {string} container 容器 * @param {array} data 数据源 * @param {object} options 配置项 */ function drawRadarCircle(container, data, options) { var cfg = _.merge({}, defaultSetting, options) // ...... ``` #### 6、对外提供的API中不需要创建SVG元素 ``` var $el = me.$el = d3.select( document.createElementNS('http://www.w3.org/2000/svg', 'svg') ) .classed('donut-map-chart', true) ``` 解决方案:不建议在对外提供的API中创建SVG元素。 #### 7、定义的变量从未使用 ``` var timer = new Timer({ el: '#J-timer-container', }) ``` 解决方案:定义了`timer`变量,在后面的代码中一直没有使用,就不要定义该变量。 #### 8、关于假值的判断 ``` floorNum: function(num, n) { if (n == null) { n = 2 } var scale = Util.calcNumScale(n) return Math.floor(num * scale) / scale } ``` 解决方案:n有默认值,因此是可选的,所以这里判断时候建议使用`!n`代替`n == null` ,或者使用如下方式: ``` if(n == null) { n = 2 } // 替换为下面这种方式 n = n || 2 ```