让我先说一句,我假设您和所有将阅读本文的人都已经熟悉 Angular 1(now referred to as AngularJS,而不是简单的 Angular 用于较新的版本)。话虽如此,让我们来看看 Angular 2+ 中的一些新增功能和主要区别。
- 他们添加了一个角度
cli。
您可以通过运行ng new [app name] 来启动一个新项目。
您可以通过运行ng serve 为您的项目服务
在此处了解更多信息:https://github.com/angular/angular-cli
- 您的 Angular 代码是用 ES6 Typescript 编写的,它在运行时编译为浏览器中的 Javascript。
要全面了解这一点,我建议您查看答案底部的一些资源列表。
- 项目结构
在基本结构中,您将拥有一个 app/ts 文件夹,您将在其中完成大部分工作,以及一个 app/js 您将在 app/js 文件夹中找到带有 .js.map 扩展名的文件.他们将您的“.ts”文件“映射”到您的浏览器以进行调试,因为您的浏览器无法读取本机打字稿。
更新:它已经过测试版了。项目结构发生了一些变化,在大多数情况下,如果您使用 angular cli,您将在
src/app/ 文件夹。在初始项目中,您将拥有以下内容。
app.component.css
app.component.html
app.component.spec.ts
app.component.ts
app.module.ts
index.ts
app.component.css:您应该使用特定于component.html的CSS文件
app.component.html:视图(在 app.component.js 中声明的变量)
app.component.spec.ts:用于测试app.component.ts
app.component.ts:绑定到app.component.html的代码
app.module.ts:这是启动您的应用程序以及定义所有插件、组件、服务等的地方。这相当于 Angular 1 中的 app.js p>
index.ts用于定义或导出项目文件
其他信息:
专业提示:您可以运行ng generate [option] [name] 来生成新的服务、组件、管道等。
tsconfig.json 文件也很重要,因为它为您的项目定义了 TS 编译规则。
如果你在想我必须学习一门全新的语言?...呃...有点,TypeScript 是 JavaScript 的超集。不要被吓倒;它可以让您的开发更轻松。玩了几个小时后,我感觉自己掌握得很好,3天后就完全掌握了。
- 您可以像在 Angular 1 指令中那样绑定到 HTML。所以像
$scope 和$rootScope 这样的变量已经被弃用了。
这个你可能已经被暗示了。 Angular 2 仍然是 MV*,但您将使用“components”作为将代码绑定到模板的一种方式,例如,采用以下方式
import { Component } from '@angular/core';
@Component({
selector:'my-app',
template: '<h1> Hello World! </h1>'
})
export class AppComponent {}
这里将import 语句视为您在v1 控制器中的依赖注入。你使用import 来导入你的包,import {Component} 表示你将创建一个component 你想绑定到你的HTML。
注意@Component 装饰器,你有一个selector 和template。这里将selector 视为您使用的$scope,就像您使用v1 directives 一样,其中selector 的名称是您用来绑定到HTML 的名称,就像这样
<my-app> </my-app>
<my-app> 是您将使用的自定义标签的名称,它将充当模板中声明的内容的占位符。即)<h1> Hello World! </h1>。而这在 v1 中如下所示:
HTML
<h1>{{hello}}</h1>
JS
$scope.hello = "Hello World!"
您还可以在这些标签之间添加一些内容以生成加载消息,如下所示:
<my-app> Loading... </my-app>
然后它将显示“Loading...”作为加载消息。
请注意,template 中声明的内容是您将在 HTML 中的 selector 标记中使用的路径或原始 HTML。
Angular 1 的更完整的实现看起来更像这样:
HTML
<h1 ng-controller="myCtrl">{{hello}}</h1>
在 v1 中,这看起来像
JS
angular.module('controller', [])
.controller('myCtrl', function( $scope) {
$scope.hello = "Hello World!"
})
这是我真正喜欢 v2 的地方。我发现指令在 v1 中对我来说是一个陡峭的学习曲线,即使我发现它们我经常让 CSS 渲染不是我想要的。我发现这更简单。
V2 允许您的应用更容易扩展,因为您可以比 v1 更轻松地拆分应用。我喜欢这种方法,因为您可以将所有工作部件放在一个文件中,而不是在 angular v1 中使用多个。
如何将您的项目从 v1 转换为 v2?
根据我从开发团队那里听到的消息,如果您想将 v1 项目更新到 v2,您只需检查并删除已弃用的 blob,然后将您的 $scopes 替换为 selectors。我发现这个视频很有帮助。一些 Ionic 团队与 Angular 团队并肩工作,因为 v2 更加关注移动设备https://youtu.be/OZg4M_nWuIk希望这会有所帮助。
更新:随着 Angular 2 的官方实现浮出水面,我通过添加示例进行了更新。
更新 2:这似乎仍然是一个受欢迎的问题,所以我只是想我会在开始使用 angular 2 时发现一些非常有用的资源。
有用的资源:
有关 ES6 的更多信息,我建议查看 The New Boston 的 ECMAScript 6 / ES6 New Features Tutorials - YouTube Playlist
要编写 Typescript 函数并查看它们如何编译为 Javascript,请查看 Typescript language Playground
要逐个查看 Angular 1 等效项在 Angular 2 中的功能细分,请参阅Angular.io - Cookbook -A1 A2 Quick Reference