Skip to content
持续更新

书写命名约束

文件约束

文件结构

javascript
src/
  components/ (通用组件,与业务无关,可被其他所有组件调用)
    Button/
      index.tsx
  containers/ (容器组件,与业务深度耦合,可被页面组件调用)
    Hello/
      Kitty/ (容器组件中的特有组件,不能与其他容器组件共享)
      index.tsx
    World/
      components/
      index.tsx
  hooks/ (公共的 hooks)
  pages/ (页面组件,特定的页面,无复用性)
    my-app/
  store/ (状态管理)
  services/ (接口定义)
  utils/ (工具类)
要求自己
  1. 一个组件一个样式文件,不要一个大样式文件包含很多子组件样式
  2. 对于新写文件要求自己加文件注释 control + cmd + i
    后来发现,会经常造成冲突(停用)
  3. 文件命名
    1. 驼峰命名
    2. 组件名首字母大写

命名风格约束

常量HOME_PAGE大写+下划线
变量homePage驼峰
方法onSubmit驼峰
TS类型CourseData首字母大写+驼峰
css idmyCon驼峰
css类名home-page-con小写+短横/驼峰

注释书写

永远不要注释,除非你有充分的理由 -- 正确性?如何判断?

  1. 自定义方法 control + cmd + T(插件koroFileHeader) 逻辑复杂方法注释
  2. 对于不能很快理清思路的代码 -- 加注释
  3. 存在todo任务,但目前不影响业务 -- 加注释
  4. 语义化不强的变量/值 -- 加注释 的让人明白用这个东西做了什么
  5. ...

javaScript约束

字符串拼接

字符串拼接采用模版字符串``可读性更好

循环性能

双层循环 转Map - 单循环

javascript
let arrMap = new Map(arr.map(item => [item.label, item]))

循环绑定事件

事件委托

对于同级多个元素同时绑定事件时,进行事件委托

判断条件

??
````
sass
a ? a : 1   ===    a ?? 1
!!
javascript
!!a      // true false
&&
javascript
a && b   // 前真与反后
||
javascript
a || b  // 前真或返前
?.
``
javascript
obj?.a
三元
javascript
a ? 1 : 2

不做无用判断

javascript
if(checked.value !== undefined && checked.value?.length > 0) {}

函数封装

函数参数不宜太多

tip: 参数太多时,还需要关心顺序...

函数拆分

一个函数处理一个功能,

tips:当认为已经难以理解的时候,就是不得不拆的时候

函数封装

通用函数封装适当的,不要为了什么通用,兼容去无限处理参数

promise

promise.all使用要catch

await要考虑error

try catch / .catch / 兜底全局

防御编程

展示时最好做默认值

javascript
{data.rate? data.rate : '--'}    // 这样的默认值

考虑弱网、无网的页面展示与交互

考虑按钮的多次点击情况

VUE框架习惯

  1. 不要修改计算属性数据,能用计算属性数据的不要新建变量
  2. 定时器销毁
  3. 缓存复杂计算
  4. 懒加载
  5. 模态框销毁

工作中

  1. 语义化
    1. 起名字
    2. 长度很长的判断,尽量少用
  2. 复杂度
    1. 少用双层循环
  3. 方法尽量单独定义,不要用行内方法
  4. try catch 应用场景,不要滥用

made with ❤️ by ankang