Tern
1.1、Tern简介
是什么 ?:a stand-alone code-analysis engine for JavaScript.
开发语言:JavaScript
官方主页:http://ternjs.net
源码仓库:https://github.com/ternjs

Tern的目标是被代码编辑器使用,以增强代码编辑器JavaScript代码智能编辑能力。

Tern能运行于Node.jsWeb浏览器中。

Tern提供的主要特征如下:

  • 变量和属性的自动完成
  • 函数参数提示
  • 查询一个表达式的类型
  • 查找定义
  • 重构
1.2、Tern的架构

Tern采用了C/S架构。采用这种架构是由它的目标所决定的,因为Tern是为了给各种代码编辑器提供增强服务,Tern只是提供服务就好了,它制定协议,让代码编辑器根据协议与服务进行通信即可。

1.3、Tern Server
1.3.1、安装Tern Server

1、Tern Server是使用node.js实现的,所以,首先, 必须安装好Node.js

2、通过npm全局安装Tern Server

npm install -g tern
1.3.2、启动Tern Server

安装完成后,有个tern命令可以使用,执行该命令就会启动Tern Server

tern命令的实现者没有提供-h或者--help参数来让我们看它的使用方法, 只能通过官方在线文档查看。

tern命令的使用形式如下:

tern [option]...

option有下面这些:

option说明
--host HOST指定监听的主机,默认是127.0.0.1
--port NUMBER指定监听的端口,默认是62098
--verbose打印通信协议的具体内容,默认是不打印的
--persistent默认的,Tern Server超过5分钟没有任何活动,就会自动关闭,如果不想让他自动关闭,使用该参数即可
--ignore-stdin默认的,Tern Server的标准输入一旦被关闭了,就会自动关闭,如果不想让他自动关闭,使用该参数即可
1.4、.tern_project文件

.tern_project文件是JSON格式。

.tern_project文件Tern Server的配置文件。

.tern_project文件在Tern Server启动的时候进行查找,如果找到,就读取它。

Tern Server查找.tern_project文件的过程如下:

1、在被编辑的.js文件所在的目录中,看是否存在.tern_project文件;如果存在,就读取;如果不存在,则实行第二步;

2、在被编辑的.js文件的父目录中,看是否存在.tern_project文件;如果存在,就读取;如果不存在,则实行第三步;

3、在被编辑的.js文件的父目录的父目录中,看是否存在.tern_project文件;如果存在,就读取;如果不存在,则继续从它的父目录往上找...

4、如果能找到就使用找到的配置,如果没有找到,就使用默认的配置, 默认的配置只支持JavaScript的基本语法,不支持其他的第三方库和Node.js语法。

基于这个向上查找的特性,为了便于一次配置,一劳永逸的方便,通常我们会在$Home目录放一个配置,内容如下:

{
    "libs": [
        "browser",
        "underscore",
        "jquery"
    ],
    "plugins": {
        "node": {},
        "node-express": {},
        "tern-gulp": {},
    }
}
1.5、~/.tern_config文件

~/.tern_config文件与.tern_project文件的格式完全一样。

~/.tern_config文件就是在查找.tern_project文件过程中,因为没有找到,而由用户指定的默认配置。

1.6、Tern的插件