vue-cli的eslint相关用法


Posted in Javascript onSeptember 29, 2017

ESLint简介

关于ESLint的介绍网上很多,这里就简单说些有用的。

ESLint的作用是检查代码错误和统一代码风格的。由于每个人写代码的习惯都会有所不同,所以统一代码风格在团队协作中尤为重要。

vue-cli的eslint相关

vue-cli在init初始化时会询问是否需要添加ESLint,确认之后在创建的项目中就会出现.eslintignore和.eslintrc.js两个文件。

  • .eslintignore类似Git的.gitignore用来忽略一些文件不使用ESLint检查。
  • .eslintrc.js是ESLint配置文件,用来设置插件、自定义规则、解析器等配置。

.eslintrc.js

// http://eslint.org/docs/user-guide/configuring

module.exports = {
 root: true,
 parser: 'babel-eslint',
 parserOptions: {
  sourceType: 'module'
 },
 env: {
  browser: true,
 },
 // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
 extends: 'standard',
 // required to lint *.vue files
 plugins: [
  'html'
 ],
 // add your custom rules here
 'rules': {
  // allow paren-less arrow functions
  'arrow-parens': 0,
  // allow async-await
  'generator-star-spacing': 0,
  // allow debugger during development
  'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
 }
}

解析器(parser):使用了babel-eslint,这个可以在package.json中找到,说明我们已经安装过该解析器了。

环境配置(env):在浏览器中使用eslint。

继承(extends):该配置文件继承了standard规则,具体规则自己看文档,看不懂有中文版的。

规则(rules):对于三个自定义规则,我特地查了官方文档。

  • arrow-parems 允许箭头函数参数使用括号,具体操作请看文档
  • generator-star-spacing 允许方法之间加星号,如function * generator() {}。文档在此。特地查了下,发现这是ES6提供的生成器函数,回头学习下。
  • no-debugger' 允许在开发环境下使用debugger。这个比较简单,不过还是贴下文档便于查看。

注意:在rules中每个配置项后面第一个值是eslint规则的错误等级。

* “off” 或 0 - 关闭这条规则
* “warn” 或 1 - 违反规则会警告(不会影响项目运行)
* “error” 或 2 - 违反规则会报错(屏幕上一堆错误代码~)

遇到过的问题

由于一开始我不了解ESLint就写项目,不知道要看Standard的文档,所以遇到了很多ESLint的错误和警告,分享下希望能对朋友们有帮助。

1. Do not use ‘new' for side effects

该错误是由于我删除了/* eslint-disable no-new*/这段注释引发的,/* eslint-disable */这段注释的作用就是不让eslint检查注释下面的代码。

new Vue({
 el: '#app',
 router,
 template: '<App/>',
 components: { App }
})

错误原因:不可以直接new一个新对象,需要将新对象赋值给一个变量。

var vm = new Vue()

2. Strings must use singlequote

错误原因:字符串必须用单引号

return {
   msg: "Welcome to Your Vue.js App", //双引号,报错!
  }

3. Expected space(s) after “return”

错误原因:括号两侧必须要有空格隔开

return{// 没有空格报错
 msg: 'Welcome to Your Vue.js App', 
}

startClock (){} //){中间没有空格,报错!

4. Expected indentation of 8 spaces but found 6

错误原因:使用两个空格进行缩进。

if (this.IntervalID === '') {
   this.IntervalID = setInterval(this.countDown, 1000)
   }

其实ESLint的报错并不难懂,只要理解错误原因还是很好解决的。如果提前看看文档,更不会出现太多报错问题了。这个故事告诉我们看文档是很重要滴~%>_<%

Tips

发现ESLint的报错都会在报错语句前面显示一个URL,点击进去可以看到详细的错误信息哦。这是我刚在写博客的时候发现的。

http://eslint.org/docs/rules/no-new Do not use 'new' for side effects 
 E:\Github\EfficiencyTools\EfficiencyTool-VueMobile\src\main.js:15:1
 new Vue({

这里的 http://eslint.org/docs/rules/no-new 就是ESLint规则报错的原因,还是很人性化的。

总结

其实vue-cli的ESLint不需要我们配置太多,基本的都配置好了,如果你愿意完全可以照着vue-cli提供的规则去写代码。当我们需要修改一些规则的时候添加到rules中替换原有规则就可以了。一开始用ESLint写代码很烦,经常由于一些格式问题调试报错,让回去改格式。不过慢慢的就会发现使用ESLint之后代码的确可读性、美观性上都好了很多。
推荐使用ESLint来规范代码编辑~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
一种JavaScript的设计模式
Nov 22 Javascript
juqery 学习之五 文档处理 插入
Feb 11 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
Mar 12 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
Feb 24 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
Jul 01 Javascript
关于Iframe父页面与子页面之间的相互调用
Nov 22 Javascript
angularjs使用directive实现分页组件的示例
Feb 07 Javascript
还不懂递归?读完这篇文章保证你会懂
Jul 29 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
Apr 17 Javascript
微信小程序在其他页面监听globalData中值的变化
Jul 15 Javascript
countup.js实现数字动态叠加效果
Oct 17 Javascript
JS前端轻量fabric.js系列之画布初始化
Aug 05 Javascript
JavaScript数组的5种迭代方法
Sep 29 #Javascript
微信小程序之GET请求的实例详解
Sep 29 #Javascript
js仿微信抢红包功能
Sep 25 #Javascript
给vue项目添加ESLint的详细步骤
Sep 29 #Javascript
微信小程序 POST请求的实例详解
Sep 29 #Javascript
微信小程序之数据缓存的实例详解
Sep 29 #Javascript
微信小程序getPhoneNumber获取用户手机号
Sep 29 #Javascript
You might like
博士208HAF收音机实习报告
2021/03/02 无线电
php 设计模式之 单例模式
2008/12/19 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
freemarker判断对象是否为空的方法
2015/08/13 Javascript
学习JavaScript设计模式(继承)
2015/11/26 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
javascript合并表格单元格实例代码
2016/01/03 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
JS中常用的正则表达式
2016/09/29 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
babel之配置文件.babelrc入门详解
2018/02/22 Javascript
vue配置font-awesome5的方法步骤
2019/01/27 Javascript
vue+php实现的微博留言功能示例
2019/03/16 Javascript
js设计模式之代理模式及订阅发布模式实例详解
2019/08/15 Javascript
JavaScript实现多文件下载方法解析
2020/08/07 Javascript
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
Python使用turtle库绘制小猪佩奇(实例代码)
2020/01/16 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
详解CSS3伸缩布局盒模型Flex布局
2018/08/20 HTML / CSS
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
JENNIFER BEHR官网:各种耳环和发饰
2020/06/07 全球购物
伊莱克斯(Electrolux)俄罗斯网上商店:瑞典家用电器品牌
2021/01/23 全球购物
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
市场营销专业毕业生自荐信
2013/11/02 职场文书
酒店管理求职信范文
2014/04/06 职场文书
十八大演讲稿
2014/05/22 职场文书
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
授权委托书公证
2014/09/14 职场文书
区政府领导班子个人对照检查材料
2014/09/25 职场文书
房屋维修申请报告
2015/05/18 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL
详解Python为什么不用设计模式
2021/06/24 Python