nodejs环境使用jshint

一、概述
jshint是检测JavaScript语法问题的工具,可以根据自己的需要配置检测规则。

二、安装
npm install jshint -g
一般全局安装就可以了,可以在任何目录下使用jshint命令。

三、简单的使用方法
1、检测单个js文件语法
在myfile.js所在的目录运行:
jshint myfile.js
2、检测当前目录及其子目录所有js文件的语法
jshint ./

四、配置文件
有以下三种方法设置jshint配置文件
1、使用 –config 选项指定配置文件
Example:
jshint –config ./aaa ./
表示检测当前目录内所有的js文件,并指定配置文件为当前目录下的aaa文件。
2、使用 .jshintrc 文件,如果在运行jshint是,如果没有–config 选项,则会以当前目录的.jshintrc文件为配置文件,如果当前目录没有这个文件,则以其父目录.jshintrc 文件配置文件,仍没有的话,则继续找其父目录,直至根目录。
3、在nodejs项目的package.json文件的jshintConfig字段中设置配置文件。

五、内嵌配置
除了使用配置文件配置检测规则外,还可以在js文件内,使用特殊的注释,配置检测规则。
Example:
/* jshint undef: true, unused: true */
/* global MY_GLOBAL */
或者
// jshint undef: true, unused: true
这两种注释方式都是可以的,其中global参数告诉JSHint,该变量是全局变量,从其他js引入的。而且这些注释的作用域是函数内,这意味着如果你把这段注释放在某个函数内,则该配置只在该函数内起作用。

六、JSHint的配置选项
asi
如果是真,JSHint会无视没有加分号的行尾,
自动补全分号一直是Javascript很有争议的一个语法特性。默认,JSHint会要求你在每个语句后面加上分号,但是如果你认为自己理解了asi(automatic semicolon insertion),你可以抛弃JSHint对分号的检查。

bitwise
如果为真,JSHint会禁用位运算符
Javascript允许位运算,但是他却没有整型,位运算符要把参与运算的数字从浮点数变为整数,并在运算后再转换回来。这样他们的效率就不如在别的语言中那么高。

boss
很霸气的选项,如果为真,那么JSHint会允许在if,for,while里面编写赋值语句。
一般来说,我们会在循环、判断等语句中加入值的比较来做语句的运行条件,有时候会把==错写成赋值的=,通常,JSHint会把这个认定为一个错误,但是开启这个选项的化,JSHint就不会检查判断条件中的赋值 ,你是boss,你说的算:)。

curly
如果为真,JSHint会要求你在使用if和while等结构语句时加上{}来明确代码块。
Javascript允许在if等结构语句体只有一句的情况下不加括号。不过这样做可能会让你的代码读起来有些晦涩。

debug
如果为真,JSHint会允许代码中出现debugger的语句。不过建议你最好在检测代码前去掉debug的语句。

eqeqeq
如果为真,JSHint会看你在代码中是否都用了===或者是!==,而不是使用==和!=。
我们建议你在比较0,”(空字符),undefined,null,false和true的时候使用===和!===。

eqnull
如果为真,JSHint会允许使用”== null”作比较。
== null 通常用来判断一个变量是undefined或者是null(当时用==,null和undefined都会转化为false)。

evil
如果为真,JSHint会允许使用eval
eval提供了访问Javascript编译器的途径,这有时很有用,但是同时也对你的代码形成了注入攻击的危险,并且会对debug造成一些困难。
记住,Function构造函数也是另一个‘eval’,另外,当传入的参数是字符串的时候,setTimeout和setInterval也会类似于eval。

forin
如果为真,那么,JSHint允许在for in 循环里面不出现hasOwnProperty,
for in循环一般用来遍历一个对象的属性,这其中也包括他继承自原型链的属性,而hasOwnProperty可以来判断一个属性是否是对象本身的属性而不是继承得来的。

immed
如果为真,JSHint要求匿名函数的调用如下:
(function(){
//
}());
而不是
(function(){
//bla bla
})();

