学习Angular2系列(2)----认识

一、核心模块功能概览

完整的Angular2应用主要由6部分组成,分别是组件、模板、指令、服务、依赖注入、路由。

1.1 组件

组件包括:模板和组件类。
模板:与用户直接交互
组件类:维护组件的数据模型和功能逻辑。

1.2 路由

功能:控制组件的创建和销毁,从而驱使应用界面跳转切换。

1.3 指令

指令与模板相互关联,最重要的作用是增强模板特性,间接扩展了模板的语法。

1.4 服务

封装了若干功能逻辑的单元,可以通过依赖注入机制引入到组件内部,作为组件功能的扩展。

二、组件

2.1 组件的组成

1)组件装饰器,@Component修饰的组件类成为组件
2)组件元数据:selector、template
3)模板,每个组件关联一个模板,这个模板最终渲染到页面上。页面上的元素就是此组件实例的宿主元素。
4)组件类,组件实际也是一个普通的类,组件的逻辑都在组件类里定义并实现。

import {Component} from "@angular/core";

@Component({
  selector: "contact-app",
  templateUrl: "app/app.component.html",
  styleUrls: ["app/app.component.css"]
})

export class AppComponent {
  constructor() {}
}

2.2 组件装饰器

@Component是TypeScript语法。

2.3 组件元数据

1)selector,用于定义组件在HTML代码中匹配的标签,它将成为组件的命名标记。
2)template,为组件指定一个内敛模板。templateUrl,为组件指定一个外部模板。
3)stsles/templateUrl,模板的样式。

2.4 组件模板

组件内容最终渲染到模板的DOM元素上,DOM元素也成宿主元素。组件与宿主元素可以进行交互,交互的形式包括:显示数据双向数据绑定监听事件

2.4.1 显示数据

可以使用插值语法 {{}} 来显示组件的数据。数据由组件类的成员变量替代。

2.4.2 双向数据绑定

 

[]实现了数据流从组件类到模板。
()实现了数据流从模板到组件

2.4.3 监听绑定

编辑

发生点击事件,就会调用组件的editContact()方法。

2.4.3 输入和输出属性

=左边:数据绑定目标

=右边:数据绑定的源


  • contact和routerNavigate都是数据绑定的目标。
  • contact是属性绑定的目标,数据通过模板表达式流向目标属性contact。
  • routerNavigate是事件绑定的目标。

Angular提供了输入(@Input)和输出(@Output)语法来除了组件数据的流入和流出。

export class ListItemComponent implements OnInit {
  @Input() contact:any = {};
  @Output() routerNavigate = new EventEmitter();

  constructor() {}
  ngOnInit() {
  }
  goDetail(num: number) {
    this.routerNavigate.emit(num);
  }
}

三、指令

与模板关系密切,可以与DOM进行灵活交互,可以改变样式或布局。指令分为2种:结构指令和属性指令。

四、模块

4.1 模块概览

每个Angular应用至少有一个模块,作为应用的入口,这个模块称为根模块(Root Module)。通过引导运行根模块来启动Angular应用。除了跟模块,还有封装完整功能的特性模块(Feature Module)、封装一些公共构件的共享模块(Shared Module)、应用级别核心构件的核心模块(Core Module)。

4.2 引导启动

Angular通过引导运行根模块来启动应用。引导方式有两种,动态引导和静态引导。
Angular在运行之前,都需要经过编译器对模块组件等进行编译,编译之后开始启动应用渲染界面。动态引导和静态引导的区别就在编译的时机不同。

  • 动态引导,将所有代码加载到浏览器,在浏览器中进行编译。
  • 静态引导,编译过程前置到开发时的工程打包阶段,加载浏览器是编译之后的代码。
//动态启动
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
import {AppModule} from './app/app.module';

platformBrowserDynamic().bootstrapModule(AppModule)
  .catch(err => console.error(err));

尾部:
至此,一个简单的Angular2的工程就可以进行渲染了。将会理解组件、模块的使用方式。接下来是路由的学习。

<全文结束>

你可能感兴趣的:(学习Angular2系列(2)----认识)