IDE 党鄙视文本编辑器理由之一是,文本编辑器里代码校验做得不好,不能在写代码的时候就通过分析, 提示你写的代码是否有问题,费事费力。
我不掺和这种争执哈,编辑器、操作系统、编程语言、开发框架、语言库,统统都是 firebait, 能迅速分化阵营,掐个半天,最终自然谁也说服不了谁。
本文说明一下 Sublime Text 2(以下简称 Sublime)里使用 JSHint 实时检查 JavaScript 代码的方法。
有个人叫 Douglas Crockford,他做过许多事情,如下几件对 JavaScript 社区影响深远:
- JavaScript the Good Parts
- JavaScript Object Notation,即 JSON
- JSLint
JSLint 就如当年 C 语言初风靡之时的 lint, 目的是分析代码,标注出代码中的危险之处;但 JSLint 还以其警告闻名
JSLint may hurt your feelings.
JSLint 可能会伤害你的感情。
由此可见 Douglas 的 JavaScript 风格 有多严苛。我们自然也容易理解,它不能完全服众。于是后来有人做了 JSHint, 因为受不了这种写法都要被警告:
function foo() {
var arr = 'abcdefg'.split('')
for (var i = 0; i < arr.length; i++) { // 会警告说,var i 该放开头
console.log(arr[i])
}
}
单从实践中说,这种写法更好地避免了 i
忘了声明的情况。
然后,说 Sublime,它是一款 Python 写的编辑器,可以用 Python 给它写扩展, 敝部门同事 @白汀 也写过 教程。同时,类似 Vim 的 Vundle, Sublime 也有管理扩展的扩展(Everything gets meta),叫做 Sublime Package Control, 尚未安装的同学,建议猛击其链接,按提示安装。
以上即本文之前情提要,以下 JSHint in Sublime 之安装方式。
首先你需要安装 JSHint:
$ npm install jshint -g
然后,在 Sublime 中,Command + Shift + P
,Windows 用户应该是 Control + Shift + P
,
呼出 Package Control,选择 Install Package,安装 JSHint。
装好之后,就可以使用 Command + B
或者 Control + B
来检查 JavaScript 代码了。
但故事到此还没结束,我们还配置一下 JSHint,让它更符合使用习惯。
JSHint 支持 .jshintrc,即 Runtime Control 文件,方便用户配置。它的查找逻辑是,
从需要检查的文件的当前路径开始找,依次往上,找到或者到 /
为止。
所以,可以在你的项目根目录丢个 .jshintrc,以保证代码风格的一致性。文件的格式是 JSON,示例如下:
{
// 设置 JS 执行环境为浏览器
"browser": true,
// 加载 jQuery 的全局变量(jQuery、$)
"jquery": true,
// 行尾不要分号
"asi": true,
// 其他全局变量,我用了 SeaJS
"predef": [
"define",
"seajs",
"console"
]
}
详细的配置,可以看 JSHint 之文档。
最后,再给你的 Sublime 安装 SublimeOnSaveBuild, 就齐活啦。
虽然没有 IDE 实时标注这么高端,没有代码行内放个黄色三角作错误提醒这么时尚,但它很快、很容易定制, 很 unobtrusive,推荐使用喔。