laxbreak
如果为真,JSHint则不会检查换行。
Javascript会通过自动补充分号来修正一些错误,因此这个选项可以检查一些潜在的问题。

maxerr
设定错误的阈值,超过这个阈值jshint不再向下检查,提示错误太多。

newcap
如果为真,JSHint会要求每一个构造函数名都要大写字母开头。
构造器是一种使用new运算符来创建对象的一种函数,new操作符会创建新的对象,并建立这个对象自己的this,一个构造函数如果不用new运算符来运行,那么他的this会指向全局对象而导致一些问题的发生。

noarg
如果为真,JSHint会禁止arguments.caller和arguments.callee的使用
arguments对象是一个类数组的对象,它具有一个索引值。arguments.callee指向当前执行的函数(这个在ES5的严格模式中被禁用了),而arguments.caller指向调用当前函数的函数(如果有的话),并且,他并不是在所有的Javascript实现里面都有。

noempty
如果为真,JSHint会禁止出现空的代码块(没有语句的代码块)。
如果为真,JSHint会禁用构造器,以避免一些问题。
在JSLint中会主动禁用构造器的方式以避免一些潜在问题,但其实很多构造器的使用并非有害,例如如下的调用
new JsUIWindow();
//注意这个调用是没有把构造器的结果赋值给变量的
因此,我们需要使用构造器的时候可以禁用这个选项。

nomen
如果为真,JSHint会禁用下划线的变量名。
很多人使用_name的方式来命名他们的变量,以说明这是一个私有变量,但实际上,并不是,下划线只是做了一个标识。
如果要使用私有变量,可以使用闭包来实现。

onevar
如果为真,JSHint期望函数只被var的形式声明一遍。

passfail
如果为真,JSHint会在发现首个错误后停止检查。

plusplus
如果为真,JSHint会禁用自增运算和自减运算
++和–可能会带来一些代码的阅读上的困惑。

regexp
如果为真,JSHint会不允许使用.和[^…]的正则,
因为这样的正则往往会匹配到你不期望的内容,并可能会应用造成一些危害。

undef
如果为真,JSHint会要求所有的非全局变量,在使用前都被声明。
如果你不在一个本地作用域内使用var的方式来声明变量,Javascript会把它放到全局作用域下面。这样会很容易引起错误。

sub
如果为真,JSHint会允许各种形式的下标来访问对象。
通常,JSHint希望你只是用点运算符来读取对象的属性(除非这个属性名是一个保留字),如果你不希望这样可以关闭这个选项。

strict
如果为真,JSHint会要求你使用use strict;语法。
Strict 模式是ES5里面的一个新特性,他允许你把一个程序或者函数放在一个“严格”的作用域中。可见Resig写的一篇关于严格模式的blog
严格模式做了几件事情,
1、他可以捕获一些错误和异常
2、当我们进行一下“不安全”的操作时,他会抛异常,例如访问全局变量。
3、他会禁止你使用一些奇淫技巧,或者不良的代码编写。

white
如果为true,JSHint会依据严格的空白规范检查你的代码。

时间: 2024-10-08 10:14:21

nodejs环境使用jshint的相关文章

sublime插件(配合nodejs环境)

一.首先先安装nodejs,从nodejs官网下载 www.nodejs.cn 下载完成后直接安装,选择npm package版本的进行安装,安装完成后无需配置环境变量,nodejs会自动进行配置. 打开cmd命令行,输入node -v,显示v4.4.4,说明安装成功. 二.安装HTML/CSS/JS Prettify插件,该插件可以格式化HTML.CSS.JS文件,但是依赖node环境. 1.sublime中ctrl+shift+p调出命令行,输入prettify,找到相应插件安装.安装完成后

nodejs环境 + 入门 + 博客搭建

NodeJS:NodeJS是一个使用了Google高性能V8 引擎 的服务器端JavaScript实现.它提供了一个(几乎)完全非阻塞I/O栈,与JavaScript提供的闭包和匿名函数相结合,使之成为编写高吞吐 量网络服务程序的优秀平台. NPM:全称是Node Package Manager,是一个NodeJS定制的包管理和分发工具,如node-mysql,已经成为了非官方的发布Node模块(包)的标准. (npm类似maven,package.json类似pom.xml文件) mongod

