如何提升 Visual Studio Code 的 JavaScript 開發效率(一)

前面我們介紹了 Visual Studio Code 各種基礎能力,包括常用快捷鍵、全局配置(User Setting)等內容。我們還沒怎麼談到插件、工程方面的運用。雖然現在 VSCode 已經支持多種語言,如 Python、PHP,甚至 Java、C/C++。但作為其最早支持的語言,也是我最喜歡的編程語言——JavaScript,儘管它的弱類型、動態類型等特性在以前是 IDE 的災難,但是在 VSCode 裡,這不再是問題。

jsconfig.json 文件

默認情況下,不需要我們做任何額外配置,VSCode 就已經為 Workspace 內的 js 文件提供了 JavaScript 方面的支持,包括 IntelliSense(智能提示)、Snippets(代碼片段)、Debug(調試)、Format(格式化)、Validate(校驗)等。但是在以下場景,我們就需要一個叫 jsconfig.json 的文件了:

  • 一個 Workspace 中有多個工程,比如前端、後端工程。IntelliSense 應該以工程邊界,而不要跨工程提示。
  • 使用非相對路徑方式的導入工程內的文件,如 import 'lib/util.js',而不是 import '../../lib/util.js'。 就像 package.json 表示所在目錄是一個 NodeJS 工程,jsconfig.json 表明這個目錄是一個 VSCode JavaScript 工程。當然,jsconfig.json 還有很多其他作用,善用它能夠極大提升我們的開發效率。因此,即便 Workspace 本身就是一個工程,我們也要在它的根目錄下提供這麼一個文件。

IntelliSense 工程隔離

我們先來看看 jsconfig.json 帶來的 IntelliSense 按工程隔離的特性。如下圖所示,當前 Workspace 裡有 frontend、backend 兩個 Project。每個 Project 下都有一個 xxx_util.js,裡面都包含了一個 isOdd 方法——注意,它們的註釋不一樣。


如何提升 Visual Studio Code 的 JavaScript 開發效率(一)


當我們在的 backend 工程下的 index.js 文件裡輸入 isO 時,IntelliSense 展示的是 backend 工程下的那個 isOdd方法(註釋是 check number is an odd integer in backend),而不會提示 frontend 工程裡的。


如何提升 Visual Studio Code 的 JavaScript 開發效率(一)


當我們繼續按 Enter 或 Tab 鍵以確定後,IntelliSense 會在 index.js 文件的頂部自動加入 import { isOdd } from "./backend-util";。是不是很贊?對一個全棧開發或微前端開發者來說,往常多個工程同時打開導致 IntelliSense 裡有重複項的煩惱就一去不復返了。

排除工具、中間代碼

IntelliSense 工程隔離的問題解決了,接下來我們來看一個工程的內部。在一些比較複雜的工程裡,可能包含很多非源代碼(src)的目錄,如 bin、test,還有編譯後的 dist 目錄等。默認情況下,這些目錄下的 js 文件都會被 IntelliSense 解析,從而出現在源代碼的提示裡。這一方面會造成重複提示,另一方面也會嚴重拖慢 IntelliSense。一般我們都會把源代碼放到 src 目錄,所以我們只需要在 jsconfig.json 中增加配置 "include": [ "src/**/*.js" ]即可。

限定 ES 版本

除了源代碼內的模塊及其引用(Reference)可以被用於提示,VSCode 還內置了 ES、DOM、NodeJS 庫的 API 引用,即 TypeScript 的 lib.d.ts 文件。當我們需要使用內置 API 的時候,IntelliSense 就能提示它們了。VSCode 還可以讓我們配置要使用哪個版本的 lib.d.ts。如果用的是 node 10,則可以使用 es2018:

{
 "compilerOptions": {
 "target": "es2018"
 }
}

其他版本的 Node 對應的 ES 版本,可以在 https://node.green/ 這裡查看。大體上如下:

NodeJS | compilerOptions.target
6 | es6 或 es2015
8 | es2016
10 | es2018

重載 Project

有些時候,VSCode IntelliSense 可能沒起作用,比如新的函數沒有出現在提示列表裡。這個時候可以使用 JavaScript: Reload Project 命令,重新加載當前文件所在的 Project。如果還是不行,那就使用 Reload Window 命令——重啟是能很多解決問題的。

接下來我們還要講“非相對路徑導入”、Click Through、ESLint 等各種特性或插件的使用。



分享到:


相關文章: