前言

JavaScript的动态语言类型,给它带来了独特的魅力,产生了风格多样的开发范式,同时也带来了一些问题,从运行时常见的 undefined 、null 报错,到代码随意的加减分号、换行、空格,引起的视觉混乱,如果是团队开发,则这种情况会更加的严重,必须加以约束,下文介绍基于 vue 的代码严格模式及编程规范。
 
核心插件: Eslintstandard

Eslint 是什么?

ESLint最初是由Nicholas C. Zakas 于2013年6月创建的开源项目。它的目标是提供一个插件化的javascript代码检测工具。与它类似的项目有 JSLint、JSHint。
 
使用 ESLint 可以保证代码的一致性和避免错误,接下来介绍 ESLint 的使用。

ESLint 的安装与配置

一、vue-cli3 初始化引入ESLint
如果是用 vue-cli3 初始化搭建项目,可以在命令行中执行 vue ui 打开vue-cli3 新增的图形化界面,以创建和管理项目;默认是配置了 babel + eslint ,也可以手动执行项目配置以引入更多特性,如router、vuex 、scss、typescript、unit测试、e2e测试;
 
如果是后期引入 ESLint,则需要手动安装下图所示的几个与 ESLint 相关的插件,安装指令为
  1. vue add @vue/eslint
提示: vue add 的设计意图是为了安装和调用 Vue CLI 插件。对于普通的 npm 包而言,这不意味有一个替代(命令)。对于这些普通的 npm 包,你仍然需要(根据所选的 npm 包)使用包管理器。
 
vue add @eslint 会依次执行安装和调用两条命令,并智能生成需要的配置文件,可能会修改项目当前文件内容,所以在运行 vue add 前,需要先保存提交下项目当前状态;vue add 的好处在于,可以调用 vue cli 插件,比如我只是执行了 vue add @vue/eslint 一条指令,安装后根据命令行的提示,会帮助你匹配安装剩下的所有 eslint 配置,而不需要自己再一条条安装了。
 
安装完成后,可以在根目录发现多了一个 .eslintrc.js 文件,这是 eslint 的配置文件,可以配置自定义规则(rules)等。
 
二、通用项目引入 ESLint
如果项目不是基于vue-cli3 或者 vue,则需要以 npm 包管理器安装 eslint,安装完成后在 ./node_modules/.bin/ 目录下执行 eslint --init 命令,根据指引生成所需的 eslint 配置方案;这里可以选择应用于 vue 或者其它例如 react 项目。
 
  1. npm install eslint --save-dev // 安装并保存到项目开发依赖
  2. ./node_modules/.bin/eslint -- --init // 初始化命令
 
 
安装完成后,可以在 package.json 的 script 中配置 lint 命令,以执行eslint 校验。
 
  1. "lint": "vue-cli-service lint" //基于vue-cli3
  2. "lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs" // 非vue-cli3 

编码规范 Standard 的安装与使用

应用了 ESLint 后,通常是需要自己来配置繁杂的 rules 规则,这也是一个喜好类的东西,多数人是不愿意在这上面耗费太多精力的(比如手动配置数百个ESLint 规则),于是github 上出现了一些开源的代码规范库,比较流行的有 airbnb、standard、prettier等,下面介绍下 standard
 

在 vue 中的使用方式:

在 vue 中通常需要和 ESLint 一起使用,上面讲到 ESLint 时候有注意到么,ESLint 初始化指令中有一个选择开源编码规范的指令,系统默认是有 standard 的选项的,直接选择就可以了。

 

常见问题

1、配置了 ESLint + standard 但是不生效?
在项目根目录里找到 .eslintrc.js 文件,注意 extends 和 plugins 属性是否配置,下图的extends 代表 ESLint 继承了standard 的编码规范。
 
2、只是 .js 文件生效了, .vue 文件没有效果 ?
.vue 文件的校验,需要注意你的 package.json 是否安装了 eslint-plugin-html 插件,并且在 .eslintrc.js 中配置了 plugins;
 
如果是用 vscode 编辑器开发,需安装 ESLint、Vetur 这两个 vscode 插件,并在 设置 =》 settings.json 文件中添加以下配置,然后重启下 vscode,即可生效。
 
  1. "files.associations": {
  2. "*.vue": "vue"
  3. },
  4. "eslint.autoFixOnSave": true,
  5. "eslint.validate": [
  6. "javascript",
  7. "javascriptreact",
  8. {
  9. "language": "vue",
  10. "autoFix": true
  11. },"html","vue"
  12. ]

  

3、配置了 standard 后,还能自定义 rules 吗?
standard 本身是不赞成这样做的,如果你一定要使用 standard 并需要对其中某些规则进行自定义的话,你需要使用 eslint-config-standard,当然, 在上面我们执行的 ESLint init 指令安装的配置中,就是以这种形式使用standard 的。
 

总结

本文介绍了用于前端编码规范、代码质量管理的几个开源方案,搭建了基于 vue 的 ESLint + standard 方案,及对实际使用当中可能遇到的问题,进行了记录。

 

参考链接

