Angular2入门--架构总览


Posted in Javascript onMarch 29, 2017

大致介绍

在3月23日,Angular4正式发布(没有3)。似乎现在学Angular2又晚了,又晚一步-_-||。Angular2在Angular1的基础上有了较大的改变。之前向一个同学(之前学过Angular1)问一个Angular2的问题,他反问到这是Angular代码? 可见Angular1->Angular2的变化有多大。先来看看Angular2的架构

核心模块

一个完整的Angular应用主要由六个重要部分组成:组件、模板、指令、服务、依赖注入和路由

他们之间的关系:

Angular2入门--架构总览

从图中可以看出:

1、与用户交互的是模板视图,模板和组件类共同组成组件

2、路由是控制组件的创建和销毁,从而驱使界面切换

3、指令和模板相关联,扩展了模板的语法

4、服务是封装若干个功能逻辑的单元,通过依赖注入引入组件内部

组件

Angular框架是基于组件设计,组件负责控制屏幕上的一小块区域,例如网页的导航栏就是一个组件

一个组件的代码:

import { Component, Input } from '@angular/core';
import { Hero } from './hero';
@Component({
 selector: 'my-hero-detail',
 template: `
 <div *ngIf="hero">
  <h2>{{hero.name}} details!</h2>
  <div><label>id: </label>{{hero.id}}</div>
  <div>
  <label>name: </label>
  <input [(ngModel)]="hero.name" placeholder="name"/>
  </div>
 </div>
})
export class HeroDetailComponent {
 @Input()
 hero: Hero;
}

模板

我们通过组件的自带的模板来定义组件视图。模板以 HTML 形式存在,告诉 Angular 如何渲染组件。

例如上面组件中的@Component中就是模板

@Component({
 selector: 'my-hero-detail',
 template: `
 <div *ngIf="hero">
  <h2>{{hero.name}} details!</h2>
  <div><label>id: </label>{{hero.id}}</div>
  <div>
  <label>name: </label>
  <input [(ngModel)]="hero.name" placeholder="name"/>
  </div>
 </div>
})

指令

指令和模板的关系密切,指令可以与DOM进行灵活交互,可以改变样式也可以修改DOM。一般的指令都作用在已有的DOM元素上

1、修改DOM

<button *ngIf="canEdit">编辑</button>

当canEdit为true时,button会显示,否则,button隐藏

2、改变元素样式

<button [ngStyle]="setStyles()">编辑</button>

setStyles()是一个函数,可以通过这个函数修改元素的样式

服务

服务是封装单一功能的单元,常被引用于组件内部,作为组件的功能扩展。它可以是一个简单的字符串或是JSON数据,也可以是一个函数甚至是一个类

组件本身不从服务器获得数据、不进行验证输入,也不直接往控制台写日志。 它们把这些任务委托给服务。

一个简单的服务(包含一个类):

export class Hero {
 id: number;
 name: string;
}

依赖注入

通过依赖注入机制,服务等模块可以被引入到任何一个组件中,而开发者无需关心这些模块是如何被初始化的。因为Angular已经帮你处理好了,包括本模块本身依赖的其他模块也会被初始化

路由

路由它把浏览器中的URL看做一个操作指南, 据此导航到一个由客户端生成的视图,并可以把参数传给支撑视图的相应组件,帮它决定具体该展现哪些内容。 我们可以为页面中的链接绑定一个路由,这样,当用户点击链接时,就会导航到应用中相应的视图。 当用户点击按钮、从下拉框中选取,或响应来自任何地方的事件时,我们也可以在代码控制下进行导航。 路由器还在浏览器的历史日志中记录下这些活动,这样浏览器的前进和后退按钮也能照常工作。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
jquery判断单个复选框是否被选中的代码
Sep 03 Javascript
异步加载script的代码
Jan 12 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
Apr 27 Javascript
通过js动态操作table(新增,删除相关列信息)
May 23 Javascript
jquery ajax属性async(同步异步)示例
Nov 05 Javascript
jquery中animate的stop()方法作用实例分析
Jan 30 Javascript
对Js OOP编程 创建对象的一些全面理解
Jul 26 Javascript
浅谈jquery设置和获得checkbox选中的问题
Aug 19 Javascript
JS获取数组中出现次数最多及第二多元素的方法
Oct 27 Javascript
node脚手架搭建服务器实现token验证的方法
Jan 20 Javascript
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
May 30 Javascript
JS class语法糖的深入剖析
Jul 07 Javascript
整理关于Bootstrap表单的慕课笔记
Mar 29 #Javascript
AngularJS中$http的交互问题
Mar 29 #Javascript
Angular2开发——组件规划篇
Mar 28 #Javascript
jquery实现静态搜索功能(可输入搜索文字)
Mar 28 #jQuery
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
Mar 28 #jQuery
关于Node.js中Buffer的一些你可能不知道的用法
Mar 28 #Javascript
使用JavaScriptCore实现OC和JS交互详解
Mar 28 #Javascript
You might like
php实现贪吃蛇小游戏
2016/07/26 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
php转换上传word文件为PDF的方法【基于COM组件】
2019/06/10 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
addRule在firefox下的兼容写法
2006/11/30 Javascript
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
2007/05/07 Javascript
Extjs4 GridPanel 的几种样式使用介绍
2013/04/18 Javascript
JS 去前后空格大全(IE9亲测)
2013/07/15 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
jQuery中Ajax的load方法详解
2015/01/14 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
详解JS面向对象编程
2016/01/24 Javascript
基于JavaScript实现类似于百度学术高级检索功能
2016/03/02 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
2017/06/04 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
用vue-cli开发vue时的代理设置方法
2018/09/20 Javascript
python爬虫入门教程--优雅的HTTP库requests(二)
2017/05/25 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
python根据unicode判断语言类型实例代码
2018/01/17 Python
unittest+coverage单元测试代码覆盖操作实例详解
2018/04/04 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
Python sorted对list和dict排序
2020/06/09 Python
网页布局中CSS样式无效的十个重要原因详解
2017/08/10 HTML / CSS
CSS3中HSL和HSLA的简单使用示例
2015/07/14 HTML / CSS
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
英国现代家具和装饰网站:PN Home
2018/08/16 全球购物
.net工程师笔试题
2012/06/09 面试题
求职信模版
2013/11/30 职场文书
食品流通安全承诺书
2014/05/22 职场文书
活动总结新闻稿
2014/08/30 职场文书
2016天猫双十一广告语
2016/01/28 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书