vue 学1(cp) Eslint 配置及规则说明(报错)

https://blog.csdn.net/violetjack0808/article/details/72620859

https://blog.csdn.net/hsl0530hsl/article/details/78594973

Vue.js学习系列五 —— 从VUE-CLI来聊聊ESLint

原创 2017年05月22日 06:40:41

  • 7092

最近在用vue-cli写项目的时候,经常和ESLint打交道,也算是不打不相识啦。下面总结一下在学习Vue的时候遇到的一些问题。

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()
  • 1

2. Strings must use singlequote

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

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

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来规范代码编辑~

Vue.js学习系列

作者最近正在学习Vue的各种知识,希望能够系统的掌握Vue的开发知识。有兴趣的同学可以查看之前发布的文章: 
Vue.js学习系列一 —— vue-router2学习实践笔记(附DEMO) 
Vue.js学习系列二 —— vuex学习实践笔记(附DEMO) 
Vue.js学习系列三——axios和网络传输相关知识的学习实践 
Vue.js学习系列四——Webpack打包工具的使用 
Vue.js学习系列五 —— 从VUE-CLI来聊聊ESLint

原文地址:https://www.cnblogs.com/dianzan/p/8635390.html

时间: 2024-08-29 09:34:24

vue 学1(cp) Eslint 配置及规则说明(报错)的相关文章

ThinkPHP pdo连接Oracle的配置写法,提示报错

'DB_TYPE' => 'pdo', // 数据库类型 'DB_USER' => 'user101', // 用户名 'DB_PWD' => '[email protected]#$%', // 密码 'DB_PREFIX' => 'TB_', // 数据库表前缀 'DB_DSN' => 'oci:dbname=127.0.0.1:1158/orcl;charset=utf8', ThinkPHP 3.2.2 连接Oracle 的配置写法,结果提示内容: 由于目前PDO暂时

MyEclipse10+Flash Builder4+BlazeDS+Tomcat7配置J2EE Web项目报错(一)

1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help | start | stop } 2014-6-23 20:15:55 org.apache.catalina.core.AprLifecycleListener init 信息: Loaded APR based Apache Tomcat Native library 1.1.29 using

LAMP之PHP安装 配置jpeglib 依赖库报错解决方法

问题显现 配置 php参数时> --with-jpeg-dir \ configure: WARNING: you should use --build, --host, --targetconfigure: WARNING: invalid host type: checking for grep that handles long lines and -e... /bin/grepchecking for egrep... /bin/grep -Echecking for a sed tha

VUE.JS 使用axios数据请求时数据绑定时 报错 TypeError: Cannot set property &#39;xxxx&#39; of undefined 的解决办法

正常情况下在data里面都有做了定义 在函数里面进行赋值 这时候你运行时会发现,数据可以请求到,但是会报错 TypeError: Cannot set property 'listgroup' of undefined 主要原因是: 在 then的内部不能使用Vue的实例化的this, 因为在内部 this 没有被绑定.可以看下 Stackoverflow 的解释: 解决办法: 1.用ES6箭头函数,箭头方法可以和父方法共享变量 2.在请求axios外面定义一下 var that=this 问题

Cannot find class: ${jdbc.driver}——配置了sqlSessionFactoryBeanName也报错之问题分析

MyBatis中一个sqlSessionFactory代表一个数据源,那么配置多个数据源只需要注入多个sqlSessionFactory即可. 首先需要说明的是,用mybatis-spring-1.1.0貌似无法配置多个数据源(这里说的不对,应该是无法在配置数据源中使用${..}占位符),这里大概折腾了我一整天的时间.后来才想到可能是版本问题,于是换了最新的1.2.2版,问题就迎刃而解了. 下面记录一下分析这个问题的过程: 首先我在Spring的配置文件中配置了org.springframewo

struts2 ,web.xml中配置为/*.action,运行报错Invalid &lt;url-pattern&gt; /*.action in filter mapp

首先,修改成: <filter-mapping>  <filter-name>struts2</filter-name>  <url-pattern>/*</url-pattern></filter-mapping> 是可以的. 引起此错误的原因如下: 这个对filter的基础知识的理解:容器只认 全名匹配,路径匹配,扩展名匹配./*.action  又是路径匹配,有时扩展名匹配. 容器没办法区分 解决方法:写*.action <

spring 管理事务配置时,结果 报错: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here这个异常

java.lang.IllegalStateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here这个异常 这个错误,网上说的原因一大推,反正我这个出的问题 是因为 虽然我在 spring 里把事务都配置好了,结果运行就出现这个错误,看看配置都没什么问题,都是网上 案例 照 写编码的,还是错的,结果发现是因为 我

为什么基于Windows Server 2008 R2的网络负载均衡(NLB)配置的时候总会报错&ldquo;主机不可访问&rdquo;?

配置基于Windows的网络负载均衡是很容易的,操作也很简单,点点鼠标基本上就能完成,但是在进行节点(真实服务器)操作的过程中有时候会遇到一些主机不可访问的报错信息.这个又是为什么呢? Figure 1在其中一台节点上配置好了NLB后刷新一次就是报错一次,让人用的很不踏实呢 出错时候会在描述里面呈现[主机不可访问.连接到"XXX主机名"时出错]. 在Windows里面和主机名有关的一些网络设置有DNS解析.WINS解析,本地HOSTS文件解析这几种. 由于所在环境没有内网的DNS以及W

linux===启动sdk manager下载配置sdk的时候报错的解决办法

当启动sdk manager下载配置sdk的时候,报错如下: [email protected]:/opt/android-sdk-linux/tools$ sudo  ./android update sdk./android: 1: ./android: java: not found./android: 1: ./android: java: not found./android: 110: exec: java: not found 解决办法如下: https://stackoverfl