[TOC]
# Visual Studio Code
Visual Studio Code是由微软开发的在Windows、Linux和Mac上运行的轻量级开发环境。它包括功能如语法高亮,括号匹配,智能感知,也有许多不同的语言的支持。这些语言包括TypeScript,JavaScript,HTML,CSS,JSON,# C,C++和许多,使它适合于在web页面或Node的TypeScript开发。它的目前主要焦点是C # ASP.NET发展,并与TypeScript结合发展。它还内置了强大的Git支持。
# 探索vscode
创建一个新目录来存放你的源代码。这可以通过导航到目录并执行代码来完成。在Windows系统中在命令行输入`code . `,打开VSCode,然后从菜单栏 `File | Open folder`选择文件打开文件夹。按`Ctrl - N`创建一个新文件,并键入以下内容:
```js
console.log("hello vscode");
```
注意:在这一阶段没有语法高亮显示,VSCode不知道是什么类型的文件。按`Ctrl -S`保存文件,并将其命名为`hello.ts`。现在,VSCode明白这是一个TypeScript文件,你将有充分的智能提示和语法高亮可用。
## 创建一个 tasks.json 文件
VSC的快捷键`Ctrl - Shift - B` 用来运行一个项目,如果我们运行构建一个项目, VSCode 会显示一个信息:`No task runner configured`,并且会让我们去设置 Task Runner。我们可以从多种task runner中进行选择:Grunt、Gulp等其他的选项,我们选择其中一种,然后会自动在`.vscode`文件夹中生产`tasks.json`。
打开生成的`tasks.json`文件,我们可以做些修改:"showOutput" 选项的"silent"改为 "always"。这个会使VSCode每当看到编译问题时,打开输出窗口。
此时我们的`tasks.json`内容:
```js
// A task runner that calls the Typescript compiler (tsc) and
/ / compiles based on a tsconfig.json file that is present in
// the root of the folder open in VSCode
{
"version": "0.1.0",
"command": "tsc",
"isShellCommand": true,
"showOutput": "always",
"args": ["-p", "."],
"problemMatcher": "$tsc"
}
```
## 构建运行项目
此时我们使用快捷键“Ctrl - Shift - B.编译结果会生一个 `hello.js` 和一个`hello.js.map`文件。
## 创建一个launch.json文件
VSCode包括一个可用于调试TypeScript项目的集成调试器。打开**Debugger**面板或者使用快捷键**F5**打开,VSCode会询问我们的调试环境,目前,我们选择 **Node.js** 选项,然后会自动在`.vscode`文件夹中`launch.json`。然后再打开它进行编辑。发现选择`program`,并修改值为:`${workspaceRoot}/hello.js`。按**F5**键一次,VSCode将启动`hello.js`作为一个node的程序并且将结果输出到调试窗口:
~~~
node --debug-brk=34146 --nolazy hello.js
debugger listening on port 34146
hello vscode
~~~
## 设置断点
在这个阶段使用断点和调试只对生成的 `.js` 文件起作用。我们还需要修改`launch.json`文件直接调试 TypeScript 文件。编辑`launch.json`文件,修改`sourceMaps`:`false` 改为 `true`。现在我们可以直接通过vscode调试器在`.ts`文件中设置断点了。
![Debugging a Node application within Visual Studio Code](https://img.kancloud.cn/c2/bd/c2bda2099d66c8cfeb3084b20f5e9fa0_848x494.png)
## 调试Web页面
VSCode中调试Web页面中的TypeScript,需要更多一点的设置。vscode使用Chrome调试器附加到正在运行的网页。启用调试网页,我们首先需要修改`launch.json`文件并添加一个新的启动选项,如下
```js
"configurations": [
{
"name": "Launch",
...
},
{
"name": "Attach 9222",
"type": "chrome",
"request": "attach",
"port": 9222,
"sourceMaps": true
}
]
```
这个启动选项命名为“Attach 9222”,并使用调试端口9222连接到一个正在运行的Chrome实例。保存`launch.json`文件,并在项目的根目录中创建一个名为`index.html`的HTML页面,如下:
```html
<html>
<head>
<script src="helloweb.js"></script>
</head>
<body>
hello vscode
<div id="content"></div>
</body>
</html>
```
上面的代码很简单,我们的`helloweb.ts` 内容如下:
```js
window.onload = () => {
console.log("hello vscode");
};
```
这个TypeScript代码仅仅等待网页加载,然后打印`hello vscode`在控制台。
下一步是使用调试端口选项来激活Chrome。在Linux系统上,这是从命令行上输入的:
~~~
google-chrome --remote-debugging-port=9222
~~~
请注意,您将需要确保没有其他浏览器占用了该端口。
其次,通过使用`file://<full_path_to_file>/index.html`语法,使浏览器加载index.html 。你应该看到的HTML文件渲染`hello vscode`文本。
现在我们可以回到VSCode,点击调试图标,在启动下拉并选择`Attach 9222`。按**F5**键,和VSCode现在应该附加到调试器Chrome的运行实例。然后我们需要刷新Chrome页面,以便开始调试:
![Debugging web pages in Visual Studio Code](https://img.kancloud.cn/48/a7/48a7905c8a6b5dd5be8b0a441114ec90_1020x600.png)
我们现在可以结合这些手动步骤到一个启动器里面,如下:
```js
{
"name": "Launch chrome",
"type": "chrome",
"request" : "launch",
"url" : "file:/// ... insert full path here ... /index.html",
"runtimeArgs": [
"--new-window",
"--remote-debugging-port=9222"
],
"sourceMaps": true
}
```
在这个启动配置中,我们将`request`属性从`attach`更改为`launch`,它将启动一个 Chrome 的新实例,并自动导航打开到`url`属性中指定的文件路径。`runtimeArgs`属性现在还指定远程调试端口`9222`。
有了这个启动器,我们就可以简单地点击 F5 来启动 Chrome,使用正确的 URL 和调试选项来调试 HTML 应用程序。