热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

最简便的JavaScript代码检查工具安装方式

前两天发了一篇用mingw编译javascriptv8,讲述我为了在Windows下给javascript做lint检查,费劲去编译google的jav

前两天发了一篇用mingw编译Javascript v8,讲述我为了在Windows下给Javascript做lint检查,费劲去编译google的Javascript引擎v8。但昨天在网上搜来搜去,找到一个非常简单的方案: jshint。它采用了 jsdb 这个解释器程序,jsdb 提供了linux/windows/mac下预编译好的二进制包,而且有读取文件的Javascript api,所以可以用来做lint工具。

安装方法:

  1. 下载 jsdb 可执行程序: http://www.jsdb.org;
  2. 下载 jshint 和jshint.js https://github.com/spytheman/jshint-cli-with-jsdb  ;
  3. 然后就可以调用 jsdb jshint your_file.js 来检查你的Javascript代码文件是否有问题(如果你在Linux下,可以直接给 jshint 添加可执行权限(Linux会根据第一行的声明 #!/usr/bin/env jsdb 自动找 jsdb 来执行自己),然后用jshint your_file.js就可以啦)

不过有个小地方要注意: jshint这个文件里会在当前目录加载jslint.js,找不到就无法完成lint工作,所以你要么将jshint.js放到一个固定的位置,修改一下jshint这个文件,要么将jshint.js的代码干脆拼到jshint的头部去。

这个jsdb是个Javascript解释器,基于mozilla的SpiderMonkey引擎,所以速度不错,也支持新的JS语法。

怎么样,对比一下jslint-v8的安装,够简单吧。

 

不过如果你只在Windows下工作,并且不会用到Javascript 1.5以后的那些语言特性,这里有个更简单的工具:http://www.Javascriptlint.com/ 下载下来,用jsl -conf yourconf.conf your_file.js 就可以了(你可以为每个项目配置一个yourconf.conf,这个工具提供了很多选项)。

 


下面又要发扬我的啰嗦风格了,补充一些不太重要的内容,有兴趣的可以看看:

1. 这个jshint 相对jslint-v8而言,还是有一点功能缺失:这个jshint 并没有像jslint-v8那样,将Douglas Crockford 在jslint.js里面提供的那些配置项暴露出来(比如使用jslint-v8是可以这样 jslint --predef gBrowser,command,util keysnail.js 来检查keysnail的配置文件,而它不会反复抱怨gBrowser,command这些对象未定义。到 Douglas 的在线jslint网站看一下,就知道有很多选项是很有用的,要每次修改jshint还是比较麻烦,最好要能象jslint-v8一样通过命令行传入。

 

2. 为什么Javascript的 lint 工具都这么麻烦呢?Douglas不都已经提供了检查错误的代码,直接使用一下不就行了? 其实主要的问题在于Javascript 解释器,这个语言以前一直不是一个独立的语言,而是一种纯粹的脚本语言,它是生活在一个宿主里面的,自己没有任何I/O接口,加上它主要是用在浏览器里面,安全性要求又比较高,所以各个 Javascript 解释器都没有把I/O等功能放在里面。即使有的 Javascript 解释器有load()函数加载一个js文件,但这里还是有一个问题,怎么读入被检查的代码?

所以jslint-v8和jsdb都是将自己做成了一个Javascript的host,利用引擎的API添加了读文件的JS API(比如jsdb提供的Stream.read()函数)。其实以前网上很多都说用mozilla rhino来做jslint工具(Douglas原本在网站上就提供了一份rhino版的jslint),也是因为它基于JVM已经有了读文件的接口。但Rhino比较慢(主要是启动慢),还得装JRE,我是不太感冒。

转:https://www.cnblogs.com/bamanzi/archive/2011/10/15/Javascript-lint-with-jsdb.html



推荐阅读
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
author-avatar
Huiying_Liu
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有