背景与概念:
AngularJS2 是一款开源JavaScript库,由Google维护,用来协助单一页面应用程序运行。
AngularJS2 是 Angular 1.x 的升级版本,性能上得到显著的提高,能很好的支持 Web 开发组件。
AngularJS2 发布于2016年9月份,它是基于ES6来开发的。
Angular2.x与Angular1.x 的区别
Angular2.x与Angular1.x 的区别类似 Java 和 JavaScript 或者说是雷锋与雷峰塔的区别,所以在学习Angular2.x时大家需要做好重新学习一门语言的心里准备。
开工前的准备工作
学习AngularJS2前,你需要具备基本的前端基础:HTML、CSS、JavaScript。此外你还需要了解 NPM 及 TypeScript。
Angular 2 架构
Angular 2 应用程序应用主要由以下 8 个部分组成:
下面看每个部分是如何相互工作的:
模板 (Templates)是由 Angular 扩展的 HTML 语法组成,组件 (Components)类用来管理这些模板,应用逻辑部分通过服务 (Services)来完成,然后在模块中打包服务与组件,最后通过引导根模块来启动应用。
接下来对以上 8 个部分分开解析:
1.模块
模块又一块代码组成,可用于执行一个简单的任务。
Angular 应用是由模块化的,它有自己的模块系统:NgModules。
每个 Angular 应该至少要有一个模块(根模块),一般可以命名为:AppModule。
Angular 模块是一个带有 @NgModule 装饰器的类,它接收一个用来描述模块属性的元数据对象。
几个重要的属性如下:
declarations (声明)- 视图类属于这个模块。 Angular 有三种类型的视图类: 组件 、 指令 和 管道 。
exports- 声明( declaration )的子集,可用于其它模块中的组件模板 。
imports- 本模块组件模板中需要由其它导出类的模块。
providers- 服务的创建者。本模块把它们加入全局的服务表中,让它们在应用中的任何部分都可被访问到。
bootstrap- 应用的主视图,称为根组件,它是所有其它应用视图的宿主。只有根模块需要设置 bootstrap 属性中。
一个最简单的根模块,eg:
接下来通过引导根模块来启动应用,开发过程通常在 main.ts 文件中来引导 AppModule :
2.组件(Components)
组件是一个模板的控制类用于处理应用和逻辑页面的视图部分。
组件是构成 Angular 应用的基础和核心,可用于整个应用程序中。
组件知道如何渲染自己及配置依赖注入。
组件通过一些由属性和方法组成的 API 与视图交互。
创建 Angular 组件的方法有三步:
从 @angular/core 中引入 Component 修饰器
建立一个普通的类,并用 @Component 修饰它
在 @Component 中,设置 selector自定义标签,以及 template模板
3.模板(Templates)
Angular模板的默认语言就是HTML。
我们可以通过使用模板来定义组件的视图来告诉 Angular 如何显示组件。以下是一个简单是实例:
网站地址 :
4.元数据(Metadata)
元数据告诉 Angular 如何处理一个类。
考虑以下情况我们有一个组件叫作 Component ,它是一个类,直到我们告诉 Angular 这是一个组件为止。
你可以把元数据附加到这个类上来告诉 Angular Component 是一个组件。
在 TypeScript 中,我们用 装饰器 (decorator) 来附加元数据。
菜鸟教程
‘
export class ListComponent{…}
@Component 装饰器能接受一个配置对象,并把紧随其后的类标记成了组件类。
Angular 会基于这些信息创建和展示组件及其视图。
@Component 中的配置项说明:
selector- 一个 css 选择器,它告诉 Angular 在 父级 HTML 中寻找一个 标签,然后创建该组件,并插入此标签中。
templateUrl- 组件 HTML 模板的地址。
directives- 一个数组,包含 此 模板需要依赖的组件或指令。
providers- 一个数组,包含组件所依赖的服务所需要的依赖注入提供者。
5.数据绑定(Data binding)
数据绑定为应用程序提供了一种简单而一致的方法来显示数据以及数据交互,它是管理应用程序里面数值的一种机制。
通过这种机制,可以从HTML里面取值和赋值,使得数据的读写,数据的持久化操作变得更加简单快捷。
插值: 在 HTML 标签中显示组件值。
Angular2 入门属性绑定: 把元素的属性设置为组件中属性的值。
事件绑定: 在组件方法名被点击时触发。
双向绑: 使用Angular里的NgModel指令可以更便捷的进行双向绑定。
|
|
export class Logger {
log(msg: any) { console.log(msg); }
error(msg: any) { console.error(msg); }
warn(msg: any) { console.warn(msg); }
}
当 Angular 创建组件时,会首先为组件所需的服务找一个注入器( Injector ) 。
注入器是一个维护服务实例的容器,存放着以前创建的实例。
如果容器中还没有所请求的服务实例,注入器就会创建一个服务实例,并且添加到容器中,然后把这个服务返回给 Angular 。
当所有的服务都被解析完并返回时, Angular 会以这些服务为参数去调用组件的构造函数。