vue开发规范

H5规范
编号事项说明备注代码案例
1代码规范统一IDE使用EditorConfig插件控制缩进,保证代码的可读性  
统一使用markdown编写文档  
SVN提交需写明备注,列明当前代码修改项  
添加注释
1.文件头部                                                                       2.含内注释                                      
   /**                                                                                  /**
     *  @Title      模块名                                                      *  @Title      模块名
     *  @Auther  作者名                                                     *  @Params  参数组
     *  @Params  参数组                                                    *  @Des        描述
     *  @Des        描述                                                       **/
     *  @Time      创建时间(如:2018/03/12)
   **/
  
ES5/ES6使用规范如const/let、箭头函数、变量解构 
命名规范:1.组件:xxxComponent     2.服务:xxxService    3.视图:xxx (按视图)     4.脚本:xxx(按功能)   5.组件对外暴露方法:xxx(按功能)驼峰命名 
impot采用alias路径引入:
错误:import { PaintBoard } from './Canvas';
正确:import { PaintBoard } from '@/service/CanvasService/Canvas';
  
2文件/目录/配置规范按功能/组件/视图分层,如组件、配置文件  
目录必须带README.md文件,此文件内可提供业务描述、案例DEMO演示或其它  
env环境配置表(/config/env.js)
例:通过env暴露不同变量的值,如唱片店{{env.recordUrl}}
用:{{env.xxx}} 或 this.env.xxx (全局变量)
  
API配置表(/config/api.js)
例:GET_SONG_LIST: 'GET_SONG_LIST', //获取歌曲列表
用:{{api.GET_SONG_LIST}}  或 this.api.GET_SONG_LIST(全局变量)
  
语言包规范(参考案例:components/common/dialog/pay/index.vue):
1.引入模块语言包:import langObj from "@/lang/components/pay";
2.引入语言类型(computed):...mapGetters([ 'lang'])
3.统一定义langObj语言变量(computed):
   langObj(){ return langObj[this.lang] || langObj["zh_CN"] }
4.视图使用:{{langObj.btnExchange}}
  
默认样式库规范:
默认样式总库:assets/style/system/index.scss
动画库:assets/style/system/common/animate.scss
工具库:assets/style/system/common/utils.scss(单个)
工具总库:assets/style/system/common.scss(对外暴露,如视图引入)
皮肤总库:assets/style/skins/index.scss
  
3调试规范阻塞调试谷歌开发工具Perfomance 
IPC调试谷歌开发工具Devtron 
内存调试谷歌开发工具Memory 
渲染调试谷歌开发工具Render 
调试控制台谷歌开发工具console 
测试机器:  
音视频播放调试:
   
  
4数据/资源规范图片资源压缩裁剪  
所有点击请求,减少反复点击多次请求,降低服务器压力,如上报/领券  
SVG加载规范:待补充  
数据预加载,预渲染  
数据按需查询其数据,避免加载全部数据,如使用链表匹配  
图片/变量缓存机制,尽量避免重新生成或重绘  
网播资源使用nass盘(待实践)  
内存/资源回收,避免长期占用未释放:
(1) 申明的对象/数组/实例
(2) vue data内定义的变量类型,如数组/对象/字符串
回收方式:obj.clear() 或obj = null
旧版:在组件销毁时(destroyed方法)时回收
新版:由于新架构采用整个视图存放内存的方式,同时使用vue的keep-live的状态监测,视图组件分activate(活跃)和deactivate(非活跃),内存通过deactivate钩子函数进行回收,仅销毁视图即可回收所有当前视图的内存,非组件内销毁
 
Ipc使用规范,详见service/ipcService.js  
5事件规范针对按钮,增加防抖策略,限制点击频率  
点击事件,@touchstart.stop.prevent.capture、@touchend.stop.prevent.capture     全局事件捕获 
点击事件,非滚动区域去掉非必要的默认事件,如event.preventDefault();event.stopPropagation() ,滚动区域使用passive增加多余的事件(阻塞)损耗 
避免渲染频率比较高情况,减少使用计算损耗较大的方法,如:JSON.parse()、dom相关操作  
实例创建,应避免多次创建,同时实例应该不使用时回收,否则引起业务BUG以及内存占用  
vuex避免全局获取或更新值,如$store.state.xxx,尽量使用mapGetters、mapActions匹配获取引起计算消耗 
6视图渲染/动画规范避免动画使用背景,动画过渡,尤其是绘画面积大的情况  
避免在DOM层级过深的元素使用v-show,引起大面积重绘与回流  
避免过多使用SVG引起渲染消耗 
避免过多使用box-shadow、transform、position(left/top/right/bottom)等样式,尤其渲染频率比较高的绘图情况引起渲染消耗,阻塞 
避免重绘/重排,非当前数据更新,禁止再次重绘重排,特殊情况待定,实例如下:  
避免过多使用overflow,因其为块级格式上下文,会强制(重新)包围内容元素,触发BFC且此层重绘,导致其节点下重绘/回流,尤其渲染频繁比较多的块  
渲染面积与层重叠过多情况,可以考虑使用canvas合并成一个层渲染  
对渲染面积比较大的,如非需要,可暂时隐藏,避免视图上渲染  
针对点击切路由重绘视图情况,快速点击时,视图不需要重绘,如导航栏  
是否开启多线程(待定)  
webgl使用:html动画、游戏效果使用webgl渲染  
7UI/体验规范遵循UI设计  
点触范围扩大用户体验 
导航类/分类增加防抖机制,快速点击避免再做其它操作,如请求,渲染等引起阻塞 
按钮类防止点透处理,如系统设置页,快速点击保存设置,进去语音页,而非主页  
8人员规范   
   
   
   
   
   
   
   
   
   
9文档规范   
   
   
10配置信息   
   
   
11    
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值