前言:

angular2官方将框架按以下结构划分:

  1. Module
  2. Component
  3. Template
  4. Metadata
  5. Data Binding
  6. Directive
  7. Service
  8. Dependency Injection

本文简单介绍一下,这些知识点,以浅入的方式理解angular2的基础概念和结构。

一、Module (模块)

  • Angular 是模块化的.
  • Modules 导出 classes, function, values , 以便在其他模块导入使用.
  • angular应用由模块组成,每个模块都做此模块相关的事情

组件、方法、类、服务等,他们都可以成为模块。

module基本使用

  自定义一个模块文件和main入口文件:

    app.component.ts

    main.ts

  

export class AppComponent { }  //新建 app.component.ts 并导出当前自定义模块:

  

import { AppComponent } from './app.component';  //在入口文件main.ts 引用自定义模块app.component:

  

import { Component } from 'angular/core';  //引入angular自带模块Component:

引用自定义模块,需要加上路径,ng会根据路径找到模块,而框架本身的模块不需要路径,它会自动匹配到相应模块。

学习过node的,相信都应该理解。

二、Component (组件)

  在angular2中,Component 是我们构建页面元素和逻辑的主要方式,而在angular1中要实现这些需要directives, controllers和scope。

在angular2, 他们都被合成到了Component里。

例子:

import {Component} from 'angular2/core'@Component({selector: 'my-component',template: '<div>Hello my name is {{name}}. <button (click)="sayMyName()">Say my name</button></div>'
})
export class MyComponent {constructor() {this.name = 'Max'}sayMyName() {console.log('My name is', this.name)}
}

  selector 指定了自定义标签,template配置好了dom元素、绑定了数据和事件, this实际代替了angular1中的scope

  最后,在html里我们可以用<my-component></my-component>标签创建当前Component。

三、Template (模板)

  angular2 的 html template大部分还是一般的html,只是会混合一些框架可识别的属性或者指令,比如:()、{}、 {{}}、 [()] 等。实际就和一般的模板引擎差不多

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

四、Metadata (元数据)

  什么是元数据?元数据是关于数据的组织、数据域及其关系的信息。

在angular2中,如下例:

selector、templateUrl、directives、providers 他们都是元数据

import {Component} from 'angular2/core';
@Component({selector:    'hero-list',templateUrl: 'app/hero-list.component.html',directives:  [HeroDetailComponent],providers:   [HeroService]
})
export class HeroesComponent { ... }

  template, metadata, component 相互作用组成视图,而metadata就是关联组件和模板的数据。

五、Data Binding (数据绑定)

  用过angular的一个特色就是双向绑定,这个在ng1里就已经赫赫有名了。

  如下图,

图中告知了数据的流动方向,

  {{value}}和[property]='value',变量绑定在Component中,只要在Component中控制变量值改变,dom中就会更新,它是单向的。

  (event)是事件绑定,是单向的,在dom中触发,从而告知Component。

  [(ng-model)]或者[(ngModel)]实现双向绑定, angular1中,我们要实现双向绑定是用ng-model="xx",angular2中从用法上来说确实只是多加了两个括号。

  angular2中有个通用规则,ng-model ngModel,中线分割和驼峰命名相等。

六、Directive(指令)

  angular模板是动态的,渲染模板的时候dom根据directive的规则转换并渲染。

<div *ngFor="let hero of heroes"></div>  //*ngFor循环遍历heroes

<input [(ngModel)]="hero.name">  //[(no-model])双向绑定

 

  以上这些都是angular2自带的指令。

  我们也可以自己定义指令。

  单从概念上来说,angular1和2的指令几乎是一样的。他们改变的不过是写法和使用方式。

七、Service(服务)

  几乎一切我们开发的代码都可以算是服务。比如:一个特定的class、一个工具类或者一个组件。

服务就是一个概念,angular本身没有为它实现什么基类。angular只是让我们遵循一个规则,按照规则,我们写出我们想要的实质代码,

组成一个个小的服务,最后通过框架把它们组成我们的应用。这些服务都通过 “依赖注入”(Dependency Injection) 的方式为我们的应用提供服务。

八、Dependency Injection(依赖注入)

  “依赖注入”连接和应用在整个框架,当你想在一个“组件”里使用一个“服务”时,你需要通过“依赖注入”的方式,把服务载入到当前组件,

并在组件申明使用它。有两种方法

  第一种:

bootstrap(AppComponent, [TheService]);

  这样直接把这个service注入到整个app里面。然后这个app-component包括它所有的子模块都能使用 TheService这个service。

在Angular2里面所有的service是单例的,一旦在当前模块生成了单例service,它的子模块都将共同使用它。他们都将操作同一个service。

  如果需要每个子模块都使用唯一的service,就要使用第二种方式:

@Component({selector: 'hero-editor',providers: [RestoreService]
})

  在component的providers里面直接注入service。

  “依赖注入” 就是把我们需要的服务提供给我们应用的其他服务,让它们之间能够相互使用。

小结:

  我们这里大致介绍了下angular2的结构和这八个基础知识,从入门来说,我们仅仅是了解一些浅显的知识。

搞清楚基本结构和它们之间的关系,有利于后期的深入学习和使用。

通过本文, 再实践一下angular2官网的 5 MIN QUICKSTART 会不会要好理解一些了呢?

