热门标签 | 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



推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
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社区 版权所有