在 Visual Studio Code 中使用 Angular
Angular 是一个由 Google 开发和维护的流行 Web 开发平台。Angular 使用 TypeScript 作为其主要编程语言。Visual Studio Code 编辑器开箱即用地支持 TypeScript IntelliSense 和代码导航,因此你无需安装任何其他扩展即可进行 Angular 开发。
注意:为了帮助你开始 Angular 开发,你可以使用 Angular 配置文件模板,其中包含有用的扩展、设置和代码片段。
Angular 入门
在本教程中,我们将使用 Angular CLI。要安装和使用命令行界面以及运行 Angular 应用程序服务器,你需要安装 Node.js JavaScript 运行时和 npm(Node.js 包管理器)。npm 包含在 Node.js 中,你可以从 Node.js 下载页面 安装。
提示:要测试你的计算机上是否正确安装了 Node.js 和 npm,可以输入
node --version
和npm --version
。
要安装 Angular CLI,请在终端或命令提示符中输入:
npm install -g @angular/cli
这可能需要几分钟才能安装完成。现在,你可以通过输入以下命令来创建一个新的 Angular 应用程序:
ng new my-app
my-app
是你应用程序的文件夹名称。ng new
命令会提示你为生成的应用程序设置选项。按 Enter 键接受默认值。这可能需要几分钟时间来用 TypeScript 创建 Angular 应用程序并安装其依赖项。
让我们快速运行我们的 Angular 应用程序,方法是导航到新文件夹并输入 ng serve
来启动 Web 服务器并在浏览器中打开应用程序:
cd my-app
ng serve
你应该会在浏览器的 https://:4200 上看到“Welcome to app!!”。在我们用 VS Code 查看应用程序时,我们将保持 Web 服务器运行。
要在 VS Code 中打开你的 Angular 应用程序,请打开另一个终端(或命令提示符),导航到 my-app
文件夹并输入 code .
:
cd my-app
code .
语法高亮和括号匹配
现在展开 src\app
文件夹并选择 app.component.ts
文件。你会注意到 VS Code 对各种源代码元素都有语法高亮,并且如果你将光标放在一个括号上,匹配的括号也会被选中。
IntelliSense
当你将鼠标悬停在文件中的文本上时,你会看到 VS Code 为你提供有关源代码中关键项的信息。诸如变量、类和 Angular 装饰器等项目都是你会看到这些信息的一些例子。
当你在 app.component.ts
中开始输入时,你会看到智能建议和代码片段。
你可以单击信息按钮(i
)以查看包含更多文档的弹出窗口。
VS Code 使用 TypeScript 语言服务进行代码智能提示(IntelliSense),并且它有一个称为自动类型获取(ATA)的功能。ATA 会为 package.json
中引用的 npm 模块下载 npm 类型声明文件(*.d.ts
)。
转到定义,速览定义
通过 TypeScript 语言服务,VS Code 还可以通过转到定义(F12)或速览定义(⌥F12 (Windows Alt+F12, Linux Ctrl+Shift+F10))在编辑器中提供类型定义信息。打开 app.module.ts
文件,将光标悬停在 bootstrap
属性声明中的 AppComponent
上,右键单击并选择速览定义。一个速览窗口将会打开,显示来自 app.component.ts
的 AppComponent
定义。
按 Escape 关闭速览窗口。
Hello World
让我们将示例应用程序更新为“Hello World”。返回 app.component.ts
文件,并将 AppComponent
中的 title
字符串更改为 "Hello World"。
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'Hello World';
}
一旦你保存了 app.component.ts
文件,正在运行的服务器实例将更新网页,你将看到 "Welcome to Hello World!!"。
提示:VS Code 支持自动保存,默认情况下它会在延迟后保存你的文件。在文件菜单中勾选自动保存选项以开启自动保存,或直接配置
files.autoSave
用户设置。
调试 Angular
要调试客户端的 Angular 代码,我们将使用内置的 JavaScript 调试器。
注意:本教程假定你已安装 Edge 浏览器。如果你想使用 Chrome 进行调试,请将启动
type
替换为chrome
。还有一个适用于 Firefox 浏览器的调试器。
设置断点
要在 app.component.ts
中设置断点,请单击行号左侧的边栏。这会设置一个断点,它将显示为一个红色的圆圈。
配置调试器
我们需要先配置调试器。为此,请转到运行和调试视图(⇧⌘D (Windows, Linux Ctrl+Shift+D)),然后选择创建 launch.json 文件链接来创建一个 launch.json
调试器配置文件。从选择调试器下拉列表中选择 Web 应用 (Edge)。这将在你的项目中创建一个新的 .vscode
文件夹,并在其中生成一个 launch.json
文件,其中包含启动网站的配置。
我们需要为我们的示例做一个更改:将 url
的端口从 8080
更改为 4200
。你的 launch.json
应该如下所示:
{
"version": "0.2.0",
"configurations": [
{
"type": "msedge",
"request": "launch",
"name": "Launch Edge against localhost",
"url": "https://:4200",
"webRoot": "${workspaceFolder}"
}
]
}
按 F5 或绿色箭头启动调试器并打开一个新的浏览器实例。设置断点的源代码在调试器附加之前就在启动时运行了,所以我们不会命中该断点,直到我们刷新网页。刷新页面,你应该会命中你的断点。
你可以单步调试你的源代码(F10),检查诸如 AppComponent
之类的变量,并查看客户端 Angular 应用程序的调用堆栈。
有关调试器及其可用选项的更多信息,请查看我们的浏览器调试文档。
Angular 配置文件模板
配置文件可让你根据当前项目或任务快速切换扩展、设置和 UI 布局。为了帮助你开始 Angular 开发,你可以使用 Angular 配置文件模板,这是一个包含有用扩展和设置的精选配置文件。你可以直接使用该配置文件模板,也可以将其作为起点,根据自己的工作流程进行进一步定制。
您通过“**配置文件**”>“**创建配置文件...**”下拉菜单选择一个配置文件模板
选择配置文件模板后,你可以查看设置和扩展,如果你不想将某些项目包含在新的配置文件中,可以单独删除它们。基于模板创建新配置文件后,对设置、扩展或 UI 的更改将保存在你的配置文件中。
流行的入门套件
在本教程中,我们使用 Angular CLI 创建了一个简单的 Angular 应用程序。有许多优秀的示例和入门套件可以帮助你构建你的第一个 Angular 应用程序。
配方
VS Code 团队为更复杂的调试场景创建了配方。在那里,你会找到使用 Angular CLI 进行调试的配方,该配方也使用 Angular CLI,并详细介绍了如何调试所生成项目的单元测试。
MEAN 入门套件
如果你想看一个完整的 MEAN(MongoDB、Express、Angular、Node.js)技术栈示例,请查看 MEAN.JS。他们有文档和一个用于示例 MEAN 项目的应用程序生成器。你需要安装并启动 MongoDB,但你很快就能让一个 MEAN 应用程序运行起来。VS Code 通过 Azure Databases 扩展也提供了强大的 MongoDB 支持。
React
React 是一个用于构建用户界面的库,它比 Angular 更为精简。如果你想看一个 React 与 VS Code 配合使用的示例,请查看在 VS Code 中使用 React 教程。它将引导你创建一个 React 应用程序并为 JavaScript 调试器配置 launch.json
文件。
Angular 扩展
除了 VS Code 开箱即用提供的功能外,你还可以安装 VS Code 扩展以获得更强大的功能。
点击上面的一个扩展磁贴,在 Marketplace 上阅读其描述和评论。
要查找其他 Angular 扩展,请打开扩展视图(⇧⌘X (Windows, Linux Ctrl+Shift+X))并输入 'angular' 以查看筛选后的 Angular 扩展列表。
社区还创建了“扩展包”,它将有用的扩展(例如,linter、调试器和代码片段)捆绑在一起,通过一次下载即可安装。要查看可用的 Angular 扩展包,请将“扩展包”类别添加到你的筛选器中(angular @category:"extension packs")。