美文网首页
Angular.js

Angular.js

作者: DragonRat | 来源:发表于2018-07-03 16:45 被阅读0次

简介:Angular 是一个用 HTML 和 JavaScript 或者一个可以编译成 JavaScript 的语言(例如 Dart 或者 TypeScript ),来构建客户端应用的框架

angular目录结构


app/app.component.ts:根组件,随着应用的演变,它将变成一颗嵌套组件树
app/app.module.ts:定义AppModule根模块为 Angular 描述如何组装应用
main.ts:使即时 (JiT) 编译器用编译应用并且在浏览器中启动并运行应用

我们是这样写 Angular 应用的:用 Angular 扩展语法编写 HTML 模板, 用组件类管理这些模板,用服务添加应用逻辑, 用模块打包发布组件与服务;然后,我们通过引导根模块来启动该应用。 Angular 在浏览器中接管、展现应用的内容,并根据我们提供的操作指令响应用户的交互;

anguelar架构


Angular 应用程序的八个主要构造块的基础知识: 模块 (module)
组件 (component)模板 (template)元数据 (metadata)数据绑定 (data binding)指令 (directive)服务 (service)依赖注入 (dependency injection)

模块:

//app.module.ts
//模块库
//每个 Angular 库的名字都带有@angular前缀
//例子:import { Component } from '@angular/core';从@angular/core库中导入Component装饰器
import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule }   from '@angular/forms';
import { HttpModule }    from '@angular/http';
//Angular 模块(一个用@NgModule装饰的类)是 Angular 的基础特性。其余的为Javascript模块系统,用来管理JavaScript对象
import { AppRoutingModule } from './app-routing.module';

// Imports for loading & configuring the in-memory web api
import { InMemoryWebApiModule } from 'angular-in-memory-web-api';
import { InMemoryDataService }  from './in-memory-data.service';

import { AppComponent }         from './app.component';
import { DashboardComponent }   from './dashboard.component';
import { HeroesComponent }      from './heroes.component';
import { HeroDetailComponent }  from './hero-detail.component';
import { HeroService }          from './hero.service';
import { HeroSearchComponent }  from './hero-search.component';

//Angular 模块是一个由@NgModule装饰器提供元数据的类,元数据包括:
//声明哪些组件、指令、管道属于该模块。
//公开某些类,以便其它的组件模板可以使用它们。
//导入其它模块,从其它模块中获得本模块所需的组件、指令和管道。
//在应用程序级提供服务,以便应用中的任何组件都能使用它。


//@NgModule是一个装饰器函数,它接收一个用来描述模块属性的元数据对象。其中最重要的属性是:
// declarations - 声明本模块中拥有的视图类。Angular 有三种视图类:组件、指令和管道。
// exports - declarations 的子集,可用于其它模块的组件模板。
// imports - 本模块声明的组件模板需要的类所在的其它模块。
// providers - 服务的创建者,并加入到全局服务列表中,可用于应用任何部分。
// bootstrap - 指定应用的主视图(称为根组件),它是所有其它视图的宿主。只有根模块才能设置bootstrap属性

@NgModule({
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    InMemoryWebApiModule.forRoot(InMemoryDataService),
    AppRoutingModule
  ],
  declarations: [
    AppComponent,
    DashboardComponent,
    HeroDetailComponent,
    HeroesComponent,
    HeroSearchComponent
  ],
  providers: [ HeroService ],
  bootstrap: [ AppComponent ]
})
//import导入模块
//export导出模块接口  AppMoudle根模块
export class AppModule { }
//main.ts
//导入浏览器相关
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
//导入根模块
import { AppModule } from './app/app.module';
//引导AppModule来启动应用
platformBrowserDynamic().bootstrapModule(AppModule);

组件,元数据

import 'rxjs/add/operator/switchMap';
import { Component, OnInit }      from '@angular/core';
import { ActivatedRoute, Params } from '@angular/router';
import { Location }               from '@angular/common';

import { Hero }        from './hero';
//引入服务
import { HeroService } from './hero.service';

//TypeScript中,我们用装饰器 (decorator) 来附加元数据
@Component({
  //下面三个为元数据(Metadata);告诉 Angular 如何处理一个类
  selector: 'hero-detail',
  templateUrl: './hero-detail.component.html',
  styleUrls: [ './hero-detail.component.css' ]
})
export class HeroDetailComponent implements OnInit {
  //HeroDetailComponent中hero属性
  hero: Hero;
  //定义这个属性的内容
  constructor(
    private heroService: HeroService,
    private route: ActivatedRoute,
    private location: Location
  ) {}
  //下面为三个方法定义这些内容的具体实现
  ngOnInit(): void {
    this.route.params
      .switchMap((params: Params) => this.heroService.getHero(+params['id']))
      .subscribe(hero => this.hero = hero);
  }

  save(): void {
    this.heroService.update(this.hero)
      .then(() => this.goBack());
  }

  goBack(): void {
    this.location.back();
  }
}

模板

相关文章

网友评论

      本文标题:Angular.js

      本文链接:https://www.haomeiwen.com/subject/ogbduftx.html