最后附一张总结图:

  

  以上图片来自angular2官网,内容经过本人理解过滤,此文仅仅是学习笔记分享, 理解不深, 有望后续更新。

  

理解 angular2 基础概念和结构 ----angular2系列(二)相关推荐

  1. 理解_RBAC基础概念_Spring Security OAuth2.0认证授权---springcloud工作笔记113

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 这个RBAC ,以前就知道并且用了,很简单,这个部分不会很详细. 可以看到基于角色的访问控制,是判 ...

  2. SEO系列之基础概念

    原文地址:SEO系列之基础概念 - 文章详情 SEO系列之基础概念 SEO是什么,SEO对我们来说有什么用,SEO能用在哪里?在学习SEO之前,我们必须要知道自己要学的是什么,有什么用,怎么用.带着问 ...

  3. 微信公众号文章采集的一些基础概念

    此文已在本人知乎号上首发: 微信公众号文章采集的一些基础概念 背景 经常有人问我微信文章采集相关的基础常识问题,对于新手来说,一些概念性的问题确实不太了解.但经常被问得也烦了,所以单独写一篇文章总结一 ...

  4. BlockChain:区块链技术基础概念综合理解——个人总结

    BlockChain:区块链技术基础概念综合理解--个人总结 目录 区块链的进阶与意义 1.区块链技术的进阶 2.区块链技术三大意义-传递价值.建立可信用环境.提高效率和降低成本 1.传递价值 2.建 ...

  5. NumPy 快速入门系列:应用统计学基础概念、相关统计指标与NumPy的实现

    NumPy 快速入门系列:应用统计学基础概念.相关统计指标与NumPy的实现 前言: 统计学导论: 统计学定义: 统计学分类: 统计学基本概念: 统计过程: 统计指标与NumPy: 用 Python ...

  6. 自己动手实现蓝牙MESH应用系列 | 第一篇:蓝牙MESH基础概念介绍

    文章目录 1. 前言 2. 概述 2.1. 蓝牙风格(Flavors) 2.2. mesh网络的动机 2.3. mesh网络中的消息传输方式 2.3.1. 以消息为中心的通信 - 发布/订阅(publ ...

  7. 从属关系mysql_关系型数据库基础概念:MySQL系列之开篇

    一.基础概念 数据(Data)是描述事物的符号记录,是指利用物理符号记录下来的.可以鉴别的信息. 1.数据库(Database,DB)是指长期储存在计算机中的有组织的.可共享的数据集合.数据要按照一定 ...

  8. 【数据结构基础/接口函数编写】二叉树第一弹之树和堆的概念和结构、基础堆接口函数的实现(编写思路加逻辑分析加代码实操,一应俱全的汇总)

    文章目录 树的概念及结构 树的概念 树的相关概念 树的表示 二叉树的概念及结构 二叉树的概念 特殊的二叉树: 二叉树的存储结构 二叉树的性质 顺序储存 链式储存 堆 堆的概念及结构 堆的实现 头文件 ...

  9. 小程序开发系列之基础部分-代码结构

    小程序开发系列基础部分-代码结构 上节中开发环境帮助自动生成很多文件,也尝试的修改了一些并完成了显示 小程序一个页面有四个文件组成: (1)js 表示页面逻辑 (2)wxml 表示页面结构 (3)wx ...

最新文章

  1. jna 不是有效的 win32 应用程序_教你打开程序提示不是有效的win32程序怎么办
  2. 多视图几何总结——等距变换、相似变换、仿射变换和射影变换
  3. Linux Kernel 3.8.8/3.4.41/3.0.74 发布
  4. 关于Crypto.PublicKey.RSA,在generate后无法被赋值问题
  5. c语言简易成绩管理系统c语言,C语言写的简易成绩管理系统
  6. cascade=CascadeType.ALL的深坑
  7. 高通平台 Camera基础
  8. php 嵌入手机百度地图,C# 程序中嵌入百度地图
  9. Mac安装oh-my-zsh更改终端背景
  10. word把选择答案弄到题目里_一个极限案例弄明白为何“看答案都明白,做题目就是想不起来”...
  11. Tensorflow——placeholder(矩阵运算小实例)
  12. ArcGIS 城市生活区用地适宜性评价(五)
  13. hart协议服务器,基于HART协议智能仪表的在线管理系统的设计与实现
  14. 云豹直播系统源码搭建部署教程
  15. 【Arcgis操作】模块化(批量、自动化)计算多个图层的面积
  16. vue 点击文字input_Vue实现点击按钮复制文本内容
  17. SAP 客户端不能访问解决方案
  18. 人生感悟:欲望适度则为利,欲望过度则为害
  19. .mat转.tif 用于arcgis裁剪遥感图像
  20. CAD如何绘制带有弧形的箭头

热门文章

  1. 优雅地处理重复请求(并发请求)——附Java实现
  2. 面试题:Class.forName 和 ClassLoader 有什么区别?
  3. 高频面试题:Spring 如何解决循环依赖?
  4. MySQL环境配置和入门讲解!
  5. 算法岗面经整理!查漏补缺
  6. 【CV实践】图像检索从入门到进阶
  7. LightGBM模型_相关资料整理
  8. 医学顶刊BMJ打脸谷歌:AI取代医生检测乳腺癌还远着呢
  9. CVPR 2021 Oral | Transformer再发力!华南理工和微信提出UP-DETR
  10. 图神经网络越深,表现就一定越好吗?