Angular2入门教程之模块和组件详解


Posted in Javascript onMay 28, 2017

本文呢主要给大家介绍的关于Angular2模块和组件的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍:

一、初步了解模块和组件

之前给大家介绍了构建工程,这篇文章简单讲述一下Angular2中的模块和组件。

Angular2入门教程之模块和组件详解

app文件夹下有五个文件,其中,app.component.spec.ts应该是和模块测试有关的文件,目前不用管它。剩下的四个文件就是典型的模块+组件的文件组成模式。

Angular2应用由模块和组件构成,每个模块这样明明name.module.ts,组件则是name.component.ts。

这几个文件的关系是从属关系:

|--app.module.ts(模块)
 |--app.component.ts(组件)
  |--app.component.html(HTML模板)
  |--app.component.css(CSS样式表)

一个模块可以有多个组件,一个组件也可以有多个样式表,但只有一个HTML模板。

1.1组件的含义

Angular2中的组件,就是我们自定义的一段HTML代码,给他取个名字,就可以当作HTML的标签使用了。假如组件的名字是my-app,那么就可以这样使用:

<div>
 <my-app><my-app>//可以像原生标签一样添加属性,而且组件能接收的属性更丰富
   //标签里面也可以放内容
</div>

组件其实是一个类,它定义了一系列方法和属性,并且把HTML模板封装起来。它的意义是,你可以把它当做一个独立的隔离的盒子,并利用其中的方法和属性进行盒子内部的操作,以及和外界的父组件、兄弟组件交互。

1.2模块的含义

模块就是将一系列的组件还有指令、服务整合封装到一起,提供一个完整的功能。模块可以被外部模块引用。

二、模块详解和根模块

2.1 根模块

每个应用会有一个根模块,按照约定,它的类名叫做AppModule,被放在app.module.ts文件中。应用启动时,就会加载这个模块。

每个根模块会有一个根组件,默认就是app.component.ts,名字是app-root。

查看项目目录中的index.html,会发现有<app-root>Loading...</app-root>这样的代码,就是在加载这个根模块。

2.2 模块详解

下面是app.module.ts的代码。

import { BrowserModule } from '@angular/platform-browser';//每个在浏览器中运行
//的应用的根模块都需要引入BrowserModule
import { NgModule } from '@angular/core';//每个模块都需要引入的核心库中的NgModule
import { FormsModule } from '@angular/forms';//表单模块,在应用中使用表单时引入
import { HttpModule } from '@angular/http';//http模块,当需要进行http远程请求时引入

import { AppComponent } from './app.component';//自己创建的组件

@NgModule({
 declarations: [
 AppComponent
 ],
 imports: [
 BrowserModule,
 FormsModule,
 HttpModule
 ],
 providers: [],
 bootstrap: [AppComponent]
})
export class AppModule { }

Angular2用TypeScript组织代码的方式大致就像这个文件一样。

1、在顶部使用import语句,导入模块或者组件需要使用的外部模块。

在模块中需要使用自己创建的组件或者其他服务、指令,也需要import。

2、import语句之后,使用@NgModule()语句描述本模块的元数据。

  • declarations:声明属于本模块的组件,每个组件必须在且仅在一个模块中声明。
  • imports:引入买本模块中用到的模块,该模块是处于import语句引入的模块中。
  • providers:声明模块中使用的服务的提供者,暂时还没有用到。
  • bootstrap:根模块中的引导组件,应用启动过程中,会创建这个数组中的组件并插入到HTML中,一般只有一个引导组件。

3、最后,使用export语句,创建模块的类并暴露出去。

模块、组件只有暴露出去,其他的模块才能引用。

三、组件详解

import { Component } from '@angular/core'; //所有组件必须引入

@Component({
 selector: 'app-root',
 templateUrl: './app.component.html',
 styleUrls: ['./app.component.css']
})
export class AppComponent {
 title = 'app works! 你已经完成了第一步';
}

1、import语句导入需要的模块。

2、使用@Component()来描述本组件的元数据。

  • selector:创建的组件的名字,就像HTML标签的名字一样
  • templateUrl: HTML模板,使用相对路径,./表示这个组件文件所在的当前目录,
  • styleUrls:HTML模板使用的样式表,可以有多个。

3、最后,使用export创建组件的类并暴露出去。在类中,可以创建属性和方法。

四、应用启动过程

整个应用的启动流程:加载根模块,加载所需的其他模块,创建引导组件,显示组件内容。

注意:我觉得学习Angular2很好的方法之一就是去看官方教程,有中文版的,很方便。看完前面的开发指南部分就足以了解Angular2的大致原理了,当然官方教程有的地方概念可能很模糊,有地方不了解的同学,可以留言交流,谢谢大家对三水点靠木的支持。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助。

Javascript 相关文章推荐
JavaScript函数获取事件源的小例子
May 14 Javascript
javascript实现简单的分页特效
Aug 12 Javascript
浅析node连接数据库(express+mysql)
Nov 30 Javascript
jQuery特殊符号转义的实现
Nov 30 Javascript
巧用Javascript的逻辑运算符
Dec 02 Javascript
js中less常用的方法小结
Aug 09 Javascript
详解Vue快速零配置的打包工具——parcel
Jan 16 Javascript
jQuery实现使用sort方法对json数据排序的方法
Apr 17 jQuery
详解vue-router 初始化时做了什么
Jun 11 Javascript
webpack手动配置React开发环境的步骤
Jul 02 Javascript
javascript实现前端成语点击验证优化
Jun 24 Javascript
vue中实现点击变成全屏的多种方法
Sep 27 Javascript
关于Angular2 + node接口调试的解决方案
May 28 #Javascript
对象不支持indexOf属性或方法的解决方法(必看)
May 28 #Javascript
设置cookie指定时间失效(实例代码)
May 28 #Javascript
Mac系统下Webstorm快捷键整理大全
May 28 #Javascript
获取url中用&amp;隔开的参数实例(分享)
May 28 #Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
May 28 #Javascript
js每隔两秒输出数组中的一项(实例)
May 28 #Javascript
You might like
基于CakePHP实现的简单博客系统实例
2015/06/28 PHP
PHP培训要多少钱
2017/06/06 PHP
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
js防止表单重复提交的两种方法
2013/09/30 Javascript
JavaScript中检测变量是否存在遇到的一些问题
2013/11/11 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
node.js中的path.delimiter方法使用说明
2014/12/09 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
2015/06/19 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
jQuery EasyUI的TreeGrid查询功能实现方法
2017/08/08 jQuery
Vue写一个简单的倒计时按钮功能
2018/04/20 Javascript
JS中的算法与数据结构之二叉查找树(Binary Sort Tree)实例详解
2019/08/16 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
如何利用javascript接收json信息并进行处理
2020/08/06 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
[48:32]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs VG
2018/04/01 DOTA
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
解决python中使用plot画图,图不显示的问题
2018/07/04 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
python随机生成大小写字母数字混合密码(仅20行代码)
2020/02/01 Python
Python3中的tuple函数知识点讲解
2021/01/03 Python
html5通过canvas实现刮刮卡效果示例分享
2014/01/27 HTML / CSS
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
物流专业大学生的自我鉴定
2013/11/13 职场文书
优秀员工个人的自我评价
2013/11/29 职场文书
学校运动会开幕演讲稿
2014/01/04 职场文书
愚人节活动策划方案
2014/03/11 职场文书
家长对孩子的评语
2014/04/18 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
2015年招生工作总结
2015/05/04 职场文书
少年犯观后感
2015/06/11 职场文书