美文网首页
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