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 相关文章推荐
简单的js分页脚本
May 21 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
Oct 29 Javascript
Jquery选中或取消radio示例
Sep 29 Javascript
jQuery自定义事件的简单实现代码
Jan 27 Javascript
PHP 数组current和next用法分享
Mar 05 Javascript
jQuery实用技巧必备(下)
Nov 03 Javascript
分享jQuery插件的学习笔记
Jan 14 Javascript
微信小程序  http请求封装详解及实例代码
Feb 15 Javascript
作为老司机使用 React 总结的 11 个经验教训
Apr 08 Javascript
JS跳转手机站url的若干注意事项
Oct 18 Javascript
JS实现验证码倒计时的注册页面
Jan 02 Javascript
jquery检测上传文件大小示例
Apr 26 jQuery
整理关于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学习 计数器实例代码
2008/06/15 PHP
php 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
PHP无刷新上传文件实现代码
2011/09/19 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
JavaScript开发规范要求(规范化代码)
2010/08/16 Javascript
jquery对表单操作2
2011/04/06 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
JS快速实现移动端拼图游戏
2016/09/05 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
2017/07/22 jQuery
vue页面离开后执行函数的实例
2018/03/13 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
在vue项目中引入高德地图及其UI组件的方法
2018/09/04 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
JavaScript前后端JSON使用方法教程
2020/11/23 Javascript
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
[01:08:44]NB vs VP 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[33:33]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第二场 11.27
2020/11/30 DOTA
Python工程师面试题 与Python基础语法相关
2016/01/14 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
Python3实现购物车功能
2018/04/18 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
2018/04/22 Python
python中scikit-learn机器代码实例
2018/08/05 Python
对python中if语句的真假判断实例详解
2019/02/18 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
校园奶茶店创业计划书
2014/01/23 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python
使用CSS实现一个搜索引擎的原理解析
2021/09/25 HTML / CSS
Mybatis是这样防止sql注入的
2021/12/06 Java/Android