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 相关文章推荐
javascript 基础篇3 类,回调函数,内置对象,事件处理
Mar 14 Javascript
jquery下div 的resize事件示例代码
Mar 09 Javascript
js中各种类型的变量在if条件中是true还是false
Jul 16 Javascript
JavaScript中的Function函数
Aug 27 Javascript
AngularJS双向绑定和依赖反转实例详解
Apr 15 Javascript
JS简单判断滚动条的滚动方向实现方法
Apr 28 Javascript
ES6中的Promise代码详解
Oct 09 Javascript
JavaScript门道之标准库
May 26 Javascript
微信小程序控制台提示warning:Now you can provide attr &quot;wx:key&quot; for a &quot;wx:for&quot; to improve performance解决方法
Feb 21 Javascript
JavaScript实现拖拽盒子效果
Feb 06 Javascript
js事件机制----捕获与冒泡机制实例分析
May 22 Javascript
微信小程序文章详情功能完整实例
Jun 03 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表单验证功能
2019/02/15 PHP
PHP获取真实IP及IP模拟方法解析
2020/11/24 PHP
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
2012/12/21 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
2014/05/20 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
javascript去除空格方法小结
2015/05/21 Javascript
Angularjs过滤器使用详解
2016/05/25 Javascript
Angular.js中控制器之间的传值详解
2017/04/24 Javascript
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
2018/08/02 Javascript
axios 实现post请求时把对象obj数据转为formdata
2019/10/31 Javascript
webpack 动态批量加载文件的实现方法
2020/03/19 Javascript
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
Python多进程机制实例详解
2015/07/02 Python
Python探索之ModelForm代码详解
2017/10/26 Python
Tensorflow中tf.ConfigProto()的用法详解
2020/02/06 Python
哪种Python框架适合你?简单介绍几种主流Python框架
2020/08/04 Python
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
岗位廉政承诺书
2014/03/27 职场文书
负责人任命书范本
2014/06/04 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
2014教师党员自我评议(5篇)
2014/09/20 职场文书
群众路线个人整改方案
2014/10/25 职场文书
孔庙导游词
2015/02/04 职场文书
唐山大地震的观后感
2015/06/05 职场文书
Python中os模块的简单使用及重命名操作
2021/04/17 Python
go select编译期的优化处理逻辑使用场景分析
2021/06/28 Golang
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js
分析MySQL优化 index merge 后引起的死锁
2022/04/19 MySQL
第四次工业革命,打工人与机器人的竞争
2022/04/21 数码科技