Vue3中eslint代码格式化prettier和standard规则比较(为什么推荐使用prettier)


Vue3中eslint代码格式化prettier和standard规则比较(为什么推荐使用prettier)

前言

在 vue-cli 创建项目时,对于 eslint 代码格式化一般我们会选 standard 或 prettier 方案,他们有什么区别和优缺点呢?

插件准备

eslint

使用 eslint 需要安装 eslint 插件,并在项目第一次打开时 allow 同意使用本机的 eslint :

prettier

使用 prettier 需要安装相应的插件:

依赖比较 - package.json

standard

  "devDependencies": { "@vue/cli-plugin-babel": "~4.5.0", // "@vue/cli-plugin-eslint": "~4.5.0", // "@vue/cli-service": "~4.5.0", // "@vue/compiler-sfc": "^3.0.0", // "@vue/eslint-config-standard": "^5.1.2", - "babel-eslint": "^10.1.0", // "eslint": "^6.7.2", // "eslint-plugin-import": "^2.20.2", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^4.2.1", - "eslint-plugin-standard": "^4.0.0", - "eslint-plugin-vue": "^7.0.0-0" // }

prettier

  "devDependencies": { "@vue/cli-plugin-babel": "~4.5.0", // "@vue/cli-plugin-eslint": "~4.5.0", // "@vue/cli-service": "~4.5.0", // "@vue/compiler-sfc": "^3.0.0", // "@vue/eslint-config-prettier": "^6.0.0", - "babel-eslint": "^10.1.0", // "eslint": "^6.7.2", // "eslint-plugin-prettier": "^3.1.3", - "eslint-plugin-vue": "^7.0.0-0", // "prettier": "^1.19.1" - }

我们发现 standard 有 5 个相关依赖,而 prettier 只有 3 个相关依赖。

eslint 配置比较 - .eslintrc.js

standard

  extends: [ 'plugin:vue/vue3-essential', // '@vue/standard' - ]

prettier

  extends: [ "plugin:vue/vue3-essential", // "eslint:recommended", - "@vue/prettier" - ]

相信大家也能理解因为 prettier 的规则比较少所以需要补配一个 eslint:recommended 推荐规则

代码格式化比较

配置 prettier

对比完了 package 依赖和 eslint 配置,下面我们对比实际代码格式化区别,在这之前需要对 prettier 进行手动配置。

在项目根目录下建立一个 prettier 配置文件 .prettierrc :

{ "semi": false, "singleQuote": true, "printWidth": 80 }

我们使用尤雨溪的配置,句尾不带分号 + 单引号。

格式化方法

配置好了 prettier ,我们还需要知道如何格式化代码。

  1. vscode 安装了 eslint 插件后,第一次进入项目选择 allow 允许使用本机 eslint 插件后,每次按 ctrl + s 可以进行格式化。

  2. vscode 安装了 prettier 插件后,在 settings.json 配置内配置对 vue 文件的格式化:

      "[vue]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }

    在 settings.json 配置之后,就可以在 .vue 文件内按 alt + shift + f 格式化按键进行代码格式化。

template 部分

standard

<template> <!-- 允许单双引号混用 × --> <div class='class-name'> text <!-- 不会对 props 格式化,允许杂乱排序 × --> <span class='span-class-name' ref="span" key="key" :class="data" v-if="data"> <!-- 对大括号内空格无要求,可乱加空格 × --> {{ text}} </span> </div> </template>

prettier

<template> <!-- 由于配置了 singleQuote ,统一为单引号,不允许单双引号混用 √ --> <div class="class-name"> text <!-- 会对 props 格式化,超过 printWidth 自动按列排序 √ --> <span class="span-class-name" ref="span" key="key" :class="data" v-if="data" > <!-- 统一大括号内空格 √ --> {{ text }} </span> </div> </template>

得分

standard:0

prettier:3

script 部分

standard

// import 按需导入要求大括号必须有左右空格 √ import { reactive } from 'vue' // 导入过多允许换行(必须手动) √ import { reactive, ref, toRefs, shallowRef, computed, watch, setup } from 'vue' export default { methods: { // 函数后必须有空格,if 等语句同理 × test () { const test = 'test' console.log(test) // 允许 array 内 object 自由的换行机制 √ // array 首尾中括号前后自由换行 × const list = [ { key: 'value' }, { key: 'value' }] // 允许小括号内自由的换行 √ const data = reactive( { key: 'value' } ) // object 内允许自由的换行( return { data, list } 也可) √ return { data, list } } } }

prettier

// import 按需导入要求大括号必须有左右空格 √ import { reactive } from 'vue' // 导入过多自动换行 √ import { reactive, ref, toRefs, shallowRef, computed, watch, setup, shallowReactive } from 'vue' export default { methods: { // 函数后不可有空格,if 等语句同理 √ test() { const test = 'test' console.log(test) // 允许 array 内 object 自由的换行机制 √ // array 首尾中括号前后必须换行 √ const list = [ { key: 'value' }, { key: 'value' } ] // 在不超过 printWidth 时不允许自动换行,小括号也不允许手动换行(换行是无意义的) √ const data = reactive({ key: 'value' }) // object 内允许自由的换行( return { data, list } 也可) √ return { data, list } } } }

得分

standard:5

prettier:7

总结

总的来看,强烈推荐使用 prettier 进行代码格式化。

不光是美观,在 vscode 内如果使用 standard 进行代码规范,只能使用 ctrl + s,而不能使用 alt + shift + f ,这就导致很多其他边界情况无法格式化。

而当使用 prettier 时,alt + shift + f 使用了 prettier 插件按 .prettierrc 配置进行格式化,同时 ctrl + s 也会依据 prettier 配置进行格式化,是一致通用的。

希望以后不要自找麻烦使用 standard 或者其他 eslint 了,学习尤雨溪使用 prettier 不香吗


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM