美文网首页我爱编程
学习Angular2系列(2)----认识

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

作者: Threejs开发者 | 来源:发表于2018-03-31 22:44 被阅读0次

    一、核心模块功能概览

    完整的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 双向数据绑定

     <input [(ngModel)]="contact.birthday" >
    

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

    2.4.3 监听绑定

    <a class = "edit" (click)="editContact()">编辑</a>
    

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

    2.4.3 输入和输出属性

    =左边:数据绑定目标

    =右边:数据绑定的源

    <list-item [contact]="contact" (routerNavigate)="routerNavigate($event)"></list-item>
    
    • contact和routerNavigate都是数据绑定的目标。
    • contact是属性绑定的目标,数据通过模板表达式流向目标属性contact。
    • routerNavigate是事件绑定的目标。

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

    export class ListItemComponent implements OnInit {
      @Input() contact:any = {};
      @Output() routerNavigate = new EventEmitter<number>();
    
      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)----认识

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