开发规范
- 用不到的代码删除。
- 用不到的变量删除。
- 函数加注释。
- 始终使用 === 替代 ==。
- 不要定义没有用到的 state。
- 组件最好定义 defaultProps。
- 变量命名语义化,驼峰命名。
- 删除无用的调试日志(console.log)。
- commit 提交信息,按照 feat 和 fix,写明提交内容概述。
- 符合eslint。
- 组件命名、组件封装、css 样式及模块化、公用方法定义、注释规范、vscode 配置建议等。
语法规范
按项目内的eslint规则来写,不可关闭。
PS:非特殊情况不可单独关闭eslint,关闭eslint区域需要给出理由通知到位项目负责人及合作团队成员。
三元判断不可多层嵌套
尽量多思考用其它方式解决,而不要太依赖多层三元判断逻辑,错误演示如下图:
if嵌套不可超过3层以上
标签样式不能超过6层
标签样式层级不能过深,上限不超过6嵌套,超过嵌套层级单独抽离成一个组件的形式引入
页面及接口容错处理
容错处理必须要做,可以自测页面在断网情况下,出现错误的页面。下面情况必须做容错处理
404页面
比如下图,页面发生404的时候,路由需要匹配404自定义页面。
接口错误
在获取数据处理方法时,并没有做各种容错处理导至页面错误,因为断网或是数据结构不一样,此封装方法获取解析是错误不正常的,要解决此方法就需要对user进行容错,或者使用try catch
包裹或是给user默认参数。
语法错误
安全规范
- 页面加载图片,务必算出骨架,不允许出现堆叠效果。
项目务必加上全局异常捕获(sentry)和接口状态异常上报(nvwa)
1.服务端渲染项目
接口异常,保证程序不要挂掉,保证返回默认值,程序正常运行。
- 接口异常,保证及时能得到通知。
- 需要seo的地方,注意服务端渲染数据。
2.优化项目关键点
- 图片保证webp格式、首屏可采用Imgx、其余可采用NextImgx懒加载(next.js前提下),图片注意压缩
- img定宽高,避免多次重绘,以及添加alt属性
- 页面未加载完成需要占位,避免出现堆叠、抖动
- antd样式采用按需加载
- 删除js/css中无用代码,不能出现打印日志,非业务必须使用的js文件可采取异步加载
可用谷歌自带工具Lighthouse评分,查看网站掉分点去优化
3.浏览器兼容
- 跳转页面尽量采用a标签
- ie浏览器 input框默认小叉号 input::-ms-clear,::-ms-reveal{display:none;}
- 有出现safari图片圆角闪现问题 可采用will-change: transform;
- textarea、input 个别浏览
- 器无法输入 user-select: text;
前端性能规范
页面加载图片,务必算出骨架,不允许出现堆叠效果。
项目务必加上全局异常捕获(sentry)和接口状态异常上报(nvwa)
服务端渲染项目
1.接口异常,保证程序不要挂掉,保证返回默认值,程序正常运行。
2.接口异常,保证及时能得到通知。
3.需要seo的地方,注意服务端渲染数据。
优化项目关键点
1.图片保证webp格式、首屏可采用Imgx、其余可采用NextImgx懒加载(next.js前提下),图片注意压缩
2.img定宽高,避免多次重绘,以及添加alt属性
3.页面未加载完成需要占位,避免出现堆叠、抖动
4.antd样式采用按需加载
5.删除js/css中无用代码,不能出现打印日志,非业务必须使用的js文件可采取异步加载
可用谷歌自带工具Lighthouse评分,查看网站掉分点去优化
浏览器兼容
1.跳转页面尽量采用a标签
2.ie浏览器 input框默认小叉号 input::-ms-clear,::-ms-reveal{display:none;}
3.有出现safari图片圆角闪现问题 可采用will-change: transform;
4.textarea、input 个别浏览器无法输入 user-select: text;