ng2文档学习(一、基础架构)

这张是ng2的基础架构全景图。

文档的示例都是ts语法!

都是一些自己的看文档的一些的摘抄,有一起学的小伙伴留言一起研究下哈

模块(module)

angular有自己的模块系统,称为angular模块或者NgModules

每个angular至少有一个模块(AppModule根模块,大多数应用会有很多特性模块

angular模块都是一个带有@NgModule装饰器的类

装饰器是用来修饰javascript类的函数,负责将元数据加到类上

NgModule是一个装饰器函数,参数为一个描述模块属性的元数据对象,其中重要的属性是:

  • declarations - 声明本模块中拥有的视图类。 Angular 有三种视图类:组件指令管道
  • exports - declarations 的子集,可用于其它模块的组件模板
  • imports - 本模块声明的组件模板需要的类所在的其它模块。
  • providers - 服务的创建者,并加入到全局服务列表中,可用于应用任何部分。
  • bootstrap - 指定应用的主视图(称为根组件),它是所有其它视图的宿主。只有根模块才能设置bootstrap属性。

文档中简单的根模块示例:

import { NgModule }      from ‘@angular/core‘;
import { BrowserModule } from ‘@angular/platform-browser‘;
@NgModule({
  imports:      [ BrowserModule ],
  providers:    [ Logger ],
  declarations: [ AppComponent ],
  exports:      [ AppComponent ],
  bootstrap:    [ AppComponent ]
})
export class AppModule { }

import、export、装饰器(还有诸如类型注解等等)的概念都是typescript的一些重要的概念。

通过引导根模块启动app。开发时,通常在一个main.ts文件中引导AppModule。

angular库的名字都带有@angular前缀,用npm安装,用js的import导入某些部件。

组件(component)

负责控制视图。

在类中定义组件的应用逻辑,为视图提供支持。组件通过api的属性和方法与视图交互。

文档中的示例

export class HeroListComponent implements OnInit {
  heroes: Hero[];
  selectedHero: Hero;

  constructor(private service: HeroService) { }

  ngOnInit() {
    this.heroes = this.service.getHeroes();
  }

  selectHero(hero: Hero) { this.selectedHero = hero; }
}

在这个应用中,ng会创建、更新和销毁组件。

模板(template)

通过组件的模板来定义组件的视图。以html形式存在,去渲染组件。

文档中的组件模板示例:

  • <h2>Hero List</h2>
  • <p><i>Pick a hero from the list</i></p>
  • <ul>
  • <li *ngFor="let hero of heroes" (click)="selectHero(hero)">
  • {{hero.name}}
  • </li>
  • </ul>
  • <hero-detail *ngIf="selectedHero" [hero]="selectedHero"></hero-detail>

多数情况下与html相同,还可以使用ng的指令以及例如模板最后一行的标签是用来表示组件的自定义元素

元数据(metadata)

如何处理一个类。(用装饰器来附加元数据)

文档中的示例:

@Component({
  moduleId: module.id,
  selector:    ‘hero-list‘,
  templateUrl: ‘hero-list.component.html‘,
  providers:  [ HeroService ]
})
export class HeroListComponent implements OnInit {
/* . . . */
}

@Component装饰器把紧随其后的类标记成了组件类

  • moduleId: 为与模块相关的 URL(例如templateUrl)提供基地址。
  • selector: CSS 选择器,它告诉 Angular 在父级 HTML 中查找<hero-list>标签,创建并插入该组件。 例如,如果应用的 HTML 包含<hero-list></hero-list>, Angular 就会把HeroListComponent的一个实例插入到这个标签中。
  • templateUrl:组件 HTML 模板的模块相对地址,如前所示
  • providers - 组件所需服务的依赖注入提供商数组。 这是在告诉 Angular:该组件的构造函数需要一个HeroService服务,这样组件就可以从服务中获得英雄数据。

数据绑定(data binding)

数据绑定的四种形式如文档中的图,插值表达式、属性绑定、事件绑定、双向数据绑定

双向数据绑定中,数据属性通过属性绑定从组件流到输入框。而用户的修改通过事件绑定流回组件,把属性值设置为最新的值。

文档中的示例:

<li>{{hero.name}}</li>  //插值表达式
<hero-detail [hero]="selectedHero"></hero-detail>  //属性绑定
<li (click)="selectHero(hero)"></li>  //事件绑定
<input [(ngModel)]="hero.name">  //双向数据绑定

指令(directive)

angular模板是动态的。根据指令提供的操作对dom进行转换,渲染模板。

指令是一个带有“指令元数据”的类。

组件是一个带模板的指令。

指令分为 组件、结构型指令、属性型指令。

结构型指令示例:

<li *ngFor="let hero of heroes"></li>
<hero-detail *ngIf="selectedHero"></hero-detail>

属性型指令示例:

<input [(ngModel)]="hero.name">

服务(service)

组件介于视图(由模板渲染)和应用逻辑之间。设计良好的组件为数据绑定提供属性和方法,把其它琐事委托给服务。

依赖注入(注入器inject)

提供类的新实例的一种方式,负责处理好类所需的全部依赖。

服务和依赖注入不是很清晰的明白,后面文档的学习应该会加深我对这些的理解:)