使用 Eslint & standard 规范前端代码的更多相关文章

  1. 规范的web前端代码

    web前端的代码规范主要针对的是HTML,CSS和javaScript代码. 前端代码规范在不同场合会有差异,但是规范的前端代码应该具有以下特征: 1.符合标准 所谓的标准是指W3C指定的web标准, ...

  2. eslint+prettier+husky+lint-staged 统一前端代码规范

    eslint+prettier+husky+lint-staged 统一前端代码规范 遵循编码规范和使用语法检测,可以很好的提高代码的可读性,可维护性,并有效的减少一些编码错误. 1.终极目标 团队中 ...

  3. vscode保存代码,自动按照eslint规范格式化代码设置

    # vscode保存代码,自动按照eslint规范格式化代码设置 编辑器代码风格一致,是前端代码规范的一部分.同一个项目,或者同一个小组,保持代码风格一致很必要.就拿vue项目来说,之前做的几个项目, ...

  4. 使用ESLint+Prettier来统一前端代码风格

    Prettier 简单使用 ESLint 与 Prettier配合使用 首先肯定是需要安装 prettier ,并且你的项目中已经使用了 ESLint ,有 eslintrc.js 配置文件. npm ...

  5. web前端代码规范 - HTML代码规范

    Bootstrap HTML编码规范 本文转载自w3cschool. 由于bootstrap得到了世界的认可,因此,此规范用于规范html代码有一定的说服力. 交流qq群:164858883.欢迎各位 ...

  6. Web 前端代码规范

    Web 前端代码规范 最后更新时间:2017-06-25 原始文章链接:https://github.com/bxm0927/web-code-standards 此项目用于记录规范的.高可维护性的前 ...

  7. 按照eslint 规范写代码 [eslint] 'flag' is assigned to itself. (no-self-assign)

    按照eslint 规范写代码 [eslint] 'flag' is assigned to itself. (no-self-assign)

  8. 我和我的广告前端代码(四):后台系统中,初尝vue、vue-cli

    有一段都在重构之前文章<我和我的广告前端代码(三):一次重来的机会,必要的技术选型>中提到的广告前台展示项目,原有的基于页面的请求,改成了单广告位请求在这个过程中经历了好几次架构变更以及项 ...

  9. react 使用 eslint 的三种代码检查方案总结,多了解点--让代码更完美....

    1.介绍 ESLint 是一个可扩展,每条规则独立,被设计为完全可配置的lint工具. 可以用来检测代码,避免低级错误 可以用来规范代码的开发风格,统一代码习惯. 2.为什么使用 ESLint ? 统 ...

随机推荐

  1. python相关,各种命令集合

    PS: cmd必须管理员身份运行 python版本 2.7  可能会出现编码问题:在 Lib/site-packages 新建文件 sitecustomize.py import sys  sys.s ...

  2. 求平方根算法 Heron’s algorithm

    求平方根问题 概述:本文介绍一个古老但是高效的求平方根的算法及其python实现,分析它为什么可以快速求解,并说明它为何就是牛顿迭代法的特例. 问题:求一个正实数的平方根. 给定正实数 \(m\),如 ...

  3. Django之ORM-model模型关系

    模型类关系 1)一对多关系例:图书类-英雄类 models.ForeignKey() 定义在多的类中. 2)多对多关系例:新闻类-新闻类型类 体育新闻 国际新闻models.ManyToManyFie ...

  4. PySpark SQL 相关知识介绍

    title: PySpark SQL 相关知识介绍 summary: 关键词:大数据 Hadoop Hive Pig Kafka Spark PySpark SQL 集群管理器 PostgreSQL ...

  5. 马蜂窝视频编辑框架设计及在 iOS 端的业务实践

    (马蜂窝技术公众号原创内容,ID: mfwtech) 熟悉马蜂窝的朋友一定知道,点击马蜂窝 App 首页的发布按钮,会发现发布的内容已经被简化成「图文」或者「视频」. 长期以来,游记.问答.攻略等图文 ...

  6. CentOS -- RocketMQ HA & Monitoring

    RocketMQ Architecture NameServer Cluster Name Servers provide lightweight service discovery and rout ...

  7. Javaweb Cookie机制

    Javaweb Cookie机制 一.前言 HTTP协议是一种无状态的协议,WEB服务器本身不能识别出哪些请求是同一个浏览器发出的 ,浏览器的每一次请求都是完全孤立的,即使 HTTP1.1 支持持续连 ...

  8. Kubernetes 入门必备云原生发展简史

    作者|张磊 阿里云容器平台高级技术专家,CNCF 官方大使 "未来的软件一定是生长于云上的"这是云原生理念的最核心假设.而所谓"云原生",实际上就是在定义一条能 ...

  9. 洛谷 P2341 【受欢迎的牛】

    题库:洛谷 题号:2341 题目:受欢迎的牛 link:https://www.luogu.org/problemnew/show/P2341 思路:因为奶牛的爱慕关系具有传递性,所以每个环(强连通分 ...

  10. Photoshop软件破解补丁安装方法

    参考: http://jingyan.baidu.com/article/454316ab4b3266f7a6c03a7d.html 1.安装好photoshop之后,解压32位64位破解补丁.zip ...