运用NodeJs环境并依赖第三方库,框架等实现网站前后端分离报错问题及处理方法

运用NodeJs环境并依赖第三方库,框架等实现网站前后端分离报错问题及处理方法 问题一: SyntaxError: missing ) after argument list in .....\views\user\index.html while compiling ejs. 语法错误:失去右括号)在参数列表后面,在.....\views\user\index.html(在这个路径中的index.html)中当编译ejs时. 分析:这个时候应该是模板引擎ejs出现问题,但是ejs已经是一个写好

Javascript的二进制数据处理学习 ——nodejs环境和浏览器环境分别分析

以前用JavaScript主要是处理常规的数字.字符串.数组对象等数据,基本没有试过用JavaScript处理二进制数据块,最近的项目中涉及到这方面的东西,就花一段时间学了下这方面的API,在此总结一下. 首先浏览器是没有主动读取本地文件的权限的,所以对JavaScript处理二进制数据能力的学习,应该从运行在服务器端的nodejs看起. Nodejs 中的 Buffer 为了方便处理二进制数据,nodejs特地封装了一个Buffer模块.文档地址:http://nodejs.cn/doc/no

OpenShift Redhat 搭建NodeJS环境

https://openshift.redhat.com/ OpenShift 是 redhat 公司推出的一个 PaaS 云计算应用平台,开发者可在上面构建.测试.部署和运行应用程序,它支持 Java, Ruby, Node.js, Python, PHP, Perl 等众多语言环境和开发框架,并且支持 MySQL, PostgreSQL, MongoDB 等数据库服务.最重要的是,它的整个体系都是开源的,这和 IaaS 开源云计算软件 OpenStack 一样,对于拥有硬件资源而希望部署云的

Sublime Text 3 搭建nodejs环境

1.Node Js 安装(windows环境下) 下载node.js官网下载包https://nodejs.org/en/download/,或者在国内的http://nodejs.cn/download/ 的站点下载 2.Sublime Text 3安装nodejs环境 安装好sublime text 3后需要配置Package Control.安装方式如下: 1)打开sublime text 3. 2)按Ctrl+'`'打开控制台. 3)输入以下内容进行安装. import urllib.r

CentOS7配置Nodejs环境安装记录

今天购买了阿里云服务器,系统选的是CentOS7,下面记录下在它上面安装Nodejs环境的过程,本次操作是直接连接的阿里云服务器的管理终端. 1.由于是纯净的环境,先通过以下命令安装nodejs编译及依赖相关软件: [[email protected] sharing]# yum -y install gcc gcc-c++ openssl-devel 2.在home下新建node文件夹,用来保存下载的和解压缩的文件: [[email protected] home]#mkdir node 3.

阿里云服务器(ECS)从购买到配置NodeJS环境

本人入门级前端,对服务器不熟悉,这是自己摸索的过程,可能会有错误! 1.购买 阿里云服务器有个活动是新用户前六个月可以免费试用,但是每天早上发放一定的名额,但为了方便,我买了18RMB的捆绑套餐,也是很划算的.服务器配置是40G系统盘+20G数据盘,1核2G内存(购买时说的1G),对于个人来说,足够用了.我使用的系统是CentOS 7.3 64位. 2.进入服务器 购买后根据自己的密码可以通过ssh进入服务器,以mac系统为例. ssh [email protected]公网ip 之后输入密码进

windows下基于sublime text3的nodejs环境搭建

第一步:先安装sublime text3.详细教程可自行百度,这边不具体介绍了. 第二步.安装nodejs插件,有两种方式 第一种方式:直接下载https://github.com/tanepiper/SublimeText-Nodejs 压缩包,压缩后重命名为Nodejs放到package目录下.package打开方式:Preferences-> Browser Package 第二种方式:通过package control install package的方式下载 第三步:安装nodejs.