Angular2学习笔记(1)
1. 写在前面
之前基于Electron写过一个Markdown编辑器。就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成;但就代码而言,之前主要使用的是jQuery,由于本人非专业前段,代码写的自己都感觉是“一塌糊涂”,十分混乱。现在看到Angular2十分火爆,跑了跑它的The Tour of Heroes的例子,感觉非常不错,代码组织的井井有条,于是乎决定学习一下Angular2,然后用它将之前的NiceMark重写一下。
2. 整体感知
它组织代码的方式,引用其官方文档里的话就是:
You write Angular applications by composing HTML templates with Angularized markup, writing component classes to manage those templates, adding application logic in services, and boxing components and services in modules. ——GUIDE- 4. Architecture
大意就是说,你能这么去写一个Angular应用,用Angular扩展语法写HTML模板,写组件类去管理这些模板,用服务添加应用逻辑,用模块打包组件和服务。
用官方文档里的图说明就是:
简单解释一下该图:
- 图的中间部分,在component的上面画了Metadata和Template,是说一个Component(组件)主要由元数据(Metadata)和Template(模板)构成。Property Binding(属性绑定)箭头表示可以在component里定义property(属性),这些参数可以作为模板渲染的数据,而binding(绑定)的意思是说,一旦模板里的数据(比如一个输入框里数据)被修改了,它对应的property会自动地修改,或者反过来property被修改了,模板的相应内容也会跟着发生变化。Event Binding也类似,只不过针对的是Event(事件):你可以在模板中写代码去监听某一事件(当然Angular有自己的“监听语法”),并指定该事件被触发时调用component类中哪个方法(函数)。想象一下,我们可以在该方法中去修改某些property,根据前面Property Binding描述的,模板也会跟着发生变化。是的,在Angular中,你再也不用(也不要)直接的去修改DOM,而是修改property,它就是一个变量,修改起来多么的直观方便,你再也不必写像jQuery那样(比如,
$xxx.text('姓名: '+ user.name +',年龄:'+ user.age)
)又臭又长的“恶心”代码了,尽管这可以用一些手段来优化,但总是不那么直观,简便。 - 图中两个虚线箭头是解释说明的意思,左边箭头解释的是,我们在编写一个component时,会依赖一些服务,而这些服务类不用自己去
new
,可以让Angular注入进来。比如我们要编写一个用来展示用户信息列表的组件,为此我们需要这些用户的信息,而这些用户信息需要通过发送HTTP请求去服务器中获取,这时我们可以写一个UserService
类,写一个getUsers
方法专门负责获取这些用户信息,component只需要调用UserService
的getUsers
方法,便可以拿到这些信息,而获得UserService
实例的方式最好不要自己去new
,而是交给Angular去管理,让它帮我们注入进来。这点跟Spring依赖注入的意思是一样的。 - 右边的虚线箭头说的是,我们在编写模板时会用到一些Directive(指令),这些指令被用来指导Dom的渲染。
- 最后还剩下图的左上角部分,是一个一个的Module(模块)。它们像集装箱一样将Component,Service等较小的构成元素封装起来堆叠在一起,构成了一个完整的应用。
如果你还没有接触过Angular或者类似的框架,可能你还是不太明白Angular是怎么玩的 。不过没关系,以上内容只是让你对Angular有个大致的印象。实际上,它玩来玩去就是围绕以上提到的几个概念展开的,它们分别是:
- module (模块)
- component (组件)
- template (模板)
- metadata (元数据)
- data binding (数据绑定)
- directive (指令)
- service (服务)
- dependency injection (依赖注入)
只要明白了以上几个概念的意思,掌握了其用法,那就上道了。下文会结合几个小例子来解释这几个概念的含义的用法。
2. Hello World
老规矩,从Hello World开始。
有一点忘记说了,下面学习的是Angular的TypeScript版本。TypeScript是JavaScript的超集,它在JavaScript的语法上做了扩展,如果你对TypeScript还不了解,建议先简单看看TypeScript的语法,中文站和英文站都有。Angular的文档也是既有中文站,也有英文站,本文就是学习自Angular中文站,个人感觉翻译的非常好,并且点击每段文字都会出现英文原文,这点非常不错!
Angular2学习笔记(1)的更多相关文章
- angular2 学习笔记 ( rxjs 流 )
RxJS 博大精深,看了好几篇文章都没有明白. 范围牵扯到了函数响应式开发去了... 我对函数式一知半解, 响应式更是第一次听到... 唉...不过日子还是得过...混着过先呗 我目前所理解的很浅, ...
- angular2 学习笔记 ( ngModule 模块 )
2016-08-25, 当前版本是 RC 5. 参考 : https://angular.cn/docs/ts/latest/guide/ngmodule.html 提醒 : 这系列笔记的 " ...
- Angular2学习笔记(1)——Hello World
1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之前主要使用的是jQuery,由于 ...
- Angular2学习笔记——路由器模型(Router)
Angular2以组件化的视角来看待web应用,使用Angular2开发的web应用,就是一棵组件树.组件大致分为两类:一类是如list.table这种通放之四海而皆准的通用组件,一类是专为业务开发的 ...
- Angular2学习笔记——Observable
Reactive Extensions for Javascript 诞生于几年前,随着angular2正式版的发布,它将会被更多开发者所认知.RxJs提供的核心是Observable对象,它是一个使 ...
- Angular2学习笔记——在子组件中拿到路由参数
工作中碰到的问题,特此记录一下. Angular2中允许我们以`path\:id\childPath`的形式来定义路由,比如: export const appRoutes: RouterConfig ...
- Angular2学习笔记——NgModule
在Angular2中一个Module指的是使用@NgModule修饰的class.@NgModule利用一个元数据对象来告诉Angular如何去编译和运行代码.一个模块内部可以包含组件.指令.管道,并 ...
- angular2 学习笔记 ( Form 表单 )
refer : https://angular.cn/docs/ts/latest/guide/forms.html https://angular.cn/docs/ts/latest/cookboo ...
- angular2 学习笔记 ( Http 请求)
refer : https://angular.cn/docs/ts/latest/guide/server-communication.html https://xgrommx.github.io/ ...
随机推荐
- LINUX篇,设置MYSQL远程访问实用版
每次设置root和远程访问都容易出现问题, 总结了个通用方法, 关键在于实用 step1: # mysql -u root mysql mysql> Grant all privileges o ...
- jQuery实践-网页版2048小游戏
▓▓▓▓▓▓ 大致介绍 看了一个实现网页版2048小游戏的视频,觉得能做出自己以前喜欢玩的小游戏很有意思便自己动手试了试,真正的验证了这句话-不要以为你以为的就是你以为的,看视频时觉得看懂了,会写了, ...
- MVVM模式解析和在WPF中的实现(三)命令绑定
MVVM模式解析和在WPF中的实现(三) 命令绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
- .Net中的AOP系列之构建一个汽车租赁应用
返回<.Net中的AOP>系列学习总目录 本篇目录 开始一个新项目 没有AOP的生活 变更的代价 使用AOP重构 本系列的源码本人已托管于Coding上:点击查看. 本系列的实验环境:VS ...
- HTML 事件(二) 事件的注册与注销
本篇主要介绍HTML元素事件的注册.注销的方式. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流.事件委托 4. ...
- ASP.NET Core中如影随形的”依赖注入”[上]: 从两个不同的ServiceProvider说起
我们一致在说 ASP.NET Core广泛地使用到了依赖注入,通过前面两个系列的介绍,相信读者朋友已经体会到了这一点.由于前面两章已经涵盖了依赖注入在管道构建过程中以及管道在处理请求过程的应用,但是内 ...
- .net Elasticsearch 学习入门笔记
一. es安装相关1.elasticsearch安装 运行http://localhost:9200/2.head插件3.bigdesk插件安装(安装细节百度:windows elasticsear ...
- Java 经典入门(一)
一.什么是 Java 技术?为何需要 Java? Java 是由 Sun Microsystems 在 1995 年首先发布的编程语言和计算平台.有许多应用程序和 Web 站点只有在安装 Java 后 ...
- 【算法】(查找你附近的人) GeoHash核心原理解析及代码实现
本文地址 原文地址 分享提纲: 0. 引子 1. 感性认识GeoHash 2. GeoHash算法的步骤 3. GeoHash Base32编码长度与精度 4. GeoHash算法 5. 使用注意点( ...
- 2016/12/28_javascript
今天学习的主要内容: javascript: 1.if语句,switch语句,while循环以及for循环: 1)if语句 if(boolean){}; if(boolean){} else if(b ...