配置 Node.js 开发环境——使用 Atom

2020-04-16 18:12:29 浏览数 (1)

Node.js 的开发环境选择很多,比如 WebStrom/Visual Studio Code/Atom/HBuilder,还有万能的 Vim/Emacs 等等。

根据我个人的试用,WebStorm 应该是配置起来最省心,用起来最顺手的选择,而且有 Android Studio 和 PyCharm 的使用经验上手毫无障碍。但一来 WebStorm 价格不菲,二来最近刚刚被 Atom 圈粉,而 Visual Studio Code 和 Atom 又是这些编辑器里面与 Node.js 渊源最深的,所以最终决定最近在学习 Node.js 以及写一些练手项目时以使用 Atom 为主,Vim 为辅。

安装 Atom 插件

主要是它们:

  • atom-ternjs 用于 Javascript 和 Node.js 的自动补全
  • script 用于一键运行程序

自动补全插件

Atom 上的 Javascript 自动补全主要依赖 atom-ternjs 插件,貌似没有什么其它更好的选择。(配合 autocomplete-plus 插件使用,Atom 默认已经安装。)

安装方法与安装其它插件无异,主要有三种选择:

  1. 图形界面。 在 Atom 的 Settings > Install 里搜索找到 atom-ternjs 并安装。
  2. 命令行。 apm install atom-ternjs
  3. 本地安装。 cd ~/.atom/packages git clone https://github.com/tststs/atom-ternjs.git cd atom-ternjs npm install

一键运行插件

安装 script 插件,然后有两种方法可以一键运行/结束程序了:

  1. Packages > Script > Run Script/Stop Script。
  2. 快捷键。 Mac Windows 运行 cmd i ctrl shift b 结束 ctrl c ctrl q

配置项目

atom-ternjs 插件对项目配置做了可视化,可以通过菜单来操作。

  1. File > Open 打开 Node.js 项目文件夹。
  2. Package > Atom Ternjs > Configure project

Save & Restart server 之后会在项目根目录生成 .tern-project 文件,该配置文件里常用字段: 字段名 含义 ecmaVersion 选择 ECMAScript 版本 libs browser 表示原生 js 补全,jquery 代表 jQuery 补全 loadEagerly 指定加载解析的 js 文件 dontLoad 排除加载的文件 plugins ternjs 使用的插件,配置的扩展补全的库等 目前插件的配置页面暂不支持 plugins 部分配置,需要手动配置。 比如一份最简单的 .tern-project 文件的示例: { "ecmaVersion": 6, "libs": [], "loadEagerly": [ "**/*.js" ], "plugins": { "node": {}, "node-express": {} } } 它代表使用 ECMAScript 6,递归加载项目文件夹下所有的 js 文件(包括 node_modules),使用 ternjs 的 node 插件用于 Node.js 核心库补全,node-express 插件用于 express 补全。 这部分推荐详细阅读一下 atom-ternjs 的 README,会更清楚怎么回事。

  1. 创建/修改 .tern-project 文件后,执行 Packages > Atom Ternjs > Restart server。 进行完这一步以后,顺利的话你应该已经能愉快地看到原生 js 和 Node.js 的自动补全了;不顺利的话,看看下面的 Q & A 一节,有我遇到的问题的记录。

最终效果:

Q & A

  1. 在 Mac 下按步骤官方的 README 操作后自动提示出不来? 我在 Windows 下按官方指南配置 atom-ternjs 倒是很顺利,按默认步骤操作完,然后在 plugins 一节添加 node 就一切 OK 了,但在 Mac 下貌似不配置 loadEagerly 为 **/*.js 智能提示出不来。 另外就是 .tern-project 文件放置的位置,最好与 package.json 放在同级目录。
  2. 安装 atom-ternjs 总是失败。
  3. Vim 也有 tern_for_vim,作为主力编辑器,为何不使用它来写 Node.js 呢? 别提了,如果没有把 .tern-project 文件配置好,打一个 . 之后能卡五秒,严重拉低 Vim 编辑速度。 不过 tern_for_vim 也有一个好处,那就是不用像 atom-ternjs 这样每次改完配置后都要手动 Restart server。

后话

ternjs 功能强大,包括:

  • 自动补全方法和变量
  • 查找引用/定义
  • 显示方法详情,包括方法签名和文档等
  • 简单的重构

把它用好了还是能不错地提升开发效率的。

0 人点赞