使用 TypeScript 和 Visual Studio 2013 构建第一个 Angular2 应用






4.87/5 (15投票s)
使用 VS2013 和 TypeScript 构建第一个 Angular2 应用。
引言
近年来,随着 Angular、ReactJs 等框架的出现,现代应用程序开发经历了巨大的变革。随着 ES6 的变化、TypeScript 和 Angular2 的出现,我们正迎来 Web 应用程序开发的新一轮变化。本教程将引导您完成使用 Visual Studio 创建基本 Angular2 应用程序的过程。
背景
本教程旨在设置一个环境,使用 Visual Studio 2013 构建 Angular2 应用,并在此过程中描述 Angular2 应用的各个组件如何协同工作。本教程中使用的工具和技术是:
1) Visual Studio 2013 社区版,附带 .NET 4.5
2) Angular 2
3) TypeScript
4) NPM
让我们开始吧!
安装 TypeScript
本教程要求您的 Visual Studio 中安装 TypeScript 1.6.2 或更高版本。您可以从此处下载适用于 Visual Studio 2013 的 TypeScript:
https://www.microsoft.com/en-us/download/details.aspx?id=48739
安装完成后,您可以在机器上的以下位置看到所有已安装的版本。
{驱动器}\{程序文件文件夹}\Microsoft SDKs\TypeScript\
您可以通过在命令提示符中键入以下命令来验证 TypeScript 版本。
如果您仍然看不到正确的版本,请检查 PATH 环境变量,确保它指向您机器上最新版本的位置。
安装 Node.js/npm
npm (Node 包管理器)是安装 Angular2 所必需的。npm 是作为 Node.js 安装的一部分安装的。您可以从 Node.JS 站点下载 Node.js 安装程序。安装完成后,您可以键入以下命令来检查已安装的 Node.js 版本。
npm -v
设置 Visual Studio 项目
1) 启动您的 Visual Studio,然后创建一个新项目。选择“带有 TypeScript 的 HTML”模板。
2) 项目将包含 index.html、app.ts 和 app.cs。
3) 在项目属性下,更新 TypeScript 生成选项以包含模块系统。Angular2 将 API 作为模块公开,因此我们需要一个模块处理程序来管理模块。我们将在下一步中安装它。
为了避免与 Decorator (见下文)相关的编译错误,我们必须为 TypeScript 编译器启用 experimentalDecorators 标志。您需要手动修改 .csproj 文件以包含此标志。关闭您的 Visual Studio 解决方案,然后用您喜欢的任何文本编辑器打开 .csproj 文件,并将以下元素添加到项目属性中。
<TypeScriptExperimentalDecorators>true</TypeScriptExperimentalDecorators>
这是 cs proj 文件的截图
如果没有这样做,您可能会在 TypeScript 文件中看到以下错误。
添加 Angular2 & SystemJS 模块。
要安装 Angular2,请从命令提示符导航到您的项目文件夹,然后安装以下 npm 包。
- angular2 - Angular 2 库。
- systemjs - 一个开源的模块加载库。
npm install angular2 systemjs --save --save-exact
如果您在 Visual Studio 解决方案资源管理器中点击“显示所有文件”,应该会看到 node_modules 文件夹,其中包含 angular2 和 systemjs 的文件夹。
在安装了所有必需的依赖项后,让我们开始编写我们的应用程序。
应用程序组件
我们将创建一个简单的联系人管理器应用程序,该应用程序显示联系人的姓名、电子邮件地址和电话号码。修改 app.ts 文件的内容,使其如下所示。
/// <reference path="node_modules/angular2/bundles/typings/es6-shim/es6-shim.d.ts" />
/// <reference path="node_modules/angular2/bundles/typings/angular2/angular2.d.ts" />
import {Component, View, bootstrap} from "angular2/angular2";
@Component(
{
selector: 'contact'
})
@View({
templateUrl: 'Contact.html'
})
class Contact {
name: string;
email: string;
phone: string;
constructor() {
this.email = 'John.Doe@gmail.com';
this.name = 'John Doe';
this.phone = '1-800-GOOG';
}
}
bootstrap(Contact);
在您的项目中添加一个 html 文件,并将其命名为 Contact.html。修改内容如下。
<div class="container">
<div>
<label for="name">Name:</label>
<span>{{name}}</span>
</div>
<div>
<label for="name">Name:</label>
<span>{{email}}</span>
</div>
<div>
<label for="name">Name:</label>
<span>{{phone}}</span>
</div>
</div>
这是一个非常简单的组件,但让我们看看这里发生的一些有趣的事情。
TypeScript 定义文件
app.ts 的前两行是对类型定义文件的引用。类型定义文件公开库 (在本例中是 Angular2) 的公共 API,并由编译器用于解析外部模块的引用。在我们的例子中,我们使用的是 angular2.d.ts 文件中声明的 @Component、@View 和 bootstrap 模块。
导入模块
在下一行,我们导入组件所需的外部模块。在 Angular2 中,您需要导入构建组件所需的任何依赖项,这些依赖项默认不包含在内。如果您查看位于 node_modules\angular2\bundles\typings\angular2 文件夹中的 angular2.d.ts 文件,您会注意到 Component、View 和 Bootstrap 作为 angular2/angular2 模块被外部导出。
一个基本的 Angular2 组件包含 3 个部分:
1) 组件注解
2) 视图注解
3) 类
类
定义的 Contact 类本质上是我们的控制器,具有定义的属性。它使用 TypeScript 定义,并具有 name、email 和 phone 三个已定义的属性。类的构造函数初始化将在视图中填充的 name、email 和 phone 属性。
注解/装饰器
注解是向类添加元数据的方式,Angular 将使用它们来查找并将我们的组件加载到 DOM 中。在这种情况下,@Component 定义了一个选择器 ( <contact></contact> ),并用 @View 注解中定义的视图替换它。
视图 & 数据绑定
我们组件中定义的视图是 Contact.html。如果您注意到 contact.html 的列表,您会发现所有花括号 {{ }} 都用于数据绑定到组件属性。数据绑定表达式将解析为类属性。
引导
最后一步是引导我们的应用程序。Angular 现在将知道使用哪个组件,并将组件加载到 DOM 中与我们选择器匹配的元素中。
HTML 文件
将 index.html 文件的内容修改如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>First Angular App</title>
<link rel="stylesheet" href="app.css" type="text/css" />
<script src="node_modules/systemjs/dist/system.js"></script>
<script src="node_modules/angular2/bundles/angular2.js"></script>
<script src="app.js"></script>
</head>
<body>
<script>
System.import('app.js');
</script>
<h1>TypeScript HTML App</h1>
<div id="content">
<contact></contact>
</div>
</body>
</html>
这里有几点需要注意:
- 如果您在这里注意到,我们引用的是 js 文件而不是 .ts TypeScript 文件。在编译项目时需要 TypeScript 文件,但我们需要在 HTML 中引用 js 文件。
- TypeScript 编译器将从页面上引用的 app.ts TypeScript 文件生成一个 app.js 文件。
- 此外,我们还在页面中引用了 angular2.js 和 system.js 文件。
- 我们正在调用 System.import 方法来注册我们的 Angular 组件。在注册过程中,Angular2 将通过将组件加载到指定的选择器中来引导应用程序。
运行应用程序
现在,当您运行应用程序时,应该会在浏览器中看到以下内容:
历史
初稿 - 2015/11/29