前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript 代码风格检测

JavaScript 代码风格检测

作者头像
Nian糕
修改2024-03-19 15:11:17
1.1K0
修改2024-03-19 15:11:17
举报
文章被收录于专栏:JavaScript高阶应用
Unsplash
Unsplash

在日常开发中,每个人的代码编写习惯都不尽相同,比如有的人喜欢在代码末尾加上分号,而有的人不喜欢加,在个人开发的项目中这并不是什么严重问题。但在团队协作开发时,我们往往需要阅读其他人所写的代码,此时没有一个统一完整的代码规范,无法有效的控制代码质量,进而影响团队的开发效率。通过引入代码规范工具,可以帮助我们保障一个团队的代码风格相同,并且能能避免一些因为格式上的问题,而出现的低级错误

在新建 Vue 项目过程中,我通常会勾选 ESLint + Prettier 作为项目的语法检查方式,Prettier 是业界主流的代码风格格式化工具,不仅支持多种主流语言,还提供了各大 IDE 和编辑器插件,能够根据用户所配置的规则,重新打印出符合格式规范的代码,或许大家已经注意到,ESLint 也具有语法风格检查功能,既然如此,为何还要引入 Prettier 呢?

确实在代码格式化方面,Prettier 和 ESLint 有所重叠,不过它们的侧重点不同,ESLint 的主要工作就是检测出代码中的潜在问题,并给出相应的提示,比如使用了某个变量却忘记定义,在格式化功能上却很有限,我们来看下面这个例子

代码语言:javascript
复制
methods: {
    say() {
        let number = 1;
    }

}

通过 ESLint 的检查,可以检测到:① number 为常量,应该使用 const 进行声明;② number 在声明之后没有使用。这就是 ESLInt 能为我们所做的所有事情,对于倒数第二行的空行,就显得心有余而力不足了,这时候就轮到 Prettier 登场了,Prettier 能够在我们保存代码时,自动删除倒数第二行的空行。所以,ESLint 主要还是负责校验代码是否符合规范,而代码的风格则由 Prettier 进行调整,两者分工不同,需要配合使用

既然我们已经了解到 ESLint 和 Prettier 各自的优势了,那又该如何使用?或许有同学会有疑问,在项目初始化的时候,不是已经引入这两个 Node 模块了吗?直接使用不就可以了吗?确实如此,代码格式错误的提醒、代码格式处理确实能通过 npm 或者通过 webpack 打包的时候去操作,但这里建议大家通过 IDE 或编辑器去操作,这样会比较方便,接下来的步骤会比较繁琐,需要大家按照顺序并细心做好每一步

配合 VS Code 插件使用

这里只介绍 VS Code 的配置方法,而使用 IDE 和其他编辑器的同学可参考并自行配置,首先打开 VS Code 的插件市场,搜索并安装以下插件——Vetur、ESLint、Prettier-Code formatter,待安装完成之后,重启下 VS Code 避免插件不生效

Vetur 插件除了支持 .vue 文件语法高亮、语法补全之外,其默认代码风格化使用的是 Prettier,我们只需要按一下快捷键 Shift + Option + F(Win 快捷键为Shift + Alt + F)即可快速格式化代码

除此之外,我们还可以通过快捷键 Command + ,(Win 快捷键为 Ctrl + ,)开启 VS Code 的 setting.json 文件,搜索 editor.formatOnSave 配置项,将其取值改为 true,就能在保存的时候进行自动排版了

ESLint 插件和 Prettier 插件会自动检索项目根目录下的 .eslintrc.js 文件和 .prettierrc.js 文件,根据配置文件里的规则设置进行代码检查,而这两个文件的基础配置 Vue-Cli 3 已经帮我们配置好了,我们需要做的,就是依据自己的代码风格,在配置文件中添加相应的规则

规则配置

ESLint 的配置多达上百条,为了方便大家更容易的配置出自己心目中的规则,建议大家参考腾讯 AlloyTeam 团队的 ESLint 配置规则,打开 .eslintrc.js 文件,在 rules 里添加强制使用单引号和结尾不能使用分号两条规则,具体代码如下所示:

代码语言:javascript
复制
// .eslintrc.js
module.exports = {
  root: true,
  env: {
    node: true
  },
  extends: ["plugin:vue/essential", "@vue/prettier"],
  rules: {
    "no-console": process.env.NODE_ENV === "production" ? "error" : "off",
    "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off",
    //强制使用单引号
    quotes: ["error", "single"],
    //强制不使用分号结尾
    semi: ["error", "never"]
  },
  parserOptions: {
    parser: "babel-eslint"
  }
};

随后我们打开 .prettierrc.js 文件,如果项目中没有该文件,在根目录新建一个即可,随后添加使用单引号和结尾不加分号两条规则,具体代码如下所示:

代码语言:javascript
复制
// .prettierrc.js
module.exports = {
  //使用单引号
  singleQuote: true,
  //结尾不加分号
  semi: false
}

规则修改之后,如果项目正在运行,记得重新 npm run serve 一下,或许大家已经注意到了,我们在 ESLint 中定义的规则是强制使用单引号,而 Prettier 格式化的时候,会将所有单引号转换为双引号,这就和 ESlint 定义的校验规则冲突了

解决的方法也很简单,那就是把 ESLint 的规则配置里也配置和 Prettier 相同的规则,而更好的做法是,不需要在 ESLint 里设置风格化的规则,全都交给 Prettier 去做

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配合 VS Code 插件使用
  • 规则配置
相关产品与服务
Prowork 团队协同
ProWork 团队协同(以下简称 ProWork )是便捷高效的协同平台,为团队中的不同角色提供支持。团队成员可以通过日历、清单来规划每⽇的工作,同时管理者也可以通过统计报表随时掌握团队状况。ProWork 摒弃了僵化的流程,通过灵活轻量的任务管理体系,满足不同团队的实际情况,目前 ProWork 所有功能均可免费使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档