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



推荐阅读
  • 字符串学习时间:1.5W(“W”周,下同)知识点checkliststrlen()函数的返回值是什么类型的?字 ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 微软推出Windows Terminal Preview v0.10
    微软近期发布了Windows Terminal Preview v0.10,用户可以在微软商店或GitHub上获取这一更新。该版本在2月份发布的v0.9基础上,新增了鼠标输入和复制Pane等功能。 ... [详细]
  • 在Delphi7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下:1234 ... [详细]
  • Ansible:自动化运维工具详解
    Ansible 是一款新兴的自动化运维工具,基于 Python 开发,集成了多种运维工具(如 Puppet、CFEngine、Chef、Func 和 Fabric)的优点,实现了批量系统配置、程序部署和命令执行等功能。本文将详细介绍 Ansible 的架构、特性和优势。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 近期在研究逆向工程,因此尝试了一些CTF题目。通过合天网络安全实验室的CTF实战演练平台(http://www.hetianlab.com/CTFrace.html),我对Linux逆向工程的掌握还不够深入,因此暂时跳过了RE300题目。首先从逆向100开始,将文件后缀名修改为.apk进行初步分析。这一过程不仅帮助我熟悉了基本的逆向技巧,还加深了对Android应用结构的理解。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 当PHP中的tempnam()函数被禁用后的应对策略与解决方案
    当 PHP 中的 `tempnam()` 函数被禁用时,开发者需要采取相应的替代方案以确保应用程序的正常运行。本文探讨了多种应对策略,包括使用 `sys_get_temp_dir()` 结合自定义文件命名方法,以及利用第三方库来生成临时文件。此外,还详细介绍了如何在不同操作系统和服务器环境中配置临时文件路径,以提高代码的兼容性和安全性。 ... [详细]
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社区 版权所有