时间: 2024-11-04 05:44:27

ng2文档学习(一、基础架构)的相关文章

Android文档学习01_Android基础

一旦安装到了一个设备,每个应用生存在它自己的安全沙箱 系统给每个应用分配一个独立的Linux用户ID(这个ID只由系统使用并且对应用来说是不可知的) Android系统实现了最小特权原则.默认,每个应用仅仅访问需要工作的组件,并不多做其他的事.这样创建了一个非常安全的环境,应用不能访问系统没有授权的其他部分 有可能安排两个应用共用一个linux系统ID,在那种情况下,它们能互相访问相互的数据.为了节约系统资源,拥用相同用户ID的应用,可能也被安排运行在同一个Linux进程中并共享相同的VM(应用

EasyUI文档学习心得

概述 jQuery EasyUI 是一组基于jQuery 的UI 插件集合,它可以让开发者在几乎完全不需要CSS以及复杂的JS代码情况下完成美观且功能强大的Web界面. 本文主要说明一些如何利用EasyUI文档快速学习的心得.官网文档介绍的比较详细,也可以使用中文文档.各版本中文文档地址: http://download.csdn.net/album/detail/343 为什么说几乎不需要CSS? EasyUI中自带了各个组件的CSS样式,并且有多种主题可选.即使默认提供的几种主题不能满足需要

Spring3.0官网文档学习笔记(一)

Part 1 Spring框架概述 Spring是模块化的,在应用中只需要引入你所需要用到的模块的jar包,其余的jar包不用引入. spring框架支持声明式的事务管理,通过RMI或web service访问你的逻辑,还有许多种方式保存数据. spring被设计成非侵入式的. 1.Spring框架简介 Spring框架提供了应用开发的基础部分,使得我们可以集中精神在业务开发层上. POJOS:plain old Java objects Spring允许创建非侵入式的POJO.这个特性支持Ja

20140602-XML之Schema文档学习笔记

20140602-XML之Schema文档学习笔记 一.Schema约束 几个重要知识: 1.namespace 相当于schema文件的id.Namespace是一个概念,并没有这个属性. 2.targetNamespace属性 注意:这个属性只在schema文档中出现.用来指定schema文档的namespace的值. 3.xmlns属性(非常重要,用于引入一个约束) 引入一个约束,它的值是一个schema文档的targetNamespace值(确切地说,是targetNamespace的属

Spring3.0官网文档学习笔记(五)--3.3

3.3 概述 Table 3.1. The bean definition Property Explained in... class Section 3.3.2, "Instantiating beans" name Section 3.3.1, "Naming beans" scope Section 3.5, "Bean scopes" constructor arguments Section 3.4.1, "Dependen

Spring3.0官网文档学习笔记(六)--3.4.1

3.4 依赖 3.4.1 依赖注入 依赖注入两种方式:基于构造器的DI.基于setter方法的DI. 3.4.1.1 基于构造器的DI 参数是引入对象,且之前不存在父-子类关系: package x.y; public class Foo { public Foo(Bar bar, Baz baz) { // ... } } <beans> <bean id="foo" class="x.y.Foo"> <constructor-arg

Spring3.0官网文档学习笔记(七)--3.4.2

3.4.2 依赖与配置的细节 3.4.2.1  Straight values (primitives, Strings, and so on) JavaBeans PropertyEditors被用来转换这些value到实际的类型.? <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <

Spring3.0官网文档学习笔记(四)--3.1~3.2.3

3.1 Spring IoC容器与Beans简介 BeanFactory接口提供对任意对象的配置: ApplicationContext是BeanFactory的子接口,整合了Spring Aop功能,消息资源控制,事件发布,应用层特殊的上下文(在web应用中) 由IoC容器实例化.组装.管理的对象都是Bean 3.2 容器概述 org.springframework.context.ApplicationContext代表Spring IoC容器,并且负责通过读取配置元数据来实例化.配置.组装

Spring3.0官网文档学习笔记(八)--3.4.3~3.4.6

3.4.3 使用depends-on 使用depends-on可以强制使一个或多个beans先初始化,之后再对这个bean进行初始化. 多个bean之间用",".";"." "隔开. <bean id="beanOne" class="ExampleBean" depends-on="manager"/> <bean id="manager" cla