代码规范:统一编码风格

318 阅读2分钟

VSCode 插件

Prettier

Prettier · Opinionated Code Formatter 是一款专业的代码格式化工具。它支持特别多的语言,诸如:JavaScript、JSX、Angular、Vue 等。

Prettier - Code formatter VSCode 插件能使我们不用通过 npm i -D prettier 便可使用。不过想要很好的使用插件我们需要对其进行配置。

{
  // 编辑器默认的格式化工具
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  // jsx 使用单引号包裹字符串
  "prettier.jsxSingleQuote": true,
  // js 使用单引号包裹字符串
  "prettier.singleQuote": true,
  // vue 的 script 和 style 标签内部缩进
  "prettier.vueIndentScriptAndStyle": false,
  // 尽可能控制尾随逗号的输出
  "prettier.trailingComma": "all",
  // 当箭头函数只有一个参数的时候加小括号包裹
  "prettier.arrowParens": "always",
  // 使用 LF 换行符
  "prettier.endOfLine": "lf",
  // js 对象的 key 是否使用引号包裹,仅在必要的时候,如:{ "unread-count": 12 }
  "prettier.quoteProps": "as-needed",
  // 指定代码的最佳长度,如果超出限制自动则换行
  "prettier.printWidth": 120,
  // 是否在行尾添加分号
  "prettier.semi": true,
  // 一个 tab 缩进的长度
  "prettier.tabWidth": 2,
  // 使用空格缩进
  "prettier.useTabs": false,
  // 大括号内部前后加空格
  "prettier.bracketSpacing": true,
  // 是否格式化引入的代码块
  "prettier.embeddedLanguageFormatting": "auto",
  // .js 文件的独立配置
  "[javascript]": {
    // 默认使用 Prettier 进行格式化代码
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    // 在保存文件的同时格式化文件
    "editor.formatOnSave": true,
    // 使用 2 个空格进行缩进
    "editor.tabSize": 2,
    "editor.insertSpaces": true,
    // 是否使用连字符,需要字体支持,如 Fira Code
    "editor.fontLigatures": true,
    "editor.fontFamily": "'Fira Code', Hack, monospace"
  },
  // .html 文件的独立配置
  "[html]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.formatOnSave": false,
    "editor.tabSize": 2,
    "editor.insertSpaces": true
  },
  // .css 文件的独立配置
  "[css]": {
    "editor.tabSize": 2,
    "editor.formatOnSave": false,
    "editor.insertSpaces": true
  },
  // .json 文件的独立配置
  "[json]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.tabSize": 2,
    "editor.insertSpaces": true
  },
  // .json (with comment) 文件的独立配置
  "[jsonc]": {
    "editor.defaultFormatter": "vscode.json-language-features"
  },
  // .vue 文件的独立配置
  "[vue]": {
    "editor.formatOnSave": true,
    "editor.tabSize": 2,
    "editor.insertSpaces": true,
    // 使用 Vetur 插件格式化
    "editor.defaultFormatter": "octref.vetur"
  },
  // .stylus 文件的独立配置
  "[stylus]": {
    "editor.tabSize": 2,
    "editor.insertSpaces": true,
    "gitlens.codeLens.scopes": [
      "document"
    ]
  }
}

ESLint

ESLint - Pluggable JavaScript linter 是专业的语法检查工具。它可以先指定一套规则,然后利用此规则来限定某些语法的使用。如:禁止使用 var 声明变量,这时 var foo = 1 就无法通过 ESLint 检查。ESLint VSCode 插件的作用是高亮出不符合限定规则的代码。项目中想要真正的使用 ESLint 还是需要使用 npm i -D eslint 进行安装。

我编写了一套规则上传到了 Github。大家如果想要尝试,可以通过 npm 进行安装:

npm i -D @netiler/eslint-config-netiler

然后配置 .eslintrc.js

module.exports = {
  extend: ['@netiler/netiler']
}

针对 Vue2:

module.exports = {
  extend: ['@netiler/netiler', '@netiler/netiler/vue']
}

针对 Vue3:

module.exports = {
  extend: ['@netiler/netiler', '@netiler/netiler/vue3']
}

Vetur

VeturVue 的官方插件,主要作用于 Vue2,使用 Vue3 的小伙伴可以安装 Volar 插件。

下面是我的 Vetur VSCode 插件配置:

{
  // template 标签不使用代码格式化工具(PS:找不到合适的插件,大部分插件格式化工具都会出现标签换行的问题)
  "vetur.format.defaultFormatter.html": "none",
  // script 标签内部使用 prettier 进行格式化
  "vetur.format.defaultFormatter.js": "prettier",
  // 格式化工具针对 vetur 的一些配置项
  "vetur.format.defaultFormatterOptions": {
    "prettier": {
      "singleQuote": true,
      "jsxSingleQuote": true,
      "trailingComma": "all",
      "vueIndentScriptAndStyle": false,
      "arrowParens": "always",
      "endOfLine": "lf",
      "quoteProps": "as-needed",
      "printWidth": 120,
      "semi": true,
      "tabWidth": 2,
      "useTabs": false,
      "bracketSpacing": true,
      "embeddedLanguageFormatting": "auto"
    }
  }
}