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 相关文章推荐
点击显示指定元素隐藏其他同辈元素的方法
Feb 19 Javascript
js截取中英文字符串、标点符号无乱码示例解读
Apr 17 Javascript
JavaScript function 的 length 属性使用介绍
Sep 15 Javascript
jQuery获取字符串中出现最多的数
Feb 22 Javascript
基于jQuery实现简单人工智能聊天室
Feb 10 Javascript
Vue filters过滤器的使用方法
Jul 14 Javascript
原生JS实现ajax与ajax的跨域请求实例
Dec 01 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
Aug 31 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
Mar 29 Javascript
浅谈layui 数据表格前后台传值的问题
Sep 12 Javascript
实用的 vue tags 创建缓存导航的过程实现
Dec 03 Vue.js
使用webpack和rollup打包组件库的方法
Feb 25 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 eval函数用法总结
2012/10/31 PHP
PHP的变量类型和作用域详解
2014/03/12 PHP
PHP中如何使用session实现保存用户登录信息
2015/10/20 PHP
PHP实现文件下载【实例分享】
2017/04/28 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
php二维数组按某个键值排序的实例讲解
2019/02/15 PHP
JS截取字符串常用方法详细整理
2013/10/28 Javascript
javascript中数组中求最大值示例代码
2013/12/18 Javascript
jQuery打印指定区域Html页面并自动分页
2014/07/04 Javascript
jQuery实现数秒后自动提交form的方法
2015/03/05 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
浅析JavaScript中var that=this
2017/02/17 Javascript
Vuex简单入门
2017/04/19 Javascript
layui select动态添加option的实例
2018/03/07 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
[49:12]完美世界DOTA2联赛PWL S2 Magma vs GXR 第二场 11.29
2020/12/02 DOTA
Python科学计算包numpy用法实例详解
2018/02/08 Python
Python常见内置高效率函数用法示例
2018/07/31 Python
详解python多线程之间的同步(一)
2019/04/03 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
Python中的xlrd模块使用原理解析
2020/05/21 Python
经验丰富程序员才知道的8种高级Python技巧
2020/07/27 Python
详解python3类型注释annotations实用案例
2021/01/20 Python
Django如何重置migration的几种情景
2021/02/24 Python
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
英国现代、当代和设计师家具店:Furntastic
2020/07/18 全球购物
导购员的岗位职责
2014/02/08 职场文书
致跳高运动员加油稿
2014/02/12 职场文书
企业环保标语
2014/06/10 职场文书
语文教研活动总结
2014/07/02 职场文书
2016年会领导致辞稿
2015/07/29 职场文书
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python
vue判断按钮是否可以点击
2022/04/09 Vue.js