高屋建瓴话-前端code review

133 阅读1分钟

一、代码格式

工程化流程化处理
  • 借助工具vscode代码格式化
  • 标准eslint规则校验+husky(本地pre-commit校验)
  • 远端ci流水线校验

二、代码错误

风险代码
  • 判空值、类型判断
  • 内存泄露
    如v-if销毁组件时,暴露
    • 闭包内部变量
    • 计时器清理
    • 事件解绑
    • 第三方库销毁函数

三、代码习惯

抽象内聚
  • Don't Repeat Yourself
  • 函数超过80行
  • 减少硬编码
便于理解
  • if-else、回调嵌套过多
  • 必要注释,尽量代码逻辑明了,而不用注释
  • 说明文档、统一命名
    • 对外暴露的接口和组件,常用的规整为模块,复杂部分最好有输入输出样例

四、代码优化

js减少内存使用
  • delete 操作符并不会释放内存,而且会使得附加到对象上的hidden class失效,让对象变成slow object。 (hidden class是V8为了优化属性访问时间而创建的隐藏类) 链接参考 juejin.cn/post/684490…

  • 无限瀑布流事件绑定采用事件代理,减少内存占用

打包层面
  • 是否引入不必要的npm包
  • 使用cdn地址减少包体积
dom渲染层面
  • 避免直接操作dom

  • 频繁事件的防抖节流

  • 动画减少回流重绘

    使用transform代替left,top等值的改变 根据浏览器的渲染流程,如果引起元素位置大小的改变,需要重新进行布局计算,然后重新生成位图,交给GPU渲染展示 而transform的改变不会对元素的位置大小产生改变,而是使用已经生成的位图,对它进行旋转,缩放,移动。

原文链接 zhuanlan.zhihu.com/p/366786798